- name: Set the DigitalOcean Access Token fact set_fact: do_token: "{{ do_access_token }}" public_key: "{{ lookup('file', '{{ SSH_keys.public }}') }}" - block: - name: "Delete the existing Algo SSH keys" digital_ocean: state: absent command: ssh api_token: "{{ do_access_token }}" name: "{{ SSH_keys.comment }}" register: ssh_keys until: ssh_keys.changed != true retries: 10 delay: 1 rescue: - name: Collect the fail error digital_ocean: state: absent command: ssh api_token: "{{ do_access_token }}" name: "{{ SSH_keys.comment }}" register: ssh_keys ignore_errors: yes - debug: var=ssh_keys - fail: msg: "Please, ensure that your API token is not read-only." - name: "Upload the SSH key" digital_ocean: state: present command: ssh ssh_pub_key: "{{ public_key }}" api_token: "{{ do_access_token }}" name: "{{ SSH_keys.comment }}" register: do_ssh_key - name: "Creating a droplet..." digital_ocean: state: present command: droplet name: "{{ do_server_name }}" region_id: "{{ do_region }}" size_id: "512mb" image_id: "ubuntu-16-04-x64" ssh_key_ids: "{{ do_ssh_key.ssh_key.id }}" unique_name: yes api_token: "{{ do_access_token }}" ipv6: yes register: do - name: Add the droplet to an inventory group add_host: name: "{{ do.droplet.ip_address }}" groups: vpn-host ansible_ssh_user: root ansible_python_interpreter: "/usr/bin/python2.7" ansible_ssh_private_key_file: "{{ SSH_keys.private }}" do_access_token: "{{ do_access_token }}" do_droplet_id: "{{ do.droplet.id }}" cloud_provider: digitalocean ipv6_support: true - set_fact: cloud_instance_ip: "{{ do.droplet.ip_address }}"