Talos
This commit is contained in:
parent
8d85943c50
commit
80d9a3c52b
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
collections:
|
||||
- name: ansible.utils
|
||||
- name: community.general
|
||||
- name: ansible.posix
|
||||
- name: kubernetes.core
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
Loading…
Reference in New Issue