Working on Talos using DCI

This commit is contained in:
Jeroen Vermeulen 2023-09-18 21:11:59 +02:00
parent 43df517500
commit 2610c84f67
No known key found for this signature in database
17 changed files with 76 additions and 15 deletions

View File

@ -10,6 +10,40 @@
- name: Import talos_machine_status tasks
ansible.builtin.import_tasks: "{{ role_path }}/../../shared/tasks/talos_machine_status.yml"
- name: Try Talos node config
delegate_to: "{{ talosctl_host }}"
become: no
ansible.builtin.command:
cmd: >-
talosctl apply-config
--file '{{ talos_node_config_file }}'
--nodes '{{ ansible_remote }}'
--endpoints '{{ ansible_remote }}'
--mode reboot
--timeout 2m
{% if talos_machine_status.spec.stage == 'maintenance' %} --insecure{% endif %}
changed_when: true
environment:
TALOSCONFIG: "{{ talosconfig }}"
- name: Wait for Talos port 50000 to close
delegate_to: "{{ talosctl_host }}"
become: no
ansible.builtin.wait_for:
host: "{{ ansible_remote }}"
port: 50000
timeout: 100
state: stopped
- name: Wait for Talos port 50000 to open
delegate_to: "{{ talosctl_host }}"
become: no
ansible.builtin.wait_for:
host: "{{ ansible_remote }}"
port: 50000
delay: 5
timeout: 100
- name: Apply Talos node config
delegate_to: "{{ talosctl_host }}"
become: no
@ -32,3 +66,4 @@
host: "{{ ansible_remote }}"
port: 50000
delay: 5
timeout: 60

View File

@ -1,12 +1,5 @@
---
- name: Wait for Talos port 50000
delegate_to: "{{ talosctl_host }}"
become: no
ansible.builtin.wait_for:
host: "{{ ansible_remote }}"
port: 50000
- name: Call DCI Manager API to finish operation
when: dci_server_info.operation.status == 'running'
delegate_to: "{{ dci_manager_access_host }}"
@ -18,5 +11,5 @@
X-Xsrf-Token: "{{ dci_token }}"
body_format: json
body: "{}"
register: _dci_finish
until: _dci_server.status != 503
register: dci_finish
until: dci_finish.status != 503

View File

@ -20,7 +20,8 @@
password: "{{ lookup('community.general.bitwarden', dci_manager_bitwarden_item_name, field='password') | first }}"
status_code: 201
register: _dci_manager_login
until: _dci_manager_login.status != 503
until: _dci_manager_login.status != 503 and _dci_manager_login.status != -1
retries: 10
- name: Set token fact
ansible.builtin.set_fact:

View File

@ -1,5 +1,10 @@
---
- name: Sleep 60 seconds because we just called Finish
when: dci_finish is defined and dci_finish is success
ansible.builtin.pause:
minutes: 1
- name: Call DCI Manager API to reinstall Talos Linux
delegate_to: "{{ dci_manager_access_host }}"
become: no
@ -15,12 +20,13 @@
hdd_raid: "no_raid"
os_template_id: "{{ dci_manager_talos_os_template_id }}"
password: "_not_used_"
register: _dci_finish
until: _dci_server.status != 503
register: _dci_reinstall
until: _dci_reinstall.status != 503 and _dci_reinstall.status != -1
- name: Wait for Talos port 50000
delegate_to: "{{ talosctl_host }}"
become: no
ansible.builtin.wait_for:
delay: 10
host: "{{ ansible_remote }}"
port: 50000

View File

@ -0,0 +1,3 @@
---
dependencies:
- role: common

View File

@ -0,0 +1,8 @@
---
- name: Wait for Talos port 50000
delegate_to: "{{ talosctl_host }}"
become: no
ansible.builtin.wait_for:
host: "{{ ansible_remote }}"
port: 50000

View File

@ -1,6 +1,12 @@
---
# Playbook Talos Install
- name: Wait for Talos port
become: no
gather_facts: false
roles:
- role: talos_wait_port
- name: Talos hardware nodes
become: no
gather_facts: false
@ -11,14 +17,14 @@
tags:
- talos_dci_finish
- name: Talos configs
- name: Talos config
become: no
gather_facts: false
hosts:
- talos
roles:
- role: talos_configs_create
- role: talos_configs_apply
- role: talos_config_create
- role: talos_config_apply
- name: Talos bootstrap
become: no

8
talos_config_apply.yml Normal file
View File

@ -0,0 +1,8 @@
---
- name: Apply Talos Config
gather_facts: false
hosts:
- talos
roles:
- role: talos_config_apply

View File

@ -5,4 +5,5 @@
hosts:
- talos_hardware_nodes
roles:
- role: talos_dci_finish
- role: talos_dci_reinstall