--- - name: Creating the Ironic service and endpoint command: docker exec -t kolla_toolbox /usr/bin/ansible localhost -m kolla_keystone_service -a "service_name=ironic service_type=baremetal description='Ironic bare metal provisioning service' endpoint_region={{ openstack_region_name }} admin_url='http://{{ ironic_admin_address }}:{{ ironic_api_port }}' internal_url='http://{{ ironic_internal_address }}:{{ ironic_api_port }}' public_url='http://{{ ironic_public_address }}:{{ ironic_api_port }}' region_name={{ openstack_region_name }} auth={{ '{{ openstack_ironic_auth }}' }}" -e "{'openstack_ironic_auth':{{ openstack_ironic_auth }}}" register: ironic_endpoint changed_when: "{{ ironic_endpoint.stdout.find('localhost | SUCCESS => ') != -1 and (ironic_endpoint.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}" until: ironic_endpoint.stdout.split()[2] == 'SUCCESS' retries: 10 delay: 5 run_once: True - name: Creating the Ironic project, user, and role command: docker exec -t kolla_toolbox /usr/bin/ansible localhost -m kolla_keystone_user -a "project=service user={{ ironic_keystone_user }} password={{ ironic_keystone_password }} role=admin region_name={{ openstack_region_name }} auth={{ '{{ openstack_ironic_auth }}' }}" -e "{'openstack_ironic_auth':{{ openstack_ironic_auth }}}" register: ironic_user changed_when: "{{ ironic_user.stdout.find('localhost | SUCCESS => ') != -1 and (ironic_user.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}" until: ironic_user.stdout.split()[2] == 'SUCCESS' retries: 10 delay: 5 run_once: True