#################### # - Check Variables #################### - name: "[Play] Check Variables" assert: that: - "hosts_do is defined" - "do_project is defined" - "do_project_purpose is defined" #################### # - Prepare SSH Information #################### - name: "Add SSH Public Key to DO Account" digital_ocean_sshkey: state: "present" name: "{{ ssh_key_pub.split(' ')[-1] }}" oauth_token: "{{ digitalocean_droplet_token }}" ssh_pub_key: "{{ ssh_key_pub }}" register: "do_sshkey_result" #################### # - Create Digitalocean Project #################### - name: "Create DO Project: {{ do_project }}" run_once: true community.digitalocean.digital_ocean_project: state: "present" name: "{{ do_project }}" oauth_token: "{{ digitalocean_droplet_token }}" purpose: "{{ do_project_purpose }}" #################### # - Create Digitalocean Nodes #################### - name: "Create Droplets" digital_ocean_droplet: state: "present" name: "{{ item }}" oauth_token: "{{ digitalocean_droplet_token }}" ssh_keys: ["{{ do_sshkey_result.data.ssh_key.id }}"] image: "{{ droplet_image }}" size: "{{ droplet_size }}" region: "{{ droplet_region }}" project: "{{ do_project }}" wait_timeout: 600 unique_name: "yes" with_items: "{{ hosts_do }}" register: "droplet_result" - name: "Register Droplet IPs" set_fact: nodes_to_ipv4s_public: "{{ nodes_to_ipv4s_public | default({}) | combine({ item.data.droplet.name: ( item.data.droplet.networks.v4 | selectattr('type', 'eq', 'public') | first ).ip_address, }) }}" nodes_to_ipv4s_private: "{{ nodes_to_ipv4s_private | default({}) | combine({ item.data.droplet.name: ( item.data.droplet.networks.v4 | selectattr('type', 'eq', 'private') | first ).ip_address, }) }}" with_items: "{{ droplet_result.results }}"