feat: migrate ansible/k3s from https://gitlab.com/fukurokuju/vm-foundation
This commit is contained in:
parent
81b6f45b08
commit
1cc30ed503
15 changed files with 202 additions and 1 deletions
|
|
@ -2,4 +2,19 @@
|
||||||
cloud.fuku
|
cloud.fuku
|
||||||
|
|
||||||
[nextclouds:vars]
|
[nextclouds:vars]
|
||||||
ansible_user=root
|
ansible_user=root
|
||||||
|
|
||||||
|
[k3s_masters]
|
||||||
|
master1.ramiel.fuku
|
||||||
|
master2.ireul.fuku
|
||||||
|
master3.ireul.fuku
|
||||||
|
|
||||||
|
[k3s_agents]
|
||||||
|
agent1.zeruel.fuku
|
||||||
|
sandalphon.fuku
|
||||||
|
|
||||||
|
[k3s_masters:vars]
|
||||||
|
ansible_user=ci
|
||||||
|
|
||||||
|
[k3s_agents:vars]
|
||||||
|
ansible_user=ci
|
||||||
|
|
|
||||||
6
ansible/k3s/playbooks/base.yml
Normal file
6
ansible/k3s/playbooks/base.yml
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
- name: Apply base configuration
|
||||||
|
hosts: all
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- role: ../roles/base
|
||||||
|
become: yes
|
||||||
12
ansible/k3s/playbooks/k3s.yml
Normal file
12
ansible/k3s/playbooks/k3s.yml
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
- name: Install k3s nodes
|
||||||
|
hosts:
|
||||||
|
- k3s_masters
|
||||||
|
- k3s_agents
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- role: ../roles/k3s
|
||||||
|
become: yes
|
||||||
|
vars:
|
||||||
|
first_master_hostname: "{{ groups['k3s_masters'][0] }}"
|
||||||
|
is_first_master: "{{ inventory_hostname in groups['k3s_masters'][0] }}"
|
||||||
|
short_hostname: "{{ inventory_hostname.split('.')[0] }}"
|
||||||
36
ansible/k3s/roles/base/tasks/main.yml
Normal file
36
ansible/k3s/roles/base/tasks/main.yml
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
---
|
||||||
|
- name: Set same timezone on every Server
|
||||||
|
community.general.timezone:
|
||||||
|
name: "{{ system_timezone }}"
|
||||||
|
when: (system_timezone is defined) and (system_timezone != "Your/Timezone")
|
||||||
|
|
||||||
|
- name: Enable IPv4 forwarding
|
||||||
|
ansible.posix.sysctl:
|
||||||
|
name: net.ipv4.ip_forward
|
||||||
|
value: "1"
|
||||||
|
state: present
|
||||||
|
reload: yes
|
||||||
|
|
||||||
|
- name: Enable IPv6 forwarding
|
||||||
|
ansible.posix.sysctl:
|
||||||
|
name: net.ipv6.conf.all.forwarding
|
||||||
|
value: "1"
|
||||||
|
state: present
|
||||||
|
reload: yes
|
||||||
|
|
||||||
|
- name: Enable IPv6 router advertisements
|
||||||
|
ansible.posix.sysctl:
|
||||||
|
name: net.ipv6.conf.all.accept_ra
|
||||||
|
value: "2"
|
||||||
|
state: present
|
||||||
|
reload: yes
|
||||||
|
|
||||||
|
- import_tasks: packages.yml
|
||||||
|
name: Install base packages
|
||||||
|
tags:
|
||||||
|
- packages
|
||||||
|
|
||||||
|
- import_tasks: mounts.yml
|
||||||
|
name: Mount NFS shares
|
||||||
|
tags:
|
||||||
|
- nfs
|
||||||
19
ansible/k3s/roles/base/tasks/mounts.yml
Normal file
19
ansible/k3s/roles/base/tasks/mounts.yml
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
---
|
||||||
|
- name: Create mountpoint directory
|
||||||
|
file:
|
||||||
|
path: /nfs/nas1
|
||||||
|
state: directory
|
||||||
|
owner: 10000
|
||||||
|
group: 10000
|
||||||
|
|
||||||
|
- name: Mount nas1 share
|
||||||
|
mount:
|
||||||
|
fstype: nfs
|
||||||
|
src: zeruel.fuku:/mnt/pool1/nas1
|
||||||
|
path: /nfs/nas1
|
||||||
|
state: mounted
|
||||||
|
fstab: /etc/fstab
|
||||||
|
opts: _netdev,nofail,tcp,bg,retrans=2,timeo=150,rsize=32768,wsize=32768,noresvport
|
||||||
|
backup: true
|
||||||
|
become: yes
|
||||||
|
become_user: root
|
||||||
17
ansible/k3s/roles/base/tasks/packages.yml
Normal file
17
ansible/k3s/roles/base/tasks/packages.yml
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
- name: Install base packages
|
||||||
|
apt:
|
||||||
|
name: "{{ item }}"
|
||||||
|
state: present
|
||||||
|
update_cache: yes
|
||||||
|
loop:
|
||||||
|
- qemu-guest-agent
|
||||||
|
- git
|
||||||
|
- tmux
|
||||||
|
- vim
|
||||||
|
- curl
|
||||||
|
- nfs-common
|
||||||
|
|
||||||
|
- name: Update all packages
|
||||||
|
apt:
|
||||||
|
upgrade: dist
|
||||||
|
update_cache: yes
|
||||||
17
ansible/k3s/roles/k3s/tasks/agent.yml
Normal file
17
ansible/k3s/roles/k3s/tasks/agent.yml
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
---
|
||||||
|
- name: Create rancher folder
|
||||||
|
file:
|
||||||
|
state: directory
|
||||||
|
path: /etc/rancher/k3s
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 755
|
||||||
|
|
||||||
|
- name: Copy k3s config file
|
||||||
|
template:
|
||||||
|
src: agent.config.yaml.j2
|
||||||
|
dest: /etc/rancher/k3s/config.yaml
|
||||||
|
mode: 600
|
||||||
|
|
||||||
|
- name: Install k3s agent
|
||||||
|
shell: "bash /tmp/k3s.install.sh agent"
|
||||||
19
ansible/k3s/roles/k3s/tasks/copy-kubeconfig.yml
Normal file
19
ansible/k3s/roles/k3s/tasks/copy-kubeconfig.yml
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
---
|
||||||
|
- name: Create .kube directory
|
||||||
|
become: yes
|
||||||
|
file:
|
||||||
|
path: /home/ci/.kube
|
||||||
|
state: directory
|
||||||
|
mode: '0755'
|
||||||
|
owner: ci
|
||||||
|
group: ci
|
||||||
|
|
||||||
|
- name: Copy kubeconfig
|
||||||
|
copy:
|
||||||
|
remote_src: true
|
||||||
|
src: /etc/rancher/k3s/k3s.yaml
|
||||||
|
dest: /home/ci/.kube/config
|
||||||
|
mode: 0644
|
||||||
|
owner: ci
|
||||||
|
group: ci
|
||||||
|
become: yes
|
||||||
7
ansible/k3s/roles/k3s/tasks/download.yml
Normal file
7
ansible/k3s/roles/k3s/tasks/download.yml
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: Download k3s script
|
||||||
|
get_url:
|
||||||
|
url: https://get.k3s.io
|
||||||
|
dest: /tmp/k3s.install.sh
|
||||||
|
|
||||||
14
ansible/k3s/roles/k3s/tasks/main.yml
Normal file
14
ansible/k3s/roles/k3s/tasks/main.yml
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
- import_tasks: download.yml
|
||||||
|
name: Download install script
|
||||||
|
|
||||||
|
- import_tasks: master.yml
|
||||||
|
name: Install master node
|
||||||
|
when: inventory_hostname in groups["k3s_masters"]
|
||||||
|
|
||||||
|
- import_tasks: agent.yml
|
||||||
|
name: Install agent node
|
||||||
|
when: inventory_hostname in groups["k3s_agents"]
|
||||||
|
|
||||||
|
- import_tasks: copy-kubeconfig.yml
|
||||||
|
name: Copy kubeconfig
|
||||||
|
when: inventory_hostname in groups["k3s_masters"] and is_first_master
|
||||||
19
ansible/k3s/roles/k3s/tasks/master.yml
Normal file
19
ansible/k3s/roles/k3s/tasks/master.yml
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
---
|
||||||
|
- name: Create rancher folder
|
||||||
|
file:
|
||||||
|
state: directory
|
||||||
|
path: /etc/rancher/k3s
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 755
|
||||||
|
|
||||||
|
- name: Copy k3s config file
|
||||||
|
template:
|
||||||
|
src: master.config.yaml.j2
|
||||||
|
dest: /etc/rancher/k3s/config.yaml
|
||||||
|
mode: 600
|
||||||
|
vars:
|
||||||
|
etcd_snapshot_dir: "/nfs/nas1/backups/{{ short_hostname }}"
|
||||||
|
|
||||||
|
- name: Install k3s master
|
||||||
|
command: bash /tmp/k3s.install.sh
|
||||||
2
ansible/k3s/roles/k3s/templates/agent.config.yaml.j2
Normal file
2
ansible/k3s/roles/k3s/templates/agent.config.yaml.j2
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
token: {{ cluster_token }}
|
||||||
|
server: https://{{ tls_san }}:6443
|
||||||
12
ansible/k3s/roles/k3s/templates/master.config.yaml.j2
Normal file
12
ansible/k3s/roles/k3s/templates/master.config.yaml.j2
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
tls-san:
|
||||||
|
- {{ inventory_hostname }}
|
||||||
|
- {{ tls_san }}
|
||||||
|
node-label:
|
||||||
|
- name={{ inventory_hostname }}
|
||||||
|
token: "{{ cluster_token }}"
|
||||||
|
etcd-snapshot-dir: {{ etcd_snapshot_dir }}
|
||||||
|
{% if is_first_master %}
|
||||||
|
cluster-init: "{{ is_first_master }}"
|
||||||
|
{% else %}
|
||||||
|
server: https://{{ first_master_hostname }}:6443
|
||||||
|
{% endif %}
|
||||||
4
ansible/k3s/roles/k3s/vars/main.yml
Normal file
4
ansible/k3s/roles/k3s/vars/main.yml
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
k3s_version: "v1.27.4+k3s1"
|
||||||
|
tls_san: "{{ lookup('env', 'ANSIBLE_TLS_SAN') | mandatory }}"
|
||||||
|
cluster_token: "{{ lookup('env', 'ANSIBLE_CLUSTER_TOKEN') | mandatory }}"
|
||||||
2
ansible/k3s/sample.env
Normal file
2
ansible/k3s/sample.env
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
ANSIBLE_K3S_CLUSTER_TOKEN=
|
||||||
|
ANSIBLE_K3S_TLS_SAN=
|
||||||
Loading…
Add table
Add a link
Reference in a new issue