--- - name: Provision Digital Ocean VMs hosts: localhost become: false gather_facts: no vars: state: "present" ssh_key_id: "6536865" cloud_machine_type: 2gb regions: - nyc1 - sfo1 - nyc2 - ams2 - sgp1 - lon1 - nyc3 - ams3 - fra1 - tor1 - sfo2 - blr1 cloud_images: - fedora-24-x64 - centos-5-x64 - centos-5-x32 - fedora-25-x64 - debian-7-x64 - debian-7-x32 - debian-8-x64 - debian-8-x32 - centos-6-x32 - centos-6-x64 - ubuntu-16-10-x32 - ubuntu-16-10-x64 - freebsd-11-0-x64-zfs - freebsd-10-3-x64-zfs - ubuntu-12-04-x32 - ubuntu-12-04-x64 - ubuntu-16-04-x64 - ubuntu-16-04-x32 - ubuntu-14-04-x64 - ubuntu-14-04-x32 - centos-7-x64 - freebsd-11-0-x64 - freebsd-10-3-x64 - centos-7-3-1611-x64 mode: default tasks: - name: Replace_test_id set_fact: test_name: "{{ test_id | regex_replace('\\.', '-') }}" - name: Show vars debug: msg: "{{ cloud_region }}, {{ cloud_image }}" - name: Set instance names set_fact: # noqa: jinja[spacing] instance_names: >- {%- if mode in ['separate', 'ha'] -%} ["k8s-{{ test_name }}-1", "k8s-{{ test_name }}-2", "k8s-{{ test_name }}-3"] {%- else -%} ["k8s-{{ test_name }}-1", "k8s-{{ test_name }}-2"] {%- endif -%} - name: Manage DO instances | {{ state }} community.digitalocean.digital_ocean: unique_name: yes api_token: "{{ lookup('env', 'DO_API_TOKEN') }}" command: "droplet" image_id: "{{ cloud_image }}" name: "{{ item }}" private_networking: no region_id: "{{ cloud_region }}" size_id: "{{ cloud_machine_type }}" ssh_key_ids: "{{ ssh_key_id }}" state: "{{ state }}" wait: yes register: droplets with_items: "{{ instance_names }}" - debug: # noqa unnamed-task msg: "{{ droplets }}, {{ inventory_path }}" when: state == 'present' - name: Template the inventory template: src: ../templates/inventory-do.j2 # noqa no-relative-paths - CI templates are not in role_path dest: "{{ inventory_path }}" mode: 0644 when: state == 'present'