python-support-infra/roles/setup/hosts_digitalocean/tasks/main.yml

82 lines
2.0 KiB
YAML
Raw Normal View History

####################
# - 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 }}"