mirror of
https://github.com/trailofbits/algo.git
synced 2025-04-11 11:47:08 +02:00
110 lines
3.3 KiB
YAML
110 lines
3.3 KiB
YAML
- block:
|
|
- name: Build python virtual environment
|
|
import_tasks: venv.yml
|
|
|
|
- block:
|
|
- name: Include prompts
|
|
import_tasks: prompts.yml
|
|
|
|
- name: Set additional facts
|
|
set_fact:
|
|
algo_do_region: >-
|
|
{% if region is defined %}{{ region }}
|
|
{%- elif _algo_region.user_input is defined and _algo_region.user_input != "" %}{{ do_regions[_algo_region.user_input | int -1 ]['slug'] }}
|
|
{%- else %}{{ do_regions[default_region | int - 1]['slug'] }}{% endif %}
|
|
public_key: "{{ lookup('file', '{{ SSH_keys.public }}') }}"
|
|
|
|
- block:
|
|
- name: "Delete the existing Algo SSH keys"
|
|
digital_ocean:
|
|
state: absent
|
|
command: ssh
|
|
api_token: "{{ algo_do_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: "{{ algo_do_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: "{{ algo_do_token }}"
|
|
name: "{{ SSH_keys.comment }}"
|
|
register: do_ssh_key
|
|
|
|
- name: "Creating a droplet..."
|
|
digital_ocean:
|
|
state: present
|
|
command: droplet
|
|
name: "{{ algo_server_name }}"
|
|
region_id: "{{ algo_do_region }}"
|
|
size_id: "{{ cloud_providers.digitalocean.size }}"
|
|
image_id: "{{ cloud_providers.digitalocean.image }}"
|
|
ssh_key_ids: "{{ do_ssh_key.ssh_key.id }}"
|
|
unique_name: yes
|
|
api_token: "{{ algo_do_token }}"
|
|
ipv6: yes
|
|
register: do
|
|
|
|
- set_fact:
|
|
cloud_instance_ip: "{{ do.droplet.ip_address }}"
|
|
ansible_ssh_user: root
|
|
|
|
- name: Tag the droplet
|
|
digital_ocean_tag:
|
|
name: "Environment:Algo"
|
|
resource_id: "{{ do.droplet.id }}"
|
|
api_token: "{{ algo_do_token }}"
|
|
state: present
|
|
|
|
- block:
|
|
- name: "Delete the new Algo SSH key"
|
|
digital_ocean:
|
|
state: absent
|
|
command: ssh
|
|
api_token: "{{ algo_do_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: "{{ algo_do_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."
|
|
environment:
|
|
PYTHONPATH: "{{ digitalocean_venv }}/lib/python2.7/site-packages/"
|
|
rescue:
|
|
- debug: var=fail_hint
|
|
tags: always
|
|
- fail:
|
|
tags: always
|