{"id":252,"date":"2022-06-10T21:20:00","date_gmt":"2022-06-11T02:20:00","guid":{"rendered":"http:\/\/sycured.127.0.0.1.sslip.io\/?p=252"},"modified":"2024-01-14T11:58:35","modified_gmt":"2024-01-14T16:58:35","slug":"azure-app-services-web-apps-config-versioning","status":"publish","type":"post","link":"http:\/\/10.42.0.68:8080\/blog\/azure-app-services-web-apps-config-versioning","title":{"rendered":"Azure App Services Web Apps Configuration – Versioning"},"content":{"rendered":"\n
Working with Azure App Services Web Apps, I learned how it is to not have integrated versioning of the configuration.<\/p>\n\n\n\n
This is my solution.<\/p>\n\n\n\n\n\n\n\n
It’s always better to have a distributed system that requests\/processes everything in parallel.<\/p>\n\n\n\n
Nomad<\/a> has the parameterized job type, it’s one of my actual tools for this versioning.<\/p>\n\n\n\n I can run any command specifying parameters like the ones that I use:<\/p>\n\n\n\n Using this type of job, I avoid redundancy\u2026 I always reuse the same job specification and I just need to run Another good solution is using a scheduler like Apache Airflow<\/a> and a database with columnar compression (like PostgreSQL<\/a> with columnar compression from Citus<\/a>).<\/p>\n\n\n\n A simple bash script, implementing a basic usage (= non-parallelized) with git for the versioning.<\/p>\n\n\n\n Working with Azure App Services Web Apps, I learned how it is to not have integrated versioning of the configuration. This is my solution.<\/p>\n","protected":false},"author":1,"featured_media":67,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"saved_in_kubio":false,"footnotes":""},"categories":[13],"tags":[19],"_links":{"self":[{"href":"http:\/\/10.42.0.68:8080\/wp-json\/wp\/v2\/posts\/252"}],"collection":[{"href":"http:\/\/10.42.0.68:8080\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/10.42.0.68:8080\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/10.42.0.68:8080\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/10.42.0.68:8080\/wp-json\/wp\/v2\/comments?post=252"}],"version-history":[{"count":1,"href":"http:\/\/10.42.0.68:8080\/wp-json\/wp\/v2\/posts\/252\/revisions"}],"predecessor-version":[{"id":253,"href":"http:\/\/10.42.0.68:8080\/wp-json\/wp\/v2\/posts\/252\/revisions\/253"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/10.42.0.68:8080\/wp-json\/wp\/v2\/media\/67"}],"wp:attachment":[{"href":"http:\/\/10.42.0.68:8080\/wp-json\/wp\/v2\/media?parent=252"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/10.42.0.68:8080\/wp-json\/wp\/v2\/categories?post=252"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/10.42.0.68:8080\/wp-json\/wp\/v2\/tags?post=252"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}\n
curl<\/code> or
Nomad cli<\/code> in parallel to trigger the job for different Web Apps.<\/p>\n\n\n\n
The neutral solution<\/h2>\n\n\n\n
#!\/bin\/bash\n\nWEBAPP_CONF() {\n local region_prefix=$1\n local environment_name=\"$2\"\n local component_name=\"$3\"\n local prefix=\"$4\"\n local resource_group_name=\"${region_prefix}-rg-syy-${environment_name}-app-wa\"\n local webapp_name=\"${region_prefix}-wac-syy-${environment_name}-app-${component_name}\"\n echo \"Dumping $region_prefix $environment_name $component_name config\"\n az webapp config show --name \"$webapp_name\" --resource-group \"$resource_group_name\" >\"$prefix\"\/\"${environment_name}_${component_name}_webapp_config\".json\n az webapp config appsettings list --name \"$webapp_name\" --resource-group \"$resource_group_name\" >\"$prefix\"\/\"${environment_name}_${component_name}_webapp_config_appsettings\".json\n}\n\nDEV() {\n WEBAPP_CONF eaus dev sc1 DEV\n WEBAPP_CONF eaus dev sc2 DEV\n WEBAPP_CONF eaus dev sc3 DEV\n}\n\nQA() {\n WEBAPP_CONF eaus qa sc1 QA\n WEBAPP_CONF eaus qa sc2 QA\n WEBAPP_CONF eaus qa sc3 QA\n}\n\nPREPROD() {\n WEBAPP_CONF eaus preprod sc1 PREPROD\n WEBAPP_CONF eaus preprod sc2 PREPROD\n WEBAPP_CONF eaus preprod sc3 PREPROD\n}\n\nPROD() {\n WEBAPP_CONF eaus prod sc1 PROD\n WEBAPP_CONF eaus prod sc2 PROD\n WEBAPP_CONF eaus prod sc3 PROD\n}\n\nGIT_COMMIT() {\n local cmd_arg=$1\n git add .\n git commit -am \"Auto-commit ($cmd_arg)\"\n git push\n}\n\nusage(){\n echo \"Usage: $0 <environment>\"\n echo \" environment: all, dev, qa, preprod, prod\"\n exit 1\n}\n\nif [ \"$#\" -ne 1 ]; then\n usage\nfi\n\ncase \"$1\" in\n all)\n DEV\n QA\n PREPROD\n PROD\n GIT_COMMIT all\n ;;\n dev)\n DEV\n GIT_COMMIT dev\n ;;\n qa)\n QA\n GIT_COMMIT qa\n ;;\n preprod)\n PREPROD\n GIT_COMMIT preprod\n ;;\n prod)\n PROD\n GIT_COMMIT prod\n ;;\n *)\n usage\n ;;\nesac<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"