Mit Ventoy den Multi-OS-USB-Stick machen

14 Nov 2022 Lesezeit: ~1 Minute

Beim letzten Stöbern durch die Timeline bin ich auf ein vielversprechendes kleines Helferlein gestoßen. Ich komme wohl nie aus dem Alter heraus, an dem mich solche Dinge triggern.

Dsa Tool um das es geht nennt sich Ventory und ist dafür gemacht diverse Linux Distributionen auf einen Stick zu packen. Warum will man das? Weil man vielleicht zu den armen Säcken gehört, die anderen Helfen müssen/sollen/wollen und die dann GRML, CloneZilla, Gparted oder was auch immer benutzen möchten. Um sich dann aber die USB-Sticks zu sparen, macht es ja durchaus Sinn all diese Werkzeuge gesammelt bereit zu stellen.

Ventory sieht vielversprechend aus, einfach zu benutzen und zu funktionieren. Ich denke ich werde mir mal wieder so einen Notfallstick bereitstellen - der nächste Patient kommt bestimmt.

Eine Anleitung, die nicht meine ist, kann man sich hier auch noch ansehen! Quellen und Links:


Mac OSX auf Linux - Gaaaaanz einfach

25 Apr 2022 Lesezeit: 2 Minuten

Ich finde ja, mittlerweile ist ein Linux das universale System geworden. Wünsche äußern, alles einrichten, klappe halten. Dennoch gibt es nach wie vor nicht alle Tools die unter einem Linux System gut lauffähig gebracht werden können. Also braucht man eine VM mit Windows - oder sogar Mac OSX. Egal, ob es sich dabei um Catalina, Mojave, Big Sur oder Monterey handelt.

Allerdings ist es bei Apple nicht ganz einfach wie mit Windows eine VM zu laufen zu bekommen.

Das ging (Gott sei Dank) auch ein paar anderen Leuten auf den Zeiger und so kamen mehere Projekte ans Licht der Sonne, die einem das Einrichten auch gleich freundlich abnehmen:

Alle basieren auf der Idee sich ein Qemu Image zu basteln, was dann mit HIlfe von KVM betrieben wird und so eine vollständige Mac Umgebung aufbaut.

Ein valider Ansatz wie ich finde und zum Testen oder für das eine oder andere notwendige Tool bestimmt Hilfreich. Aktuell bevorzuge ich OSX-KVM, weil es mir mehr Möglichkeiten gibt.

Bitte achtet nur darauf, dass es sich um ein Kravattenträger-OS handelt, und Kravattenträger sind in der Regel unflexibel und komisch, sodass sie mit Dingen wie Lizenzen und Vereinbarungen kommen und man ggf ärger bekommt, wenn man solche Projekte falsch benutzt.


RKE Node Provisioning

4 Nov 2020 Lesezeit: 6 Minuten

Ich arbeite ja gern mit verteilten Systemen und auch das ganze provisionierungszeug macht mir eine Menge Spaß. Weil das aber immer Fehleranfällig ist, wenn man nicht schon in einer durchgestylen Umgebung arbeitet, mache ich mir beim Aufbau einer solchen immer ein paar wiederverwendbare Notitzen in Form eines "quick and dirty" Skriptes.

So hat es sich mittlerweile als ganz brauchbar herausgestellt die folgenden Schritte beim Setup eines RKE Nodes für die Nutzung von Kubernetes zu gehen:

install needed software

yum upgrade -y
yum install -y arptables.x86_64 ebtables.x86_64 nscd.x86_64 iptables.x86_64 nftables.x86_64 conntrack-tools.x86_64
systemctl start nscd nftables
systemctl enable nscd nftables

create rke user

useradd -m -G docker rke
passwd rke 
su - rke
mkdir $HOME/.ssh
chmod 700 $HOME/.ssh
touch $HOME/.ssh/authorized_keys
echo "PLEASE PUT YOUR SSH KEY HERE" >> /home/rke/.ssh/authorized_keys

create special users for etcd. Ensure to use the id in the cluster configuration

Dieser Schritt ist nur für Knoten notwendig die etcd hosten werden.

groupadd --gid 52034 etcd
useradd --comment "etcd service account" --uid 52034 --gid 52034 etcd

edit /etc/hosts

Sofern vorhanden richte ich immer ganz gern die wichtigsten Knoten in einem Cluster so ein, das sie auch im Falle eines DNS Ausfalls miteinander sprechen können .

cat << EOF > /etc/hosts

111.222.000.111 node1 node1.localdomain 111.222.000.112 node2 node3.localdomain 111.222.000.113 node3 node3.localdomain 127.0.0.1 localhost localhost.local

EOF

Kublet hardening

cat << EOF > /etc/sysctl.d/90-kubelet.conf
vm.overcommit_memory=1
vm.panic_on_oom=0
kernel.panic=10
kernel.panic_on_oops=1
kernel.keys.root_maxbytes=25000000
EOF

sysctl -p /etc/sysctl.d/90-kubelet.conf

needed konfiguration für k8s

Wenn man der offizielle Doku folgt, dann ist das hier gar nicht so unwichtig

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system

disable IPv6

Ich brauche in den Netzwerken in denen ich arbeite kein IPv6. Daher kommt raus was keine Miete zahlt.

cat <<EOF | sudo tee /etc/sysctl.d/disable-ipv6.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
EOF

sudo sysctl -p -f /etc/sysctl.d/disable-ipv6.conf

set timezone

timedatectl set-timezone "Europe/Berlin"

laden der notwendigen module

Die Module werden immer wieder gern vergessen. Daher habe ich sie immer in einem meiner Skripte mit dabei.

cat <<EOF | sudo tee /etc/modules-load.d/rke.conf
ip6_udp_tunnel
ip_set
ip_set_hash_ip
ip_set_hash_net
iptable_mangle
iptable_raw
nf_conntrack
veth
vxlan
xt_comment
xt_mark
xt_multiport
xt_nat
xt_recent
xt_set
xt_statistic
xt_tcpudp
nf_conntrack
EOF

for i in $(cat /etc/modules-load.d/rke.conf)
  do 
    modprobe $i
  done

Vertrauen ist gut - Kontrolle ist besser

    for module in br_netfilter ip6_udp_tunnel ip_set ip_set_hash_ip ip_set_hash_net iptable_filter iptable_nat iptable_mangle iptable_raw nf_conntrack_netlink nf_conntrack  nf_defrag_ipv4 nf_nat nf_nat_ipv4 nfnetlink udp_tunnel veth vxlan x_tables xt_addrtype xt_conntrack xt_comment xt_mark xt_multiport xt_nat xt_recent xt_set  xt_statistic xt_tcpudp;
        do
            if ! lsmod | grep -q $module; then
                echo "module $module is not present";
            fi;
        done

install Docker via the rancher provided skript

Rancher hat ja schon alles für eine einfache Installation vorbereitet. Daher nutze ich auch einfach deren Skript zur Installation von Docker.

curl https://raw.githubusercontent.com/rancher/install-docker/master/19.03.12.sh | sh
systemctl enable docker
systemctl stop docker
systemctl start docker

add firewall rules

# For etcd nodes, run the following commands:
firewall-cmd --permanent --add-port=2376/tcp
firewall-cmd --permanent --add-port=2379/tcp
firewall-cmd --permanent --add-port=2380/tcp
firewall-cmd --permanent --add-port=8472/udp
firewall-cmd --permanent --add-port=9099/tcp
firewall-cmd --permanent --add-port=10250/tcp

# For control plane nodes, run the following commands:
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=2376/tcp
firewall-cmd --permanent --add-port=6443/tcp
firewall-cmd --permanent --add-port=8472/udp
firewall-cmd --permanent --add-port=9099/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10254/tcp
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd --permanent --add-port=30000-32767/udp

# For worker nodes, run the following commands:
firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=2376/tcp
firewall-cmd --permanent --add-port=8472/udp
firewall-cmd --permanent --add-port=9099/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10254/tcp
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd --permanent --add-port=30000-32767/udp
firewall-cmd --reload