browsertrix/ansible/roles/microk8s/tasks/configure_ha.yml
Francis Kayiwa 487110eca3
Deployment: Add Ansible setup to deploy with microk8s (#296)
- adds an ansible/ directory for management deployments, starting with microk8s
- has a microk8s role
      we will need to add workers
- has a playbook with variables that can install most places
2022-08-19 12:49:21 -07:00

58 lines
2.1 KiB
YAML

---
- name: microk8s | Enumerate all cluster HA hosts within the hosts file
become: true
ansible.builtin.blockinfile:
dest: /etc/hosts
marker: "# {mark} ANSIBLE MANAGED: microk8s HA Cluster Hosts"
content: |
{% for host in groups[microk8s_group_HA] %}
{{ hostvars[host].ansible_default_ipv4.address }} {{ hostvars[host].ansible_hostname }}
{% endfor %}
- name: microk8s | Find the designated host
ansible.builtin.set_fact:
designated_host: '{{ (groups[microk8s_group_HA]|sort)[0] }}'
- name: microk8s | define ha characteristics
- block:
- name: Waiting for microk8s to be ready on microk8s host master
ansible.builtin.command: "microk8s status --wait-ready"
delegate_to: "{{ designated_host }}"
delegate_facts: true
changed_when: false
- name: Get the microk8s join command from the microk8s master
ansible.builtin.shell: "microk8s add-node | grep -E -m1 'microk8s join {{ microk8s_ip_regex_ha }}'"
delegate_to: "{{ designated_host }}"
delegate_facts: true
changed_when: false
register: microk8s_join_command
- name: Get microk8s cluster nodes
ansible.builtin.command: "microk8s kubectl get node"
delegate_to: "{{ designated_host }}"
delegate_facts: true
changed_when: false
register: microk8s_cluster_node
- name: Waiting for microk8s to be ready on microk8s host node
ansible.builtin.command: "microk8s status --wait-ready"
changed_when: false
- name: Set the microk8s join command on the microk8s node
ansible.builtin.command: "{{ microk8s_join_command.stdout }}"
when: microk8s_cluster_node.stdout.find(inventory_hostname) == -1
register: join_command_output
failed_when:
- "'already known to dqlite' not in join_command_output.stdout"
- join_command_output.rc > 0
become: true
when:
- inventory_hostname != designated_host
- inventory_hostname in groups[microk8s_group_HA]
- name: microk8s | configure cluster addons
include_tasks: addons.yml
when: inventory_hostname == designated_host