Mercurial > code > home > repos > infra
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") |