Skip to content

Instantly share code, notes, and snippets.

@vandot
Created September 23, 2020 08:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vandot/65b23b144789ff6476338faf87e5c56e to your computer and use it in GitHub Desktop.
Save vandot/65b23b144789ff6476338faf87e5c56e to your computer and use it in GitHub Desktop.
---
- hosts: localhost
gather_facts: false
connection: local
tasks:
- name: Create ssh key
community.digitalocean.digital_ocean_sshkey:
oauth_token: "{{ oauth_token }}"
name: mykey
ssh_pub_key: "{{ lookup('file', '~/.ssh/id_ed25519.pub') }}"
state: present
register: ssh_key
- name: Create VMs
community.digitalocean.digital_ocean_droplet:
state: present
name: "{{ item }}"
oauth_token: "{{ oauth_token }}"
size: 2gb
region: fra1
image: ubuntu-20-04-x64
wait_timeout: 500
ssh_keys:
- "{{ ssh_key.data.ssh_key.fingerprint }}"
tags:
- "k3sup"
register: vm_jobs
with_items:
- k3s-server
- k3s-agent1
- k3s-agent2
async: 120
poll: 0
- name: Wait for creation to finish
async_status:
jid: "{{ item.ansible_job_id }}"
register: vm
until: vm.finished
delay: 5
retries: 15
with_items: "{{ vm_jobs.results }}"
- name: Define server IP
set_fact:
server_ip: "{{ item['data']['ip_address'] }}"
when: item['data']['droplet']['name'] == 'k3s-server'
with_items:
- "{{ vm.results }}"
- name: Wait for SSH to come up
local_action: wait_for
host={{ server_ip }}
port=22
state=started
- name: Install k3s server on k3s-server
vandot.k3sup.k3sup:
action: server
ip: "{{ server_ip }}"
ssh_key: "~/.ssh/id_ed25519"
- name: Install k3s agent on k3s-agents
vandot.k3sup.k3sup:
action: agent
ip: "{{ item['data']['ip_address'] }}"
server_ip: "{{ server_ip }}"
ssh_key: "~/.ssh/id_ed25519"
register: k3sup_jobs
when: item['data']['droplet']['name'] != 'k3s-server'
with_items: "{{ vm.results }}"
async: 120
poll: 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment