From 668d66c5835b5388a1342a5e927de75e38f806bc Mon Sep 17 00:00:00 2001 From: Oriol Date: Mon, 13 Mar 2023 08:32:24 +0000 Subject: [PATCH] Slight modifications Improved README.md --- README.md | 108 ++++- inventory.yaml | 8 +- ksetup/kubeadm-join.command | 1 - ksetup/playbook.yaml | 13 +- ksetup/slave_tasks.yaml | 8 - ksetup/{end_tasks.yaml => tasks_end.yaml} | 10 +- .../{master_tasks.yaml => tasks_master.yaml} | 170 ++++---- ...ode_tasks.yaml => tasks_prepare_node.yaml} | 402 +++++++++--------- ksetup/tasks_slave.yaml | 8 + main_issues.md | 2 +- 10 files changed, 404 insertions(+), 326 deletions(-) delete mode 100755 ksetup/slave_tasks.yaml rename ksetup/{end_tasks.yaml => tasks_end.yaml} (87%) rename ksetup/{master_tasks.yaml => tasks_master.yaml} (96%) rename ksetup/{set_node_tasks.yaml => tasks_prepare_node.yaml} (95%) create mode 100755 ksetup/tasks_slave.yaml diff --git a/README.md b/README.md index 5638cef..3535430 100644 --- a/README.md +++ b/README.md @@ -12,47 +12,122 @@ arm_initial_setup.yaml: standalone playbook to normalize the initialization of a run.sh: placeholder script used for testing ksetup/: + - playbook.yaml + - tasks_prepare_node.yaml + - tasks_master.yaml + - tasks_slave.yaml + - tasks_end.yaml + - kubeadm-join.command + +inventory.yaml: Example inventory ``` +## Inventory.yaml + +Example inventory. + +Contains 2 groups, `masters` and `slaves`. + +Each group have the variable `is_master` configured. + +For more info regarding Ansible Inventory, refer to their [documentation regarding the topic](https://docs.ansible.com/ansible/latest/inventory_guide/index.html). + ## arm_initial_setup.yaml It will: -- Set the loacale for ROOT user -- Set the language for ROOT user -- Create `wheel` group -- Add `wheel` group to sudoers (using password) +- Set the `loacale` for the ROOT user +- Set the `language` for the ROOT user +- Create the `wheel` group +- Add the `wheel` group to sudoers (using password) - Add a new user with its password - Add the new user to the `wheel` group -- Change ROOT password -- Disable SSH to the ROOT user -- Executes `sleep 1 && dhclient -r && dhclient && reboot`. The `dhclient -r` it's for my own usage so **modify it if it bothers you**. +- Change the ROOT password +- Disable SSH login to the ROOT user +- Executes `sleep 1 && dhclient -r && dhclient && reboot`. The `dhclient` is for my own usage so **modify it if it bothers you**. +### Vars + +A reminder that the point of this script, is to normalize the process of setting up a **fresh** ARMBIAN OS. + +```yaml +# Connect +ansible_user: User used to connect +ansible_password: Password used to connect +ansible_become_password: Password used to execute `sudo` + +# New values +## Users +new_user_name: Username to create/modify +new_user_pass: Password for the used to create/modify +new_root_pass: New password for root + +## Locales +new_locale: New locale desired +new_language: New language desired +``` ## ksetup ### playbook.yaml -Used to "orchestrate" the process and call the rest of the **task** playbooks. +Used to "orchestrate" the process and call the rest of the **task** playbooks. +#### Vars +```yaml +# Testing purposes +ansible_user: User used to connect +ansible_password: Password used to connect +ansible_become_password: Password used to execute `sudo` + +# Actual vars +set_hostname: New hostname for the device, by default will obtain it's values from the variable `ansible_host` aka. the URL specified to connect to such device. +is_master: This variable determines which playbooks will run. + +# Cluster shit +kubeadm_join_path: File path that will store the `kubeadm join` command to be executed by the worker nodes. +_kubeadm_join_command: Placeholder, will be populated at later stages of the script. +``` ### TASK playbooks +#### tasks_prepare_node.yaml -- list (TODO) +- Changes the device hostname +- Disables RAM usage. +- Update -> Upgrade. +- Uninstalls `containerd`. +- Installs Docker (Debian) and Kubernetes repos. +- Installs `containerd.io`, `kublet`, `kubeadm`, `kubectl`. +- Sets default config for `containerd` with cGroups enabled. +- Enables some `iptables`. +- "Resets" `/etc/hosts` file +#### tasks_master.yaml +##### Will only be executed if the variable `is_master` is set to `True` +- Executes `kubeadm init` aka initializes the node without further arguments assigned. +- Sets the `kubectl` conf to the user specified. +- Deploys `Calico` network plugin (might change in the future) +- Removes `node-role.kubernetes.io/control-plane` taint to allow deploying containers in the control plane node. +- Generates a "join cluster" command and stores it in a file **LOCALLY** as `kubeadm-join.command`, this file will be later used by the slave nodes, who will execute this file's contents. +#### tasks_slave.yaml +##### Will only be executed if the variable `is_master` is set to `False` +- Executes the "command" stored in the file `kubeadm-join.command` located **LOCALLY**. +#### tasks_end.yaml +- As per the moment, only reboots. # USAGE + ## Setup -On my infrastructure, **I** use a DHCP and DNS to connect / communicate the nodes. +On my infrastructure/environment, **I** use a DHCP and DNS to connect / communicate the nodes. You **might** need to edit the file `/etc/hosts` and manually point the resources IP addresses. @@ -60,16 +135,16 @@ So my first step is to reserve the MAC addresses and configure the DHCP server. Afterwards update the DNS server to point to those IPs. -## Set the SD card / SBC (Single Board Computer) +### Set the SD card / SBC (Single Board Computer) Beware of using the right IMG / device, as you don't want to delete the wrong drive, **right?** ```shell dd if=Armbian_23.02.2_Orangepi5_bullseye_legacy_5.10.110_minimal.img of=/dev/sdg status=progress bs=1M status=progress ``` -## arm_initial_setup.yaml +### arm_initial_setup.yaml -### Change the values of the desired variables +#### Change the values of the desired variables ```yaml # New values @@ -84,9 +159,9 @@ new_language: "en_US.UTF-8" ``` -### Change the connection variables (Optional) +#### Change the connection variables (Optional) -**Optional**, if you are not planning to use root, the playbook might require some slight changes in order to work with an user that's not root, idk, not my problem, this playbook **assumes** you will be using an ARMBIAN image. +**Optional**, if you are not planning to use root, the playbook might require some slight changes in order to work with a user that's not root, idk, not my problem, this playbook **assumes** you will be using an ARMBIAN image. ```yaml ansible_user: "root" @@ -96,7 +171,7 @@ ansible_password: "1234" - +## Run (?) @@ -104,4 +179,5 @@ ansible_password: "1234" # License ## DWTFUW + Do whatever the fuck you want license ™ diff --git a/inventory.yaml b/inventory.yaml index 263aa07..8f6b8f1 100644 --- a/inventory.yaml +++ b/inventory.yaml @@ -1,8 +1,10 @@ -master: +masters: hosts: masterk.filter.home: - is_master: yes + vars: + is_master: yes slaves: hosts: slave[01:01].filter.home: - is_master: no + vars: + is_master: no diff --git a/ksetup/kubeadm-join.command b/ksetup/kubeadm-join.command index 0d47340..e69de29 100644 --- a/ksetup/kubeadm-join.command +++ b/ksetup/kubeadm-join.command @@ -1 +0,0 @@ -kubeadm join 192.168.1.10:6443 --token ezekcz.n6hwck49wfvj4h6f --discovery-token-ca-cert-hash sha256:7f78629fddc1310a35d2534d5dafa77761fa9770ff4da871583e32bc549470f7 diff --git a/ksetup/playbook.yaml b/ksetup/playbook.yaml index d3500b0..321b9fb 100755 --- a/ksetup/playbook.yaml +++ b/ksetup/playbook.yaml @@ -4,11 +4,12 @@ # Maybe still works for orangepi "official" versions, but I don't care about them unless I used soooooo... gl! # https://medium.com/karlmax-berlin/how-to-install-kubernetes-on-raspberry-pi-53b4ce300b58 - name: Preparethings + order: inventory hosts: all gather_facts: true vars: - # Testing purpouses + # Testing purposes ansible_user: "orangepi" # Testing purposes ansible_password: "orangepi" # Testing purposes ansible_become_password: "orangepi" # Testing purposes @@ -19,7 +20,7 @@ # Cluster shit kubeadm_join_path: "./kubeadm-join.command" - kubeadm_join_command: "" + _kubeadm_join_command: "" #placeholder tasks: @@ -29,19 +30,19 @@ # Init / Basic setup - name: set up node - import_tasks: set_node_tasks.yaml + import_tasks: tasks_prepare_node.yaml become: true # If is_master: init - name: init cluster - import_tasks: master_tasks.yaml + import_tasks: tasks_master.yaml when: is_master # else: join - name: join cluster - import_tasks: slave_tasks.yaml + import_tasks: tasks_slave.yaml when: not is_master # Do other stuff - name: post setup - import_tasks: end_tasks.yaml + import_tasks: tasks_end.yaml diff --git a/ksetup/slave_tasks.yaml b/ksetup/slave_tasks.yaml deleted file mode 100755 index c89f0e2..0000000 --- a/ksetup/slave_tasks.yaml +++ /dev/null @@ -1,8 +0,0 @@ -- name: Populate {{ kubeadm_join_command }} - ansible.builtin.set_fact: kubeadm_join_command="{{ lookup('file', kubeadm_join_path ) }}" - -- debug: var=kubeadm_join_command - -- name: Join kubeadm - ansible.builtin.command: "{{ kubeadm_join_command }}" - become: yes \ No newline at end of file diff --git a/ksetup/end_tasks.yaml b/ksetup/tasks_end.yaml similarity index 87% rename from ksetup/end_tasks.yaml rename to ksetup/tasks_end.yaml index 86bc821..5b32952 100755 --- a/ksetup/end_tasks.yaml +++ b/ksetup/tasks_end.yaml @@ -1,5 +1,5 @@ - -#reboot -- name: reboot - reboot: - + +#reboot +- name: reboot + reboot: + diff --git a/ksetup/master_tasks.yaml b/ksetup/tasks_master.yaml similarity index 96% rename from ksetup/master_tasks.yaml rename to ksetup/tasks_master.yaml index 35f96b5..9f3bd9b 100755 --- a/ksetup/master_tasks.yaml +++ b/ksetup/tasks_master.yaml @@ -1,85 +1,85 @@ -# Init -- name: Init cluster - ansible.builtin.command: "kubeadm init" - become: true - -# Set kubectl tool -- user: - name: "{{ ansible_user_id }}" - state: present - register: user_info_registered - -- name: create .kube directory - become: yes - become_user: "{{ ansible_user_id }}" - file: - path: "{{ user_info_registered.home }}/.kube" - state: directory - mode: 0755 - -- debug: var=user_info_registered.home - -- name: copy admin.conf to user's kube config - copy: - src: /etc/kubernetes/admin.conf - remote_src: yes - dest: "{{ user_info_registered.home }}/.kube/config" - owner: "{{ ansible_user_id }}" - become: true - - -# Network Plugin - -# Download and install Flannel - -#- name: Download and install Flannel -# ansible.builtin.get_url: -# url: https://github.com/flannel-io/flannel/releases/download/v0.19.2/flanneld-arm64 -# dest: /usr/local/bin/flanneld -# owner: root -# group: root -# mode: '0755' -# -#- name: Create Flannel networks directory -# ansible.builtin.file: -# path: /var/lib/k8s/flannel/networks -# state: directory -# recurse: yes -# owner: root -# group: root -# mode: '0755' -#- -# -- name: Calico - ansible.builtin.command: "kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml" - -#- name: Calico Tigera ? -# ansible.builtin.shell: "kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/tigera-operator.yaml" -# become_user: some_user -#- name: Calico Custom resources ? -# ansible.builtin.command: "kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/custom-resources.yaml" -# -# -## Remove taints -- name: Remove Taint (allows deployment in control plane) - ansible.builtin.shell: "kubectl taint nodes --all node-role.kubernetes.io/control-plane-" - - -# Join token / command - -- name: Generate join token - shell: kubeadm token create --print-join-command - register: kubeadm_join_cmd - -- set_fact: - kubeadm_join_command: "{{ kubeadm_join_cmd.stdout }}" - -- debug: var=kubeadm_join_command - -- name: Store join command in "{{ kubeadm_join_path }}" - copy: - dest: "{{ kubeadm_join_path }}" - content: | - {{ kubeadm_join_command }} - delegate_to: localhost - +# Init +- name: Init cluster + ansible.builtin.command: "kubeadm init" + become: true + +# Set kubectl tool +- user: + name: "{{ ansible_user_id }}" + state: present + register: user_info_registered + +- name: create .kube directory + become: yes + become_user: "{{ ansible_user_id }}" + file: + path: "{{ user_info_registered.home }}/.kube" + state: directory + mode: 0755 + +- debug: var=user_info_registered.home + +- name: copy admin.conf to user's kube config + copy: + src: /etc/kubernetes/admin.conf + remote_src: yes + dest: "{{ user_info_registered.home }}/.kube/config" + owner: "{{ ansible_user_id }}" + become: true + + +# Network Plugin + +# Download and install Flannel + +#- name: Download and install Flannel +# ansible.builtin.get_url: +# url: https://github.com/flannel-io/flannel/releases/download/v0.19.2/flanneld-arm64 +# dest: /usr/local/bin/flanneld +# owner: root +# group: root +# mode: '0755' +# +#- name: Create Flannel networks directory +# ansible.builtin.file: +# path: /var/lib/k8s/flannel/networks +# state: directory +# recurse: yes +# owner: root +# group: root +# mode: '0755' +#- +# +- name: Calico + ansible.builtin.command: "kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml" + +#- name: Calico Tigera ? +# ansible.builtin.shell: "kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/tigera-operator.yaml" +# become_user: some_user +#- name: Calico Custom resources ? +# ansible.builtin.command: "kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/custom-resources.yaml" +# +# +## Remove taints +- name: Remove Taint (allows deployment in control plane) + ansible.builtin.shell: "kubectl taint nodes --all node-role.kubernetes.io/control-plane-" + + +# Join token / command + +- name: Generate join token + shell: kubeadm token create --print-join-command + register: kubeadm_join_cmd + +- set_fact: + kubeadm_join_command: "{{ kubeadm_join_cmd.stdout }}" + +- debug: var=kubeadm_join_command + +- name: Store join command in "{{ kubeadm_join_path }}" + copy: + dest: "{{ kubeadm_join_path }}" + content: | + {{ kubeadm_join_command }} + delegate_to: localhost + diff --git a/ksetup/set_node_tasks.yaml b/ksetup/tasks_prepare_node.yaml similarity index 95% rename from ksetup/set_node_tasks.yaml rename to ksetup/tasks_prepare_node.yaml index 8705451..f8e02ec 100755 --- a/ksetup/set_node_tasks.yaml +++ b/ksetup/tasks_prepare_node.yaml @@ -1,201 +1,201 @@ -# Hostname -## Set hostname -- name: Set a hostname - ansible.builtin.hostname: - name: "{{ set_hostname }}" - - -# Swap -- name: Swapoff - ansible.builtin.command: swapoff -a - -- name: Disable ram on boot (orangepi) # Untested - copy: - dest: "/etc/default/orangepi-zram-config" - content: ENABLED=false - when: - - ansible_distribution | lower == "orangepi" - - ansible_architecture == "aarch64" - -- name: Disable ram on boot (armbian) # Untested - copy: - dest: "/etc/default/armbian-zram-config" - content: ENABLED=false - when: - - ansible_architecture == "aarch64" - - ansible_distribution | lower == "ubuntu" or ansible_distribution | lower == "debian" - - -# INTENDED FOR ARM DISTROS FUCK U -#- name: Sed when x86_64 -# ansible.builtin.command: sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab -# when: ansible_architecture == "x86_64" - - -# Packages -# Delete default containerd -## Looking forward the version 1.6 -- name: apt prune containerd - ansible.builtin.apt: - name: containerd - state: absent - purge: true - -## BnB -- name: apt update - ansible.builtin.apt: - update_cache: yes - -- name: apt upgrade - ansible.builtin.apt: - name: "*" - state: latest - -## Keyrings directory -- name: Creating a new directory - file: - path: "/etc/apt/keyrings" - state: directory - recurse: true - mode: '0755' -# ignore_errors: true - -## Docker repo -- name: Add Docker GPG key - apt_key: - url: https://download.docker.com/linux/debian/gpg - state: present - -- name: Add Docker APT repository - apt_repository: - repo: deb [arch=arm64] https://download.docker.com/linux/debian bullseye stable - state: present - -## Kubeshit repo -- name: Download Kubernetes GPG key - ansible.builtin.get_url: - url: "https://packages.cloud.google.com/apt/doc/apt-key.gpg" - dest: "/etc/apt/keyrings/kubernetes-archive-keyring.gpg" - timeout: 10 - -- name: Add Kubernetes keyring - copy: - dest: "/etc/apt/sources.list.d/kubernetes.list" - content: "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" - - -## Install packages -- name: apt update - ansible.builtin.apt: - update_cache: yes - -- name: Install Kubelet Kubeadm Kubectl - ansible.builtin.apt: - pkg: - - kubelet - - kubeadm - - kubectl - -- name: Hold kubeadm - ansible.builtin.dpkg_selections: - name: kubeadm - selection: hold - -- name: Hold kubelet - ansible.builtin.dpkg_selections: - name: kubelet - selection: hold - -- name: Hold kubectl - ansible.builtin.dpkg_selections: - name: kubectl - selection: hold - -## Containerd -- name: Install Container Runtime - ansible.builtin.apt: - pkg: - - containerd.io - - containernetworking-plugins - -- name: Containerd set default config - ansible.builtin.shell: containerd config default | tee /etc/containerd/config.toml - become: yes - -- name: SystemdCgroup = true - lineinfile: - dest: /etc/containerd/config.toml - regexp: '^\s*SystemdCgroup = false$' - line: ' SystemdCgroup = true' - backrefs: yes - -# Iptables -## Set files -- name: Iptables thingies (not touching specific firewall rules.) - copy: - dest: "/etc/sysctl.d/k8s.conf" - content: | - net.bridge.bridge-nf-call-iptables = 1 - net.bridge.bridge-nf-call-ip6tables = 1 - net.ipv4.ip_forward = 1 - -- name: Iptables thingies - copy: - dest: "/etc/modules-load.d/k8s.conf" - content: | - overlay - br_netfilter - -## Modprobe -- name: Add the overlay module - community.general.modprobe: - name: overlay - state: present - -- name: Add the br_netfilter module - community.general.modprobe: - name: br_netfilter - state: present - -- name: Apply changes (might need to use sysctl module with the reload flag, will try eventually) - ansible.builtin.command: "sysctl --system" - - -## Systemctl -### Enable -- name: Enable kubelet - ansible.builtin.systemd: - name: kubelet - enabled: true - -- name: Enable containerd - ansible.builtin.systemd: - name: containerd - enabled: true - -### Restart -- name: Enable kubelet - ansible.builtin.systemd: - name: kubelet - state: restarted - -- name: Restart containerd - ansible.builtin.systemd: - name: containerd - state: restarted - -## Set /etc/hosts -### This could be better but who cares -- name: Set /etc/hosts file content (template/base) - copy: - dest: "/etc/hosts" - content: | - 127.0.0.1 localhost - 127.0.1.1 {{ set_hostname }} - ::1 localhost {{ set_hostname }} ip6-localhost ip6-loopback - fe00::0 ip6-localnet - ff00::0 ip6-mcastprefix - ff02::1 ip6-allnodes - ff02::2 ip6-allrouters - - +# Hostname +## Set hostname +- name: Set a hostname + ansible.builtin.hostname: + name: "{{ set_hostname }}" + + +# Swap +- name: Swapoff + ansible.builtin.command: swapoff -a + +- name: Disable ram on boot (orangepi) # Untested + copy: + dest: "/etc/default/orangepi-zram-config" + content: ENABLED=false + when: + - ansible_distribution | lower == "orangepi" + - ansible_architecture == "aarch64" + +- name: Disable ram on boot (armbian) # Untested + copy: + dest: "/etc/default/armbian-zram-config" + content: ENABLED=false + when: + - ansible_architecture == "aarch64" + - ansible_distribution | lower == "ubuntu" or ansible_distribution | lower == "debian" + + +# INTENDED FOR ARM DISTROS FUCK U +#- name: Sed when x86_64 +# ansible.builtin.command: sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab +# when: ansible_architecture == "x86_64" + + +# Packages +# Delete default containerd +## Looking forward the version 1.6 +- name: apt prune containerd + ansible.builtin.apt: + name: containerd + state: absent + purge: true + +## BnB +- name: apt update + ansible.builtin.apt: + update_cache: yes + +- name: apt upgrade + ansible.builtin.apt: + name: "*" + state: latest + +## Keyrings directory +- name: Creating a new directory + file: + path: "/etc/apt/keyrings" + state: directory + recurse: true + mode: '0755' +# ignore_errors: true + +## Docker repo +- name: Add Docker GPG key + apt_key: + url: https://download.docker.com/linux/debian/gpg + state: present + +- name: Add Docker APT repository + apt_repository: + repo: deb [arch=arm64] https://download.docker.com/linux/debian bullseye stable + state: present + +## Kubeshit repo +- name: Download Kubernetes GPG key + ansible.builtin.get_url: + url: "https://packages.cloud.google.com/apt/doc/apt-key.gpg" + dest: "/etc/apt/keyrings/kubernetes-archive-keyring.gpg" + timeout: 10 + +- name: Add Kubernetes keyring + copy: + dest: "/etc/apt/sources.list.d/kubernetes.list" + content: "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" + + +## Install packages +- name: apt update + ansible.builtin.apt: + update_cache: yes + +- name: Install Kubelet Kubeadm Kubectl + ansible.builtin.apt: + pkg: + - kubelet + - kubeadm + - kubectl + +- name: Hold kubeadm + ansible.builtin.dpkg_selections: + name: kubeadm + selection: hold + +- name: Hold kubelet + ansible.builtin.dpkg_selections: + name: kubelet + selection: hold + +- name: Hold kubectl + ansible.builtin.dpkg_selections: + name: kubectl + selection: hold + +## Containerd +- name: Install Container Runtime + ansible.builtin.apt: + pkg: + - containerd.io + - containernetworking-plugins + +- name: Containerd set default config + ansible.builtin.shell: containerd config default | tee /etc/containerd/config.toml + become: yes + +- name: SystemdCgroup = true + lineinfile: + dest: /etc/containerd/config.toml + regexp: '^\s*SystemdCgroup = false$' + line: ' SystemdCgroup = true' + backrefs: yes + +# Iptables +## Set files +- name: Iptables thingies (not touching specific firewall rules.) + copy: + dest: "/etc/sysctl.d/k8s.conf" + content: | + net.bridge.bridge-nf-call-iptables = 1 + net.bridge.bridge-nf-call-ip6tables = 1 + net.ipv4.ip_forward = 1 + +- name: Iptables thingies + copy: + dest: "/etc/modules-load.d/k8s.conf" + content: | + overlay + br_netfilter + +## Modprobe +- name: Add the overlay module + community.general.modprobe: + name: overlay + state: present + +- name: Add the br_netfilter module + community.general.modprobe: + name: br_netfilter + state: present + +- name: Apply changes (might need to use sysctl module with the reload flag, will try eventually) + ansible.builtin.command: "sysctl --system" + + +## Systemctl +### Enable +- name: Enable kubelet + ansible.builtin.systemd: + name: kubelet + enabled: true + +- name: Enable containerd + ansible.builtin.systemd: + name: containerd + enabled: true + +### Restart +- name: Enable kubelet + ansible.builtin.systemd: + name: kubelet + state: restarted + +- name: Restart containerd + ansible.builtin.systemd: + name: containerd + state: restarted + +## Set /etc/hosts +### This could be better but who cares +- name: Set /etc/hosts file content (template/base) + copy: + dest: "/etc/hosts" + content: | + 127.0.0.1 localhost + 127.0.1.1 {{ set_hostname }} + ::1 localhost {{ set_hostname }} ip6-localhost ip6-loopback + fe00::0 ip6-localnet + ff00::0 ip6-mcastprefix + ff02::1 ip6-allnodes + ff02::2 ip6-allrouters + + diff --git a/ksetup/tasks_slave.yaml b/ksetup/tasks_slave.yaml new file mode 100755 index 0000000..c78fa06 --- /dev/null +++ b/ksetup/tasks_slave.yaml @@ -0,0 +1,8 @@ +- name: Populate {{ _kubeadm_join_command }} + ansible.builtin.set_fact: _kubeadm_join_command="{{ lookup('file', kubeadm_join_path ) }}" + +- debug: var=kubeadm_join_command + +- name: Join kubeadm + ansible.builtin.command: "{{ _kubeadm_join_command }}" + become: yes \ No newline at end of file diff --git a/main_issues.md b/main_issues.md index f7a90c3..8915fa6 100644 --- a/main_issues.md +++ b/main_issues.md @@ -14,7 +14,7 @@ You can check the version by running `containerd --version` ## CNI plugin initializing -Wait, if after a while still this way, confirm that you actually deployed the network plugin. +Wait, if after a while it still this way, confirm that you actually deployed the (right) network plugin. ```shell kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml