82 lines
2.0 KiB
YAML
82 lines
2.0 KiB
YAML
|
####################
|
||
|
# - 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 }}"
|