I’m trying to pass a map of string into ansible provisioner in packer.
{
alex = "alexano"
bob = "bobvim"
}
I came across this question How to set a variable as a list in Packer and use it as a reference but it exits with error ansible-playbook: error: unrecognized arguments: {ssh_users:bob:bob-vim}
What is the correct way to pass a map of string using --extra-vars
in packer?
provisioner "ansible-local" {
playbook_dir = "./ansible"
playbook_file = "./ansible/ami_9_x86_64.yaml"
galaxy_file = "./ansible/requirements.yaml"
only = ["amazon-ebs.bastion-server"]
extra_arguments = [
"-vv",
"--extra-vars",
jsonencode({ "ssh_users" = var.ssh_users}),
]
}
Here’s a packer build command output snippet(truncated for brevity).
Executing Ansible:
ansible-playbook /tmp/packer-provisioner-ansible-local/*************/ami_9_x86_64.yaml
--extra-vars "packer_build_name=bastion-server packer_builder_type=amazon-ebs
packer_http_addr=ERR_HTTP_ADDR_NOT_IMPLEMENTED_BY_BUILDER -o IdentitiesOnly=yes"
-vv --extra-vars {"ssh_users":{"alex":"alex-nano","bob":"bob-vim"}} -c local
-i /tmp/packer-provisioner-ansible-local/********/packer-provisioner-ansible-local2248890322
yehtetmaungmaung is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.