Compare commits
5 commits
8c4615b2c7
...
739da8ac90
Author | SHA1 | Date | |
---|---|---|---|
739da8ac90 | |||
98de636298 | |||
c3405a7063 | |||
7b058f6304 | |||
23edc91bab |
11 changed files with 60 additions and 33 deletions
|
@ -1 +1,3 @@
|
||||||
# Ansible
|
# Ansible
|
||||||
|
|
||||||
|
Here you'll find Ansible playbooks and roles for the JILITS infrastructure 😎
|
||||||
|
|
3
playbooks/kubernetes/README.md
Normal file
3
playbooks/kubernetes/README.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Kubernetes playbook
|
||||||
|
|
||||||
|
This is a work-in-progress and currently only works with Vagrant, as the setup is being tested there for the moment before moving onto the real hardware.
|
24
playbooks/kubernetes/Vagrantfile
vendored
24
playbooks/kubernetes/Vagrantfile
vendored
|
@ -1,6 +1,6 @@
|
||||||
IMAGE_NAME = "bento/ubuntu-22.04"
|
IMAGE_NAME = "bento/ubuntu-22.04"
|
||||||
CONTROLPLANE_IP = "192.168.56.11"
|
CONTROL_PLANES = 1
|
||||||
NODES = 1
|
NODES = 0
|
||||||
|
|
||||||
Vagrant.configure("2") do |config|
|
Vagrant.configure("2") do |config|
|
||||||
config.ssh.insert_key = false
|
config.ssh.insert_key = false
|
||||||
|
@ -10,19 +10,21 @@ Vagrant.configure("2") do |config|
|
||||||
v.cpus = 2
|
v.cpus = 2
|
||||||
end
|
end
|
||||||
|
|
||||||
config.vm.define "controlplane" do |master|
|
(1..CONTROL_PLANES).each do |i|
|
||||||
master.vm.box = IMAGE_NAME
|
config.vm.define "control-plane-#{i}" do |control_plane|
|
||||||
master.vm.network "private_network", ip: CONTROLPLANE_IP
|
control_plane.vm.box = IMAGE_NAME
|
||||||
master.vm.hostname = "controlplane"
|
control_plane.vm.network "private_network", ip: "192.168.56.#{10 + i}"
|
||||||
master.vm.provision "ansible" do |ansible|
|
control_plane.vm.hostname = "control-plane-#{i}"
|
||||||
|
control_plane.vm.provision "ansible" do |ansible|
|
||||||
ansible.playbook = "playbook.yaml"
|
ansible.playbook = "playbook.yaml"
|
||||||
ansible.extra_vars = {
|
ansible.extra_vars = {
|
||||||
cluster_name: "gerar",
|
cluster_name: "gerar",
|
||||||
node_ip: CONTROLPLANE_IP,
|
node_ip: "192.168.56.#{10 + i}",
|
||||||
is_controlplane: true,
|
is_control_plane: true,
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
(1..NODES).each do |i|
|
(1..NODES).each do |i|
|
||||||
config.vm.define "node-#{i}" do |node|
|
config.vm.define "node-#{i}" do |node|
|
||||||
|
@ -34,8 +36,8 @@ Vagrant.configure("2") do |config|
|
||||||
ansible.extra_vars = {
|
ansible.extra_vars = {
|
||||||
cluster_name: "gerar",
|
cluster_name: "gerar",
|
||||||
node_ip: "192.168.56.#{20 + i}",
|
node_ip: "192.168.56.#{20 + i}",
|
||||||
controlplane_ip: CONTROLPLANE_IP,
|
is_control_plane: false,
|
||||||
is_controlplane: false,
|
control_plane_endpoint: "192.168.56.11",
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
pod_network_cidr: "10.254.0.0/16"
|
|
||||||
service_cidr: "10.255.0.0/16"
|
|
||||||
kubeadmin_config: /etc/kubernetes/admin.conf
|
|
|
@ -1,2 +1,26 @@
|
||||||
gerar:
|
all:
|
||||||
hosts: []
|
children:
|
||||||
|
gerar:
|
||||||
|
hosts:
|
||||||
|
matthew.gerar.jilits.se:
|
||||||
|
mark.gerar.jilits.se:
|
||||||
|
luke.gerar.jilits.se:
|
||||||
|
vars:
|
||||||
|
ansible_user: servant
|
||||||
|
cluster_name: "gerar"
|
||||||
|
k8s_version: 1.26
|
||||||
|
pod_network_cidr: "10.254.0.0/16"
|
||||||
|
service_cidr: "10.255.0.0/16"
|
||||||
|
control_planes:
|
||||||
|
hosts:
|
||||||
|
matthew.gerar.jilits.se:
|
||||||
|
vars:
|
||||||
|
is_control_plane: true
|
||||||
|
nodes:
|
||||||
|
hosts:
|
||||||
|
mark.gerar.jilits.se:
|
||||||
|
luke.gerar.jilits.se:
|
||||||
|
vars:
|
||||||
|
is_control_plane: false
|
||||||
|
vars:
|
||||||
|
kubeadmin_config: /etc/kubernetes/admin.conf
|
||||||
|
|
|
@ -7,13 +7,13 @@
|
||||||
- include_role:
|
- include_role:
|
||||||
name: kubernetes/any
|
name: kubernetes/any
|
||||||
- include_role:
|
- include_role:
|
||||||
name: kubernetes/controlplane
|
name: kubernetes/control_plane
|
||||||
when: is_controlplane
|
when: is_control_plane
|
||||||
- include_role:
|
- include_role:
|
||||||
name: kubernetes/node
|
name: kubernetes/node
|
||||||
when: not is_controlplane
|
when: not is_control_plane
|
||||||
|
|
||||||
# - hosts: controlplane
|
# - hosts: control_plane
|
||||||
# gather_facts: yes
|
# gather_facts: yes
|
||||||
# become: yes
|
# become: yes
|
||||||
# tasks:
|
# tasks:
|
||||||
|
|
|
@ -84,8 +84,7 @@
|
||||||
- name: Setup CRI-O
|
- name: Setup CRI-O
|
||||||
become: true
|
become: true
|
||||||
vars:
|
vars:
|
||||||
os: xUbuntu_22.04 # fetch this from os-release
|
os: xUbuntu_{{ ansible_distribution_version}}
|
||||||
version: 1.24
|
|
||||||
key_dir: /usr/share/keyrings
|
key_dir: /usr/share/keyrings
|
||||||
keys:
|
keys:
|
||||||
{
|
{
|
||||||
|
@ -96,13 +95,13 @@
|
||||||
},
|
},
|
||||||
"libcontainers-crio":
|
"libcontainers-crio":
|
||||||
{
|
{
|
||||||
"url": "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/{{ version }}/{{ os }}/Release.key",
|
"url": "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/{{ k8s_version }}/{{ os }}/Release.key",
|
||||||
"name": "libcontainers-crio-archive-keyring",
|
"name": "libcontainers-crio-archive-keyring",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
repos:
|
repos:
|
||||||
- deb [signed-by={{ key_dir }}/libcontainers-archive-keyring.gpg] https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/{{ os }}/ /
|
- deb [signed-by={{ key_dir }}/libcontainers-archive-keyring.gpg] https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/{{ os }}/ /
|
||||||
- deb [signed-by={{ key_dir }}/libcontainers-crio-archive-keyring.gpg] https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/{{ version }}/{{ os }}/ /
|
- deb [signed-by={{ key_dir }}/libcontainers-crio-archive-keyring.gpg] https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/{{ k8s_version }}/{{ os }}/ /
|
||||||
block:
|
block:
|
||||||
- name: Download signing keys
|
- name: Download signing keys
|
||||||
with_dict: "{{ keys }}"
|
with_dict: "{{ keys }}"
|
||||||
|
|
|
@ -7,15 +7,15 @@
|
||||||
path: /etc/hosts
|
path: /etc/hosts
|
||||||
state: present
|
state: present
|
||||||
regexp: '^\d+\.\d+\.\d+\.\d+\ .*-cluster-endpoint$'
|
regexp: '^\d+\.\d+\.\d+\.\d+\ .*-cluster-endpoint$'
|
||||||
line: "{{ controlplane_ip }} {{ cluster_name }}-cluster-endpoint"
|
line: "{{ control_plane_endpoint }} {{ cluster_name }}-cluster-endpoint"
|
||||||
|
|
||||||
- name: Obtain join command from controlplane
|
- name: Obtain join command from control_plane
|
||||||
ansible.builtin.command: "kubeadm token create --print-join-command"
|
ansible.builtin.command: "kubeadm token create --print-join-command"
|
||||||
when: inventory_hostname != "controlplane"
|
when: inventory_hostname != "control_plane"
|
||||||
register: join_cmd
|
register: join_cmd
|
||||||
delegate_to: "{{ item }}"
|
delegate_to: "{{ item }}"
|
||||||
delegate_facts: true
|
delegate_facts: true
|
||||||
with_items: ["controlplane"]
|
with_items: ["control_plane"]
|
||||||
|
|
||||||
- name: Execute join command
|
- name: Execute join command
|
||||||
become: true
|
become: true
|
||||||
|
|
Loading…
Reference in a new issue