Hi All,
My Rackspace cloud servers are under managed services and under RackConnect services. This means than when they are built, first 2 other scripts need to run before I can actually use the server to provision it.
The peculiar thing is that during the RackConnect script the public ip of the server changes, so it in validates the data you "register" using the rax module when adding a server.
The fact is that we do not know precise when these build scripts have finished running. The only way to figure it out is either through the presence of a file in the servers /tmp directory or by querying the fact data received through the rackspace api. It should have a NVP set in the metatags field.
So basically what I want to do is:
- create cloud server
- poll factsdata until certain values are set
- provision the server
The documentation of the rax_facts module does not provide a lot of info, event when copying the sample is fails due to "{{ rax_accessipv4 }}" not existing...
So who can help me out here or me into the right direction?
My current playbook:
- name: Wait for Rackspace Managed Service provisioning completion
hosts: raxtest
gather_facts: False
remote_user: root
tasks:
- name: Get meta data and check for completion of setup
local_action:
module: rax_facts
api_key: <hidden>
username: <hidden>
register: result
name: "{{ inventory_hostname }}"
set_fact: managed_done = "{{rax_metadata.rax_service_level_automation}}"
set_fact: ansible_ssh_host = "{{ rax_accessipv4 }}"
until: managed_done = "Complete"
retries: 20
delay: 30