Conversation
There was a problem hiding this comment.
Pull request overview
This PR migrates the aws/arcgis-server-linux template from an Ansible-based implementation to a Chef-based one, while preserving the prior Ansible implementation under a new aws/arcgis-server-linux-ansible template (marked experimental).
Changes:
- Renames/migrates templates: Chef becomes the default
arcgis-server-linux; Ansible template is moved toarcgis-server-linux-ansible. - Reworks image + application automation for
arcgis-server-linuxto run Chef via SSM, and updates manifests/vars accordingly (including Web Adaptor patch support and Ubuntu support in image builds). - Replaces Terraform-based backup/restore modules (Chef template) with SSM-run shell scripts (
exportSite.sh/importSite.sh) and updates workflows/configs to match.
Reviewed changes
Copilot reviewed 67 out of 76 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| config/aws/arcgis-server-linux/restore.vars.json | Updates restore vars (S3 prefix). |
| config/aws/arcgis-server-linux/infrastructure.tfvars.json | Adjusts infra defaults (fileserver/portal IDs, listener priority). |
| config/aws/arcgis-server-linux/image.vars.json | Adds web adaptor patches var; removes use_webadaptor. |
| config/aws/arcgis-server-linux/backup.vars.json | Updates backup vars (S3 prefix). |
| config/aws/arcgis-server-linux/application.tfvars.json | Adds web adaptor patches var; removes use_webadaptor. |
| config/aws/arcgis-server-linux-ansible/restore.tfvars.json | Adds Ansible restore tfvars config. |
| config/aws/arcgis-server-linux-ansible/recover.vars.json | Adds Ansible recover vars config. |
| config/aws/arcgis-server-linux-ansible/infrastructure.tfvars.json | Adds Ansible infra tfvars config. |
| config/aws/arcgis-server-linux-ansible/image.vars.json | Adds Ansible image vars config. |
| config/aws/arcgis-server-linux-ansible/backup.tfvars.json | Adds Ansible backup tfvars config. |
| config/aws/arcgis-server-linux-ansible/application.tfvars.json | Adds Ansible application tfvars config. |
| aws/README.md | Lists new arcgis-server-linux-ansible template + wording updates. |
| aws/arcgis-server-linux/workflows/server-linux-aws-restore.yaml | Switches restore workflow from Terraform/Ansible to SSM shell script. |
| aws/arcgis-server-linux/workflows/server-linux-aws-recover.yaml | Removes Ansible collection install step. |
| aws/arcgis-server-linux/workflows/server-linux-aws-infrastructure.yaml | Removes Ansible install steps. |
| aws/arcgis-server-linux/workflows/server-linux-aws-image.yaml | Removes Ansible install steps; updates copyright. |
| aws/arcgis-server-linux/workflows/server-linux-aws-backup.yaml | Switches backup workflow from Terraform/Ansible to SSM shell script. |
| aws/arcgis-server-linux/workflows/server-linux-aws-application.yaml | Removes Ansible install steps. |
| aws/arcgis-server-linux/restore/README.md | Converts restore docs from Terraform module to script usage. |
| aws/arcgis-server-linux/restore/importSite.sh | Adds SSM-run restore script calling ArcGIS importSite. |
| aws/arcgis-server-linux/README.md | Updates template docs (platforms, prerequisites, workflow instructions). |
| aws/arcgis-server-linux/manifests/arcgis-server-s3files-12.0.json | Moves to templatefile placeholders; adds WA + tomcat/jdk metadata/files. |
| aws/arcgis-server-linux/manifests/arcgis-server-s3files-11.5.json | Same as above for 11.5. |
| aws/arcgis-server-linux/manifests/arcgis-server-s3files-11.4.json | Same as above for 11.4. |
| aws/arcgis-server-linux/infrastructure/variables.tf | Adds listener_rule_priority; removes use_webadaptor. |
| aws/arcgis-server-linux/infrastructure/README.md | Updates docs for EFS mount module + listener priority. |
| aws/arcgis-server-linux/infrastructure/main.tf | Uses fixed instance port 443; adds listener priority var; swaps to efs_mount module. |
| aws/arcgis-server-linux/image/variables.pkr.hcl | Adds WA patch list; expands OS options; removes use_webadaptor. |
| aws/arcgis-server-linux/image/README.md | Updates image build steps + Chef SSM parameter requirements. |
| aws/arcgis-server-linux/image/main.pkr.hcl | Replaces Ansible provisioning with Chef bootstrap/run + manifest templating. |
| aws/arcgis-server-linux/backup/README.md | Converts backup docs from Terraform module to script usage. |
| aws/arcgis-server-linux/backup/exportSite.sh | Adds SSM-run backup script calling ArcGIS exportSite. |
| aws/arcgis-server-linux/application/variables.tf | Adds WA patch list; removes use_webadaptor. |
| aws/arcgis-server-linux/application/README.md | Updates app module docs for Chef workflow and WA always present. |
| aws/arcgis-server-linux/application/outputs.tf | Updates copyright header. |
| aws/arcgis-server-linux/application/main.tf | Replaces Ansible playbooks with Chef bootstrap + run_chef modules; adds S3 object uploads for auth/certs. |
| aws/arcgis-server-linux-ansible/workflows/server-linux-ansible-aws-test.yaml | Adds Ansible template test workflow (containerized CLI). |
| aws/arcgis-server-linux-ansible/workflows/server-linux-ansible-aws-restore.yaml | Adds Ansible template restore workflow (Terraform + Ansible). |
| aws/arcgis-server-linux-ansible/workflows/server-linux-ansible-aws-recover.yaml | Adds Ansible template recover workflow. |
| aws/arcgis-server-linux-ansible/workflows/server-linux-ansible-aws-infrastructure.yaml | Adds Ansible template infra workflow. |
| aws/arcgis-server-linux-ansible/workflows/server-linux-ansible-aws-image.yaml | Adds Ansible template image workflow. |
| aws/arcgis-server-linux-ansible/workflows/server-linux-ansible-aws-destroy.yaml | Adds Ansible template destroy workflow. |
| aws/arcgis-server-linux-ansible/workflows/server-linux-ansible-aws-backup.yaml | Adds Ansible template backup workflow. |
| aws/arcgis-server-linux-ansible/workflows/server-linux-ansible-aws-application.yaml | Adds Ansible template application workflow. |
| aws/arcgis-server-linux-ansible/restore/variables.tf | Sets default deployment_id for renamed Ansible template. |
| aws/arcgis-server-linux-ansible/restore/README.md | Adds restore module docs (Terraform/Ansible). |
| aws/arcgis-server-linux-ansible/restore/main.tf | Adds restore Terraform module implementation (Ansible playbook runner). |
| aws/arcgis-server-linux-ansible/README.md | Adds full README for the renamed Ansible template. |
| aws/arcgis-server-linux-ansible/manifests/arcgis-webadaptor-s3files-12.0.json | Adds WA manifest for Ansible template. |
| aws/arcgis-server-linux-ansible/manifests/arcgis-webadaptor-s3files-11.5.json | Adds WA manifest for Ansible template. |
| aws/arcgis-server-linux-ansible/manifests/arcgis-webadaptor-s3files-11.4.json | Adds WA manifest for Ansible template. |
| aws/arcgis-server-linux-ansible/manifests/arcgis-server-s3files-12.0.json | Adds server manifest for Ansible template. |
| aws/arcgis-server-linux-ansible/manifests/arcgis-server-s3files-11.5.json | Adds server manifest for Ansible template. |
| aws/arcgis-server-linux-ansible/manifests/arcgis-server-s3files-11.4.json | Adds server manifest for Ansible template. |
| aws/arcgis-server-linux-ansible/infrastructure/variables.tf | Adds infra variable definitions for Ansible template. |
| aws/arcgis-server-linux-ansible/infrastructure/README.md | Adds infra module docs for Ansible template. |
| aws/arcgis-server-linux-ansible/infrastructure/outputs.tf | Adds infra outputs for Ansible template. |
| aws/arcgis-server-linux-ansible/infrastructure/main.tf | Adds infra Terraform implementation for Ansible template. |
| aws/arcgis-server-linux-ansible/infrastructure/backup.tf | Adds AWS Backup plan/selection for Ansible template. |
| aws/arcgis-server-linux-ansible/image/variables.pkr.hcl | Adds Packer variables for Ansible template. |
| aws/arcgis-server-linux-ansible/image/README.md | Adds Packer docs for Ansible template. |
| aws/arcgis-server-linux-ansible/image/main.pkr.hcl | Adds Packer build for Ansible template (Ansible-based). |
| aws/arcgis-server-linux-ansible/backup/variables.tf | Sets default deployment_id for Ansible backup module. |
| aws/arcgis-server-linux-ansible/backup/README.md | Adds backup module docs (Terraform/Ansible). |
| aws/arcgis-server-linux-ansible/backup/main.tf | Adds backup Terraform module implementation (Ansible playbook runner). |
| aws/arcgis-server-linux-ansible/application/webadaptor.tf | Adds Web Adaptor upgrade/config logic for Ansible application module. |
| aws/arcgis-server-linux-ansible/application/variables.tf | Adds application variable definitions for Ansible template. |
| aws/arcgis-server-linux-ansible/application/README.md | Adds application module docs for Ansible template. |
| aws/arcgis-server-linux-ansible/application/outputs.tf | Adds application outputs for Ansible template. |
| aws/arcgis-server-linux-ansible/application/main.tf | Adds application Terraform implementation for Ansible template. |
| aws/arcgis-notebook-server-linux/restore/README.md | Removes leftover TF_DOCS markers. |
| aws/arcgis-notebook-server-linux/backup/README.md | Removes leftover TF_DOCS markers. |
| aws/arcgis-notebook-server-linux/application/main.tf | Reorders SSM parameter list (doc-only). |
Comment on lines
+58
to
+61
| 1. Set "arcgis_server_patches" property to the list of patch file names that must be installed on the images. | ||
| 2. If ArcGIS Web Adaptor is required, set "use_webadaptor" property to `true` and "server_web_context" property to the Web Adaptor name. | ||
| 3. Commit the changes to a Git branch and push the branch to GitHub. | ||
| 4. Run server-linux-aws-image workflow using the branch. | ||
| 2. Set "server_web_context" property to the ArcGIS Server web context. | ||
| 2. Commit the changes to a Git branch and push the branch to GitHub. | ||
| 3. Run server-linux-aws-image workflow using the branch. |
Comment on lines
35
to
38
| * Python 3.8 or later with [AWS SDK for Python (Boto3)](https://aws.amazon.com/sdk-for-python/) package must be installed | ||
| * Path to aws/scripts directory must be added to PYTHONPATH | ||
| * Ansible 2.16 or later must be installed | ||
| * arcgis.common, arcgis.server, arcgis.portal, and arcgis.webadaptor Ansible collections must be installed | ||
| * The working directory must be set to the arcgis-server-linux/application module path | ||
| * The working directory must be set to the arcgis-enterprise-base-linux/application module path | ||
| * AWS credentials must be configured |
Comment on lines
+35
to
38
| * * Python 3.8 or later with [AWS SDK for Python (Boto3)](https://aws.amazon.com/sdk-for-python/) package must be installed | ||
| * * Path to aws/scripts directory must be added to PYTHONPATH | ||
| * * Ansible 2.16 or later must be installed | ||
| * * arcgis.common, arcgis.server, arcgis.portal, and arcgis.webadaptor Ansible collections must be installed | ||
| * * The working directory must be set to the arcgis-server-linux/application module path | ||
| * * The working directory must be set to the arcgis-enterprise-base-linux/application module path | ||
| * * AWS credentials must be configured |
Comment on lines
+44
to
+51
| # Get the parameters from the JSON string | ||
| ADMIN_PASSWORD=$(echo $attributes | jq -r '.admin_password') | ||
| ADMIN_USERNAME=$(echo $attributes | jq -r '.admin_username') | ||
| ENTERPRISE_ID=$(echo $attributes | jq -r '.enterprise_id') | ||
| BACKUP_ENTERPRISE_ID=$(echo $attributes | jq -r '.backup_enterprise_id') | ||
| DEPLOYMENT_ID=$(echo $attributes | jq -r '.deployment_id') | ||
| RUN_AS_USER=$(echo $attributes | jq -r '.run_as_user') | ||
| S3_PREFIX=$(echo $attributes | jq -r '.s3_prefix') |
Comment on lines
+79
to
+84
| echo "Importing site from backup file: s3://$BACKUP_S3_BUCKET/$LAST_BACKUP_KEY" | ||
| TOKEN_JSON=$(curl -k --silent --show-error --request POST --data "username=$ADMIN_USERNAME&password=$ADMIN_PASSWORD&client=requestip&expiration=60&f=json" "$ADMIN_URL/generateToken") | ||
|
|
||
| if [ $? -ne 0 ]; then | ||
| echo "Error: Failed to generate token." | ||
| exit 1 |
Comment on lines
+44
to
+49
| # Get the parameters from the JSON string | ||
| ENTERPRISE_ID=$(echo $attributes | jq -r '.enterprise_id') | ||
| DEPLOYMENT_ID=$(echo $attributes | jq -r '.deployment_id') | ||
| ADMIN_USERNAME=$(echo $attributes | jq -r '.admin_username') | ||
| ADMIN_PASSWORD=$(echo $attributes | jq -r '.admin_password') | ||
| S3_PREFIX=$(echo $attributes | jq -r '.s3_prefix') |
Comment on lines
+55
to
+60
| # Generate a token for the admin user and export the site | ||
| TOKEN_JSON=$(curl -k --silent --show-error --request POST --data "username=$ADMIN_USERNAME&password=$ADMIN_PASSWORD&client=requestip&expiration=60&f=json" "$ADMIN_URL/generateToken") | ||
| if [ $? -ne 0 ]; then | ||
| echo "Error: Failed to generate token." | ||
| exit 1 | ||
| fi |
Comment on lines
+59
to
+61
| var.node_count > 0 ? [ | ||
| aws_instance.nodes[0].arn | ||
| ] : [], |
Comment on lines
60
to
65
| | Name | Description | Type | Default | Required | | ||
| |------|-------------|------|---------|:--------:| | ||
| | arcgis_server_patches | File names of ArcGIS Server patches to install | `string` | `[]` | no | | ||
| | arcgis_version | ArcGIS Server version | `string` | `"12.0"` | no | | ||
| | arcgis_web_adaptor_patches | File names of ArcGIS Web Adaptor patches to install | `string` | `[]` | no | | ||
| | aws_region | AWS region ID | `string` | `env("AWS_DEFAULT_REGION")` | no | |
Comment on lines
53
to
+57
| ENTERPRISE_ID=$(jq -r '.enterprise_id' $CONFIG_FILE) | ||
| DEPLOYMENT_ID=$(jq -r '.deployment_id' $CONFIG_FILE) | ||
| terraform init -backend-config="bucket=$TERRAFORM_BACKEND_S3_BUCKET" -backend-config="key=$ENTERPRISE_ID/aws/$DEPLOYMENT_ID/backup.tfstate" -backend-config="region=$TF_VAR_aws_region" | ||
| terraform apply -var-file $CONFIG_FILE -auto-approve -input=false | ||
| LOGS_S3_BUCKET=$(aws ssm get-parameter --name "/arcgis/$ENTERPRISE_ID/s3/logs" --query "Parameter.Value" --output text) | ||
| export JSON_ATTRIBUTES=$(cat $CONFIG_FILE | jq ".admin_username += \"$ADMIN_USERNAME\"" | jq ".admin_password += \"$ADMIN_PASSWORD\"" | base64) | ||
| JSON_ATTRIBUTES_PARAMETER="/arcgis/$ENTERPRISE_ID/attributes/$DEPLOYMENT_ID/backup" |
Comment on lines
51
to
+55
| ENTERPRISE_ID=$(jq -r '.enterprise_id' $CONFIG_FILE) | ||
| DEPLOYMENT_ID=$(jq -r '.deployment_id' $CONFIG_FILE) | ||
| terraform init -backend-config="bucket=$TERRAFORM_BACKEND_S3_BUCKET" -backend-config="key=$ENTERPRISE_ID/aws/$DEPLOYMENT_ID/restore.tfstate" -backend-config="region=$TF_VAR_aws_region" | ||
| terraform apply -var-file $CONFIG_FILE -auto-approve -input=false | ||
| LOGS_S3_BUCKET=$(aws ssm get-parameter --name "/arcgis/$ENTERPRISE_ID/s3/logs" --query "Parameter.Value" --output text) | ||
| export JSON_ATTRIBUTES=$(cat $CONFIG_FILE | jq ".admin_username += \"$ADMIN_USERNAME\"" | jq ".admin_password += \"$ADMIN_PASSWORD\"" | base64) | ||
| JSON_ATTRIBUTES_PARAMETER="/arcgis/$ENTERPRISE_ID/attributes/$DEPLOYMENT_ID/restore" |
Comment on lines
80
to
83
| terraform { | ||
| backend "s3" { | ||
| key = "terraform/arcgis-enterprise/arcgis-server/application.tfstate" | ||
| key = "terraform/arcgis/arcgis-server-linux/application.tfstate" | ||
| } |
Comment on lines
+623
to
+629
| install_system_requirements = true | ||
| wa_name = local.server_web_context | ||
| services_dir_enabled = true | ||
| callback_functions_enabled = true | ||
| system_properties = { | ||
| WebContextURL = "https://${local.ingress_fqdn}/${local.server_web_context}" | ||
| } |
Comment on lines
+45
to
+51
| ADMIN_PASSWORD=$(echo $attributes | jq -r '.admin_password') | ||
| ADMIN_USERNAME=$(echo $attributes | jq -r '.admin_username') | ||
| ENTERPRISE_ID=$(echo $attributes | jq -r '.enterprise_id') | ||
| BACKUP_ENTERPRISE_ID=$(echo $attributes | jq -r '.backup_enterprise_id') | ||
| DEPLOYMENT_ID=$(echo $attributes | jq -r '.deployment_id') | ||
| RUN_AS_USER=$(echo $attributes | jq -r '.run_as_user') | ||
| S3_PREFIX=$(echo $attributes | jq -r '.s3_prefix') |
Comment on lines
+45
to
+49
| ENTERPRISE_ID=$(echo $attributes | jq -r '.enterprise_id') | ||
| DEPLOYMENT_ID=$(echo $attributes | jq -r '.deployment_id') | ||
| ADMIN_USERNAME=$(echo $attributes | jq -r '.admin_username') | ||
| ADMIN_PASSWORD=$(echo $attributes | jq -r '.admin_password') | ||
| S3_PREFIX=$(echo $attributes | jq -r '.s3_prefix') |
Comment on lines
+42
to
+44
| outputs: | ||
| alb_dns_name: ${{ steps.output.outputs.alb_dns_name }} | ||
| defaults: |
| terraform init -backend-config="bucket=$TERRAFORM_BACKEND_S3_BUCKET" -backend-config="key=$ENTERPRISE_ID/aws/$DEPLOYMENT_ID/backup.tfstate" -backend-config="region=$TF_VAR_aws_region" | ||
| terraform apply -var-file $CONFIG_FILE -auto-approve -input=false | ||
| LOGS_S3_BUCKET=$(aws ssm get-parameter --name "/arcgis/$ENTERPRISE_ID/s3/logs" --query "Parameter.Value" --output text) | ||
| export JSON_ATTRIBUTES=$(cat $CONFIG_FILE | jq ".admin_username += \"$ADMIN_USERNAME\"" | jq ".admin_password += \"$ADMIN_PASSWORD\"" | base64) |
| terraform init -backend-config="bucket=$TERRAFORM_BACKEND_S3_BUCKET" -backend-config="key=$ENTERPRISE_ID/aws/$DEPLOYMENT_ID/restore.tfstate" -backend-config="region=$TF_VAR_aws_region" | ||
| terraform apply -var-file $CONFIG_FILE -auto-approve -input=false | ||
| LOGS_S3_BUCKET=$(aws ssm get-parameter --name "/arcgis/$ENTERPRISE_ID/s3/logs" --query "Parameter.Value" --output text) | ||
| export JSON_ATTRIBUTES=$(cat $CONFIG_FILE | jq ".admin_username += \"$ADMIN_USERNAME\"" | jq ".admin_password += \"$ADMIN_PASSWORD\"" | base64) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Key changes: