# inventories/group_vars/all/vars.yml
[...]
web_root: /var/www/html
do_droplets:
- short_name: <short name here>
long_name: <long name here>
domain: <domain name here>
d_index: DirectoryIndex default.htm index.php index.html
doc_root: "{{ web_root }}/public"
framework: laravel
- short_name: <another short name here>
[...]
[...]
# playbooks/provision.yml
---
- name: Provision the droplets
hosts: localhost
tags:
- droplet
- laravel
connection: local
gather_facts: false
tasks:
- name: Ensure droplets exist
digital_ocean_droplet:
oauth_token: "{{ lookup('env', 'DO_API_TOKEN') }}"
state: present
name: "{{ item.short_name | mandatory }}-01"
backups: yes
private_networking: yes
size: s-1vcpu-1gb
image: lamp-20-04
region: nyc3
ipv6: yes
ssh_keys: <hidden>
unique_name: yes
wait: yes
wait_timeout: 300
tags:
- "{{ item.short_name | mandatory }}"
loop: "{{ do_droplets }}"
register: droplet
- name: Add new hosts to inventory
add_host:
name: "{{ item.data.droplet.name | mandatory }}"
ansible_host: "{{ item.data.ip_address | mandatory }}"
groups:
- do
- do_{{ item.item.short_name | mandatory }}
- "{{ item.item.framework | default('static_html') }}"
short_name: "{{ item.item.short_name | mandatory }}"
long_name: "{{ item.item.long_name | default('') }}"
domain: "{{ item.item.domain | mandatory }}"
d_index: "{{ item.item.d_index | default('') }}"
doc_root: "{{ item.item.doc_root | default('/var/www/html') }}"
when: item.data is defined
changed_when: false
loop: "{{ droplet.results }}"
loop_control:
label: "{{ item.data.droplet.name }}"
Comments