{"id":17449558,"url":"https://github.com/jplane/atlantis-on-aci","last_synced_at":"2025-04-19T14:55:26.895Z","repository":{"id":41984982,"uuid":"181365947","full_name":"jplane/atlantis-on-aci","owner":"jplane","description":"How to run Atlantis (https://www.runatlantis.io) on Azure Container Instances","archived":false,"fork":false,"pushed_at":"2024-06-24T18:52:55.000Z","size":14,"stargazers_count":11,"open_issues_count":3,"forks_count":9,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-23T23:41:15.607Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jplane.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-04-14T20:35:54.000Z","updated_at":"2024-09-16T23:31:48.000Z","dependencies_parsed_at":"2024-10-20T02:56:03.258Z","dependency_job_id":null,"html_url":"https://github.com/jplane/atlantis-on-aci","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jplane%2Fatlantis-on-aci","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jplane%2Fatlantis-on-aci/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jplane%2Fatlantis-on-aci/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jplane%2Fatlantis-on-aci/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jplane","download_url":"https://codeload.github.com/jplane/atlantis-on-aci/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241460053,"owners_count":19966511,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-17T21:42:06.529Z","updated_at":"2025-03-02T04:31:00.481Z","avatar_url":"https://github.com/jplane.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Running Atlantis (https://www.runatlantis.io) on Azure Container Instances\n\nRequirements:\n\n1. A Bash shell (on Windows you'll probably want [WSL](https://docs.microsoft.com/en-us/windows/wsl/about))\n\n1. [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest)\n\n1. [openssl](https://www.openssl.org/)\n\n\nRun the following commands from the same location as the master [script](atlantis-on-aci.sh).\n\n```bash\n#! /bin/bash\n\nGITHUB_USER=YOUR-USER\nGITHUB_TOKEN=YOUR-TOKEN\nGITHUB_WEBHOOK_SECRET=YOUR-SECRET\nREPO_WHITELIST=github.com/YOUR-ORG/YOUR-REPO\n\nATLANTIS_LOCATION=YOUR-AZURE-LOCATION\nSUFFIX=123\n\n. ./atlantis-on-aci.sh\n```\n\nChange the argument values as needed, and note that you can remove the 'SUFFIX' argument entirely and have a unique suffix generated on your behalf, if you wish. See the master [script](atlantis-on-aci.sh) for additional arguments you can optionally set if you don't want the defaults.\n\nNotes:\n\n1. [Authenticate](https://docs.microsoft.com/en-us/cli/azure/authenticate-azure-cli?view=azure-cli-latest) from the Azure CLI to a valid [Azure Active Directory tenant](https://docs.microsoft.com/en-us/azure/active-directory/develop/)\n\n1. [Set](https://docs.microsoft.com/en-us/cli/azure/manage-azure-subscriptions-azure-cli?view=azure-cli-latest) your target Azure subscription\n\n   ```bash\n   az account set --subscription \"my sub\"\n   ```\n\n1. The script creates the following resources on your behalf:\n\n    * A new resource group\n    * A new storage account within the RG\n    * A new blob container within the storage account (used for durable storage of [Terraform execution state](https://www.terraform.io/docs/backends/types/azurerm.html))\n    * A new file share within the storage account (used to hold SSL self-signed certs for Atlantis HTTPS support)\n    * A new [container group](https://docs.microsoft.com/en-us/azure/container-instances/container-instances-container-groups) within the RG configured to execute the [Atlantis Docker image](https://hub.docker.com/r/runatlantis/atlantis/)\n    * An [MSI identity](https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/) configured with [Contributor role access](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#contributor) to your Azure subscription, under which the ACI group executes. This identity has sufficient permission to create new resources on your behalf, within the Atlantis workflow\n    \n1. The script generates a self-signed certificate using [openssl](https://www.openssl.org/) and uploads it to an [Azure File share](https://docs.microsoft.com/en-us/azure/storage/files/storage-files-introduction). The certificate is then configured within Atlantis to provide HTTPS support. **You should switch to a real (non-self-signed) cert in any production scenario.**\n\n1. The script configures [MSI support](https://www.terraform.io/docs/providers/azurerm/auth/managed_service_identity.html) for Atlantis/Terraform execution as well as configuration of an ambient [ARM_SUBSCRIPTION_ID](https://www.terraform.io/docs/providers/azurerm/index.html#subscription_id) so that you don't need to provide one in each Terraform script you apply using the Atlantis workflow\n\n1. For convenience, the script also configures [SKIP_CREDENTIALS_VALIDATION](https://www.terraform.io/docs/providers/azurerm/index.html#skip_credentials_validation) = false and [SKIP_PROVIDER_REGISTRATION](https://www.terraform.io/docs/providers/azurerm/index.html#skip_provider_registration) = false, but you can change these by setting environment variables prior to script execution\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjplane%2Fatlantis-on-aci","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjplane%2Fatlantis-on-aci","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjplane%2Fatlantis-on-aci/lists"}