Skip to content

Instantly share code, notes, and snippets.

@maiconbaumx
Last active October 16, 2019 15:15
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maiconbaumx/beeb4cafd70c7a8afe245af44b16de6e to your computer and use it in GitHub Desktop.
Save maiconbaumx/beeb4cafd70c7a8afe245af44b16de6e to your computer and use it in GitHub Desktop.
Example: Packer template with multiple amazon-chroot builders with Ansible as provisioner
{
"variables": {
"aws_region": "{{env `xxxxxx`}}",
"aws_env": "{{env `xxxxxx`}}",
"default_ansible_roles": "xxxxxx",
"base_name": "xxxxxx",
"outcome_name": "xxxxxx",
"application_name": "xxxxxx",
"nexus_username": null,
"nexus_password": null,
"source_url": null,
"application_version": null
},
"builders": [
{
"ami_name": "{{user `aws_env`}}-{{user `outcome_name`}}-01-{{user `application_version`}}-{{ timestamp }}",
"sriov_support": true,
"ena_support": true,
"type": "amazon-chroot",
"mount_options": [ "nouuid" ],
"command_wrapper": "sudo {{.Command}}",
"name": "xxxxxx-01",
"region": "{{user `aws_region`}}",
"tags": {
"OsType": "xxxxxx",
"OsDistribution": "xxxxxx",
"OsVersion": "xxxxxx",
"Timestamp": "{{ timestamp }}",
"Name": "{{user `aws_env`}}-{{user `outcome_name`}}-01-{{user `application_version`}}",
"Provisioner": "Packer",
"Environment": "{{user `aws_env`}}",
"Product": "{{user `outcome_name`}}",
"Owner": "xxxxxx",
"Department": "xxxxxx",
"SourceUrl": "{{user `source_url`}}",
"ApplicationVersion": "{{user `application_version`}}"
},
"source_ami_filter": {
"filters": {
"virtualization-type": "hvm",
"name": "{{user `aws_env`}}-{{user `base_name`}}-*",
"root-device-type": "ebs",
"tag:Name": "{{user `aws_env`}}-{{user `base_name`}}"
},
"owners": [ "self" ],
"most_recent": true
}
},
{
"ami_name": "{{user `aws_env`}}-{{user `outcome_name`}}-02-{{user `application_version`}}-{{timestamp}}",
"sriov_support": true,
"ena_support": true,
"type": "amazon-chroot",
"mount_options": [ "nouuid" ],
"command_wrapper": "sudo {{.Command}}",
"name": "xxxxxx-02",
"region": "{{user `aws_region`}}",
"tags": {
"OsType": "xxxxxx",
"OsDistribution": "xxxxxx",
"OsVersion": "xxxxxx",
"Timestamp": "{{ timestamp }}",
"Name": "{{user `aws_env`}}-{{user `outcome_name`}}-02-{{user `application_version`}}",
"Provisioner": "Packer",
"Environment": "{{user `aws_env`}}",
"Product": "{{user `outcome_name`}}",
"Owner": "xxxxxx",
"Department": "xxxxxx",
"SourceUrl": "{{user `source_url`}}",
"ApplicationVersion": "{{user `application_version`}}"
},
"source_ami_filter": {
"filters": {
"virtualization-type": "hvm",
"name": "{{user `aws_env`}}-{{user `base_name`}}-*",
"root-device-type": "ebs",
"tag:Name": "{{user `aws_env`}}-{{user `base_name`}}"
},
"owners": [ "self" ],
"most_recent": true
}
},
{
"ami_name": "{{user `aws_env`}}-{{user `outcome_name`}}-03-{{user `application_version`}}-{{timestamp}}",
"sriov_support": true,
"ena_support": true,
"type": "amazon-chroot",
"mount_options": [ "nouuid" ],
"command_wrapper": "sudo {{.Command}}",
"name": "xxxxxx-03",
"region": "{{user `aws_region`}}",
"tags": {
"OsType": "xxxxxx",
"OsDistribution": "xxxxxx",
"OsVersion": "xxxxxx",
"Timestamp": "{{ timestamp }}",
"Name": "{{user `aws_env`}}-{{user `outcome_name`}}-03-{{user `application_version`}}",
"Provisioner": "Packer",
"Environment": "{{user `aws_env`}}",
"Product": "{{user `outcome_name`}}",
"Owner": "xxxxxx",
"Department": "xxxxxx",
"SourceUrl": "{{user `source_url`}}",
"ApplicationVersion": "{{user `application_version`}}"
},
"source_ami_filter": {
"filters": {
"virtualization-type": "hvm",
"name": "{{user `aws_env`}}-{{user `base_name`}}-*",
"root-device-type": "ebs",
"tag:Name": "{{user `aws_env`}}-{{user `base_name`}}"
},
"owners": [ "self" ],
"most_recent": true
}
}
],
"provisioners": [
{
"type": "ansible-local",
"playbook_file": "main.yml",
"group_vars": "../../../group_vars",
"role_paths": [
"roles/an_deploy"
],
"extra_arguments": [
"--connection=chroot",
"--inventory-file=/mnt/packer-amazon-chroot,",
"--extra-vars \"aws_env={{user `aws_env`}} application_name={{user `application_name`}} nexus_username={{user `nexus_username`}} nexus_password={{user `nexus_password`}} source_url={{user `source_url`}}\""
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment