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.

Reply via email to