comparison multikube.py @ 288:3af02e24eaf9

minor
author drewp@bigasterisk.com
date Sun, 21 Apr 2024 17:01:13 -0700
parents 375515ab60ba
children 65e28d2e0cd8
comparison
equal deleted inserted replaced
287:c094d23b7943 288:3af02e24eaf9
1 # leave kube.py running single-host and try again 1 # leave kube.py running single-host and try again
2 import os
3
4 from pyinfra import host 2 from pyinfra import host
5 from pyinfra.facts.files import FindInFile 3 from pyinfra.facts.server import Arch
6 from pyinfra.facts.server import Arch, LinuxDistribution
7 from pyinfra.operations import files, server, systemd 4 from pyinfra.operations import files, server, systemd
8 5
9 is_pi = host.get_fact(LinuxDistribution)['name'] in ['Debian', 'Raspbian GNU/Linux'] 6 from multikube_config import (
7 admin_from,
8 k3s_version,
9 nodes,
10 server_ip,
11 server_node,
12 skaffold_version,
13 )
10 14
11 from multikube_config import server_node, server_ip, nodes, admin_from, k3s_version, skaffold_version
12 15
13 def install_k3s(): 16 def install_k3s():
14 tail = 'k3s' if host.get_fact(Arch) == 'x86_64' else 'k3s-armhf' 17 tail = 'k3s' if host.get_fact(Arch) == 'x86_64' else 'k3s-armhf'
15 files.download( 18 files.download(
16 src=f'https://github.com/rancher/k3s/releases/download/{k3s_version}/{tail}', 19 src=f'https://github.com/rancher/k3s/releases/download/{k3s_version}/{tail}',
20 mode='755', 23 mode='755',
21 cache_time=43000, 24 cache_time=43000,
22 #force=True, # to get a new version 25 #force=True, # to get a new version
23 ) 26 )
24 27
28
25 def install_k3sup(): 29 def install_k3sup():
26 files.download( 30 files.download(src='https://github.com/alexellis/k3sup/releases/download/0.12.0/k3sup',
27 src='https://github.com/alexellis/k3sup/releases/download/0.12.0/k3sup', 31 dest='/usr/local/bin/k3sup',
28 dest='/usr/local/bin/k3sup', 32 mode='755')
29 mode='755'
30 )
31 # then do like: 33 # then do like:
32 # root@slash:/home/drewp# ./k3sup install --ip 10.2.0.84 --k3s-extra-args '--no-deploy traefik' --ssh-key /root/.ssh/id_ecdsa 34 # root@slash:/home/drewp# ./k3sup install --ip 10.2.0.84 --k3s-extra-args '--no-deploy traefik' --ssh-key /root/.ssh/id_ecdsa
33 # root@slash:/home/drewp# ./k3sup join --ip 10.2.0.23 --server-ip 10.2.0.84 --ssh-key /root/.ssh/id_ecdsa 35 # root@slash:/home/drewp# ./k3sup join --ip 10.2.0.23 --server-ip 10.2.0.84 --ssh-key /root/.ssh/id_ecdsa
34 # but it doesn't seem to make networking go any better 36 # but it doesn't seem to make networking go any better
37
35 38
36 def install_skaffold(): 39 def install_skaffold():
37 files.download(src=f'https://storage.googleapis.com/skaffold/releases/{skaffold_version}/skaffold-linux-amd64', 40 files.download(src=f'https://storage.googleapis.com/skaffold/releases/{skaffold_version}/skaffold-linux-amd64',
38 dest='/usr/local/bin/skaffold', 41 dest='/usr/local/bin/skaffold',
39 user='root', 42 user='root',
53 56
54 57
55 def host_prep(): 58 def host_prep():
56 server.sysctl(key='net.ipv4.ip_forward', value="1", persist=True) 59 server.sysctl(key='net.ipv4.ip_forward', value="1", persist=True)
57 server.sysctl(key='net.ipv6.conf.all.forwarding', value="1", persist=True) 60 server.sysctl(key='net.ipv6.conf.all.forwarding', value="1", persist=True)
58 server.sysctl(key='net.ipv6.conf.all.disable_ipv6' , value='1',persist=True) 61 server.sysctl(key='net.ipv6.conf.all.disable_ipv6', value='1', persist=True)
59 server.sysctl(key='fs.inotify.max_user_instances', value='8192', persist=True) 62 server.sysctl(key='fs.inotify.max_user_instances', value='8192', persist=True)
60 server.sysctl(key='fs.inotify.max_user_watches', value='524288', persist=True) 63 server.sysctl(key='fs.inotify.max_user_watches', value='524288', persist=True)
61 64
62 # https://sysctl-explorer.net/net/ipv4/rp_filter/ 65 # https://sysctl-explorer.net/net/ipv4/rp_filter/
63 #none, strict, loose = 0, 1, 2 66 #none, strict, loose = 0, 1, 2
80 files.template( 83 files.template(
81 src=f'templates/kube/{which_conf}', 84 src=f'templates/kube/{which_conf}',
82 dest='/etc/k3s_config.yaml', 85 dest='/etc/k3s_config.yaml',
83 server_ip=server_ip, 86 server_ip=server_ip,
84 token=token, 87 token=token,
85 wg_ip=host.host_data['mk_addr'],#wireguard_address'], 88 wg_ip=host.host_data['mk_addr'], #wireguard_address'],
86 ) 89 )
87 90
88 files.template( 91 files.template(
89 src='templates/kube/k3s.service.j2', 92 src='templates/kube/k3s.service.j2',
90 dest=f'/etc/systemd/system/{service_name()}', 93 dest=f'/etc/systemd/system/{service_name()}',
91 role=role, 94 role=role,
92 ) 95 )
93 systemd.service(service=service_name(), daemon_reload=True, enabled=True, restarted=True) 96 systemd.service(service=service_name(), daemon_reload=True, enabled=True, restarted=True)
94 97
95 if host.name == server_node: 98 if host.name == server_node:
96 files.get(src='/var/lib/rancher/k3s/server/node-token', dest='/tmp/k3s-token') 99 files.get(src='/var/lib/rancher/k3s/server/node-token', dest='/tmp/k3s-token')
97 files.get(src='/etc/rancher/k3s/k3s.yaml', dest='/tmp/k3s-yaml') 100 files.get(src='/etc/rancher/k3s/k3s.yaml', dest='/tmp/k3s-yaml')
98 101
99 102
100 if host.name in nodes + [server_node]: 103 if host.name in nodes + [server_node]:
101 host_prep() 104 host_prep()
102 files.directory(path='/etc/rancher/k3s') 105 files.directory(path='/etc/rancher/k3s')
118 121
119 if host.name != server_node: 122 if host.name != server_node:
120 files.put(src='/tmp/k3s-yaml', dest='/etc/rancher/k3s/k3s.yaml') 123 files.put(src='/tmp/k3s-yaml', dest='/etc/rancher/k3s/k3s.yaml')
121 124
122 files.file(path='/etc/rancher/k3s/k3s.yaml', user='root', group='drewp', mode='640') 125 files.file(path='/etc/rancher/k3s/k3s.yaml', user='root', group='drewp', mode='640')
123 server.shell(f"kubectl config set-cluster default --server=https://{server_ip}:6443 --kubeconfig=/etc/rancher/k3s/k3s.yaml") 126 server.shell(
127 commands=f"kubectl config set-cluster default --server=https://{server_ip}:6443 --kubeconfig=/etc/rancher/k3s/k3s.yaml")