Add nodes
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Kasper Juul Hermansen 2022-02-19 21:29:38 +01:00
parent 4ee8043bb8
commit 4da3293569
Signed by: kjuulh
GPG Key ID: 0F95C140730F2F23
4 changed files with 85 additions and 4 deletions

View File

@ -0,0 +1,15 @@
---
- name: Copy K3s service file
template:
src: "k3s.service.j2"
dest: "{{ systemd_dir }}/k3s-node.service"
owner: root
group: root
mode: 0755
- name: Enable and check K3s service
systemd:
name: k3s-node
daemon_reload: yes
state: restarted
enabled: yes

View File

@ -0,0 +1,24 @@
[Unit]
Description=Lightweight Kubernetes
Documentation=https://k3s.io
After=network-online.target
[Service]
Type=notify
ExecStartPre=-/sbin/modprobe br_netfilter
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/k3s agent --server https://{{ master_ip }}:6443 --token {{ hostvars[groups['serverctl_master_hosts'][0]]['token'] }} {{ extra_agent_args | default("") }}
KillMode=process
Delegate=yes
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
TimeoutStartSec=0
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target

View File

@ -1,11 +1,17 @@
variable "serverctl_master_count" {
default = 2
}
variable "serverctl_node_count" {
default = 2
}
resource "hcloud_placement_group" "serverctl_master" { resource "hcloud_placement_group" "serverctl_master" {
name = "serverctl_master_group" name = "serverctl_master_group"
type = "spread" type = "spread"
} }
variable "serverctl_master_count" {
default = 1
}
resource "hcloud_server" "serverctl_master" { resource "hcloud_server" "serverctl_master" {
count = var.serverctl_master_count count = var.serverctl_master_count
@ -34,10 +40,43 @@ resource "hcloud_server" "serverctl_master" {
} }
} }
resource "hcloud_placement_group" "serverctl_node" {
name = "serverctl_node_group"
type = "spread"
}
resource "hcloud_server" "serverctl_node" {
count = var.serverctl_node_count
name = "serverctl-node-${count.index}"
image = "debian-11"
server_type = "cx11"
ssh_keys = [
var.hcloud_serverctl_ssh_key_id
]
placement_group_id = hcloud_placement_group.serverctl_node.id
lifecycle {
create_before_destroy = true
}
provisioner "remote-exec" {
inline = ["sudo apt update", "sudo apt install python3 -y", "echo Done!"]
connection {
host = self.ipv4_address
type = "ssh"
user = "root"
private_key = file(var.pvt_key)
}
}
}
resource "local_file" "hosts_cfg" { resource "local_file" "hosts_cfg" {
content = templatefile("${path.module}/templates/hosts.tpl", content = templatefile("${path.module}/templates/hosts.tpl",
{ {
serverctl_masters = hcloud_server.serverctl_master.*.ipv4_address serverctl_masters = hcloud_server.serverctl_master.*.ipv4_address
serverctl_nodes = hcloud_server.serverctl_node.*.ipv4_address
} }
) )
filename = "ansible/inventory/hosts.cfg" filename = "ansible/inventory/hosts.cfg"

View File

@ -4,7 +4,10 @@ ${ip}
%{ endfor ~} %{ endfor ~}
[serverctl_node_hosts] [serverctl_node_hosts]
%{ for ip in serverctl_nodes ~}
${ip}
%{ endfor ~}
[serverctl_cluster:children] [serverctl_cluster:children]
serverctl_master_hosts serverctl_master_hosts
serverctl_node_hosts serverctl_node_hosts