I don't know if this is a normal use-case but I am using packer.io and the local ansible provisioner to build docker images. I wanted to use a pre_task to actually install the role and then immediately use the role on a managed node. The problem is that *I think* there is a sanity check that runs before the pre_tasks actually gets called to make sure the referenced roles actually exist. So the play will fail with a message the role does not exist in which wouldn't be true if the pre_tasks ran first. Is my assumption of this sanity check correct and is there a recommended approach? I can have packer upload the role to my docker image if need be but I thought there might be a cleaner way.
See the following simple example playbook: - name: Install openldap hosts: all sudo: True pre_tasks: - name: Install the openldap role command: ansible-galaxy install bennojoy.openldap_server creates=/etc/ansible/roles/bennojoy.openldap_server roles: - role: bennojoy.openldap_server openldap_server_domain_name: example.com openldap_server_rootpw: passme openldap_server_enable_ssl: true openldap_server_country: US openldap_server_state: Oregon openldap_server_location: Portland openldap_server_organization: IT root@archvile:~/packer/openldap_server-packer# sudo packer build -var-file=variables.json packer.json docker output will be in this color. ==> docker: Creating a temporary directory for sharing data... ==> docker: Pulling Docker image: jgrowl/ubuntu-ansible docker: Pulling repository jgrowl/ubuntu-ansible ==> docker: Starting docker container... docker: Run command: docker run -d -i -t -v /tmp/packer-docker258851345:/packer-files jgrowl/ubuntu-ansible /bin/bash docker: Container ID: aa033de85e2009aea6d808ce9dc2ca5ae0dab7008b1de9de890955cf38d39780 ==> docker: Provisioning with Ansible... docker: Creating Ansible staging directory... docker: Creating directory: /tmp/packer-provisioner-ansible-local docker: Uploading main Playbook file... docker: Executing Ansible: cd /tmp/packer-provisioner-ansible-local && ansible-playbook /tmp/packer-provisioner-ansible-local/openldap_server.yml -c local -i "127.0.0.1," docker: ERROR: cannot find role in /tmp/packer-provisioner-ansible-local/roles/bennojoy.openldap_server or /tmp/packer-provisioner-ansible-local/bennojoy.openldap_server or /etc/ansible/roles/bennojoy.openldap_server ==> docker: Killing the container: aa033de85e2009aea6d808ce9dc2ca5ae0dab7008b1de9de890955cf38d39780 Build 'docker' errored: Error executing Ansible: Non-zero exit status: 1 -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to ansible-project+unsubscr...@googlegroups.com. To post to this group, send email to ansible-project@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/3a7ea6c4-e555-4a00-8f6e-68992f7264ad%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.