This commit is contained in:
James Turland 2024-07-26 12:00:20 +01:00
parent 8d85943c50
commit 80d9a3c52b
9 changed files with 159 additions and 0 deletions

View File

@ -0,0 +1,6 @@
---
collections:
- name: ansible.utils
- name: community.general
- name: ansible.posix
- name: kubernetes.core

View File

@ -0,0 +1,27 @@
os: "linux"
arch: "amd64"
talos_version: v1.7.0
talosctl_version: v1.7.5
control_plane_ip: 192.168.200.61
control_plane_2: 192.168.200.62
control_plane_3: 192.168.200.63
worker_1: 192.168.200.64
worker_2: 192.168.200.65
config_directory: "/home/{{ ansible_user }}/.talos"
config_file: "/home/{{ ansible_user }}/.talos/talosconfig"
kube_vip_version: "v0.8.0"
vip_interface: eth0
vip: 192.168.3.50
metallb_version: v0.13.12
lb_range: 192.168.3.80-192.168.3.90
lb_pool_name: first-pool
ansible_user: ubuntu
ansible_become: true
ansible_become_method: sudo

View File

@ -0,0 +1,13 @@
# Make sure Ansible host has access to these devices
# Good idea to snapshot all machines and deploy uing cloud-template
[ansible]
127.0.0.1 ansible_connection=local
[servers]
server1 ansible_host=192.168.3.61
server2 ansible_host=192.168.3.62
server3 ansible_host=192.168.3.63
[agents]
agent1 ansible_host=192.168.3.64
agent2 ansible_host=192.168.3.65

View File

@ -0,0 +1,11 @@
---
# Generate Machine Configurations. This is using the qemu agent as per: https://www.talos.dev/v1.7/talos-guides/install/virtualized-platforms/proxmox/
- name: Apply config to first worker
ansible.builtin.command:
cmd: talosctl apply-config --insecure --nodes {{ worker_1 }} --file {{ config_directory }}/worker.yaml
changed_when: true
- name: Apply config to second worker
ansible.builtin.command:
cmd: talosctl apply-config --insecure --nodes {{ worker_2 }} --file {{ config_directory }}/worker.yaml
changed_when: true

View File

@ -0,0 +1,16 @@
---
# Generate Machine Configurations. This is using the qemu agent as per: https://www.talos.dev/v1.7/talos-guides/install/virtualized-platforms/proxmox/
- name: Apply config to first node
ansible.builtin.command:
cmd: talosctl apply-config --insecure --nodes {{ control_plane_ip }} --file {{ config_directory }}/controlplane.yaml
changed_when: true
- name: Apply config to second node
ansible.builtin.command:
cmd: talosctl apply-config --insecure --nodes {{ control_plane_2 }} --file {{ config_directory }}/controlplane.yaml
changed_when: true
- name: Apply config to first node
ansible.builtin.command:
cmd: talosctl apply-config --insecure --nodes {{ control_plane_3 }} --file {{ config_directory }}/controlplane.yaml
changed_when: true

View File

@ -0,0 +1,11 @@
---
- name: Check that the config file doesn't already exist
ansible.builtin.stat:
path: "{{ config_file }}"
register: stat_result
# Generate Machine Configurations. This is using the qemu agent as per: https://www.talos.dev/v1.7/talos-guides/install/virtualized-platforms/proxmox/
- name: Generate config for cluster
when: "not stat_result.stat.exists"
ansible.builtin.command: talosctl gen config talos-proxmox-cluster https://{{ control_plane_ip }}:6443 --output-dir {{ config_directory }} --install-image factory.talos.dev/installer/ce4c980550dd2ab1b17bbf2b08801c7eb59418eafe8f279833297925d67c7515:{{ talos_version }}
changed_when: true

View File

@ -0,0 +1,26 @@
---
# Update TalosCTL
- name: Update TalosCTL configs
ansible.builtin.command: talosctl config endpoint {{ control_plane_ip }} --talosconfig {{ config_file }}
changed_when: true
- name: Update TalosCTL configs
ansible.builtin.command: talosctl config node {{ control_plane_ip }} --talosconfig {{ config_file }}
changed_when: true
#################################
# WAIT FOR REBOOT & BOOTSTRAP #
#################################
- name: Keep trying to bootstrap
ansible.builtin.command:
cmd: "talosctl bootstrap --talosconfig {{ config_file }}"
register: bootstrap_result
retries: 10
delay: 30
until: bootstrap_result.rc == 0
changed_when: bootstrap_result.rc == 0
# Grab Kubeconfig
- name: Get Kubeconfig
ansible.builtin.command: talosctl kubeconfig . --talosconfig {{ config_file }}
changed_when: true

View File

@ -0,0 +1,12 @@
---
# Ansible Playbook to install Talos
- name: Download talosctl for Linux (amd64)
ansible.builtin.get_url:
url: https://github.com/siderolabs/talos/releases/download/{{ talosctl_version }}/talosctl-linux-amd64
dest: /usr/local/bin/talosctl
mode: '0755' # Make the binary executable
register: download_result # Register the result for debugging or verification
- name: Display download result
ansible.builtin.debug:
var: download_result # Display the result of the download task

View File

@ -0,0 +1,37 @@
# Hello, thanks for using my playbook, hopefully you can help to improve it.
# Install TalosCTL on Ansible node
- name: Install TalosCTL
hosts: ansible
gather_facts: true # enables us to gather lots of useful variables: https://docs.ansible.com/ansible/latest/collections/ansible/builtin/setup_module.html
become: true
roles:
- install-talosctl
# Configure Cluster Configuration
- name: Configure Cluster
hosts: ansible
gather_facts: true
roles:
- configure-cluster
# Apply Cluster Configuration
- name: Configure Cluster
hosts: ansible
gather_facts: true
roles:
- apply-config
# Configure TalosCTL
- name: Configure TalosCTL
hosts: ansible
gather_facts: true
roles:
- configure-talosctl
# Add Workers
- name: Add Workers
hosts: ansible
gather_facts: true
roles:
- add-workers