Skip to content

#293 Move aws/arcgis-server-linux template from Ansible to Chef#295

Merged
pbobov merged 3 commits into
mainfrom
issue293
May 29, 2026
Merged

#293 Move aws/arcgis-server-linux template from Ansible to Chef#295
pbobov merged 3 commits into
mainfrom
issue293

Conversation

@pbobov

@pbobov pbobov commented May 28, 2026

Copy link
Copy Markdown
Collaborator

Key changes:

  • Renamed aws/arcgis-server-linux template to aws/arcgis-server-linux-ansible.
  • Implemented aws/arcgis-server-linux template using Chef.

Copilot AI review requested due to automatic review settings May 28, 2026 20:36

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 to arcgis-server-linux-ansible.
  • Reworks image + application automation for arcgis-server-linux to 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 thread aws/arcgis-server-linux/README.md Outdated
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 |

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 67 out of 76 changed files in this pull request and generated 7 comments.

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:

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 67 out of 76 changed files in this pull request and generated 2 comments.

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)
@pbobov
pbobov merged commit a5e3a3a into main May 29, 2026
5 checks passed
@pbobov
pbobov deleted the issue293 branch May 29, 2026 20:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants