--- - name: Ensure user SSH keypair is registered with Nova hosts: seed vars: openstack_auth: auth_url: "{{ lookup('env', 'OS_AUTH_URL') }}" username: "{{ lookup('env', 'OS_USERNAME') }}" password: "{{ lookup('env', 'OS_PASSWORD') }}" project_name: "{{ lookup('env', 'OS_PROJECT_NAME') }}" project_domain_name: "{{ lookup('env', 'OS_PROJECT_DOMAIN_NAME') }}" user_domain_name: "{{ lookup('env', 'OS_USER_DOMAIN_NAME') }}" public_key_path: "{{ ssh_public_key_path }}" shade_venv: "{{ ansible_env['PWD'] }}/shade-venv" tasks: - name: Ensure pip is installed pip: name: pip state: latest virtualenv: "{{ shade_venv }}" - name: Ensure OpenStack shade module is installed pip: name: shade virtualenv: "{{ shade_venv }}" # Note that setting this via a play or task variable seems to not # evaluate the Jinja variable reference, so we use set_fact. - name: Update the Ansible python interpreter fact to point to the shade virtualenv set_fact: ansible_python_interpreter: "{{ shade_venv }}/bin/python" - name: Ensure a test SSH key pair is registered with Nova os_keypair: auth: "{{ openstack_auth }}" name: test public_key: "{{ lookup('file', public_key_path) }}" state: present