|
24 | 24 | kubeinit_deployment_delegate: "{{ hostvars[kubeinit_provision_service_node].target }}"
|
25 | 25 | kubeinit_deployment_os: "{{ hostvars[kubeinit_provision_service_node].os }}"
|
26 | 26 |
|
27 |
| -- name: Configure the service node |
| 27 | +- name: Configure the provision service node |
28 | 28 | block:
|
29 | 29 |
|
30 |
| - - name: Remove repo before adding it |
31 |
| - ansible.builtin.file: |
32 |
| - path: /etc/yum.repos.d/kubernetes.repo |
33 |
| - state: absent |
34 |
| - |
35 |
| - - name: Creating a repository file for Kubernetes |
36 |
| - ansible.builtin.file: |
37 |
| - path: /etc/yum.repos.d/kubernetes.repo |
38 |
| - state: touch |
39 |
| - mode: '0644' |
40 |
| - |
41 |
| - - name: Adding repository details in Kubernetes repo file. |
42 |
| - ansible.builtin.blockinfile: |
43 |
| - path: /etc/yum.repos.d/kubernetes.repo |
44 |
| - block: | |
45 |
| - [kubernetes] |
46 |
| - name=Kubernetes |
47 |
| - baseurl=https://pkgs.k8s.io/core:/stable:/v{{ kubeinit_k8s_kubernetes_version }}/rpm/ |
48 |
| - enabled=1 |
49 |
| - gpgcheck=1 |
50 |
| - gpgkey=https://pkgs.k8s.io/core:/stable:/v{{ kubeinit_k8s_kubernetes_version }}/rpm/repodata/repomd.xml.key |
51 |
| - # exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni |
52 |
| -
|
53 |
| - - name: Install requirements |
54 |
| - ansible.builtin.command: dnf install -y kubectl-{{ kubeinit_k8s_kubernetes_version }}.* --disableexcludes=kubernetes |
55 |
| - register: _result |
56 |
| - changed_when: "_result.rc == 0" |
57 |
| - |
58 |
| - - name: Install common requirements |
59 |
| - ansible.builtin.package: |
60 |
| - name: "{{ kubeinit_k8s_common_dependencies }}" |
61 |
| - state: present |
62 |
| - use: dnf |
63 |
| - when: kubeinit_k8s_common_dependencies is defined |
| 30 | + - when: hostvars[kubeinit_provision_service_node].os == 'centos' |
| 31 | + block: |
| 32 | + |
| 33 | + - name: Remove repo before adding it |
| 34 | + ansible.builtin.file: |
| 35 | + path: /etc/yum.repos.d/kubernetes.repo |
| 36 | + state: absent |
| 37 | + |
| 38 | + - name: Creating a repository file for Kubernetes |
| 39 | + ansible.builtin.file: |
| 40 | + path: /etc/yum.repos.d/kubernetes.repo |
| 41 | + state: touch |
| 42 | + mode: '0644' |
| 43 | + |
| 44 | + - name: Adding repository details in Kubernetes repo file. |
| 45 | + ansible.builtin.blockinfile: |
| 46 | + block: | |
| 47 | + [kubernetes] |
| 48 | + name=Kubernetes |
| 49 | + baseurl=https://pkgs.k8s.io/core:/stable:/v{{ kubeinit_k8s_kubernetes_version }}/rpm/ |
| 50 | + enabled=1 |
| 51 | + gpgcheck=1 |
| 52 | + gpgkey=https://pkgs.k8s.io/core:/stable:/v{{ kubeinit_k8s_kubernetes_version }}/rpm/repodata/repomd.xml.key |
| 53 | + exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni |
| 54 | + path: /etc/yum.repos.d/kubernetes.repo |
| 55 | + |
| 56 | + - name: Install requirements |
| 57 | + ansible.builtin.command: dnf install -y kubectl-{{ kubeinit_k8s_kubernetes_version }}.* --disableexcludes=kubernetes |
| 58 | + register: _result |
| 59 | + changed_when: "_result.rc == 0" |
| 60 | + |
| 61 | +#### Debian-based distributions |
| 62 | +### |
| 63 | +#### These instructions are for Kubernetes v1.30. |
| 64 | +### |
| 65 | +#### Update the apt package index and install packages needed to use the Kubernetes apt repository: |
| 66 | +### |
| 67 | +### sudo apt-get update |
| 68 | +### # apt-transport-https may be a dummy package; if so, you can skip that package |
| 69 | +### sudo apt-get install -y apt-transport-https ca-certificates curl gpg |
| 70 | +### |
| 71 | +#### Download the public signing key for the Kubernetes package repositories. The same signing key is used for all repositories so you can disregard the version in the URL: |
| 72 | +### |
| 73 | +### # If the directory `/etc/apt/keyrings` does not exist, it should be created before the curl command, read the note below. |
| 74 | +### # sudo mkdir -p -m 755 /etc/apt/keyrings |
| 75 | +### curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg |
| 76 | +### |
| 77 | +#### Note: |
| 78 | +#### In releases older than Debian 12 and Ubuntu 22.04, directory /etc/apt/keyrings does not exist by default, and it should be created before the curl command. |
| 79 | +### |
| 80 | +#### Add the appropriate Kubernetes apt repository. Please note that this repository have packages only for Kubernetes 1.30; for other Kubernetes minor versions, you need to change the Kubernetes minor version in the URL to match your desired minor version (you should also check that you are reading the documentation for the version of Kubernetes that you plan to install). |
| 81 | +### |
| 82 | +### # This overwrites any existing configuration in /etc/apt/sources.list.d/kubernetes.list |
| 83 | +### echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list |
| 84 | +### |
| 85 | +#### Update the apt package index, install kubelet, kubeadm and kubectl, and pin their version: |
| 86 | +### |
| 87 | +### sudo apt-get update |
| 88 | +### sudo apt-get install -y kubelet kubeadm kubectl |
| 89 | +### sudo apt-mark hold kubelet kubeadm kubectl |
| 90 | +### |
| 91 | +#### (Optional) Enable the kubelet service before running kubeadm: |
| 92 | +### |
| 93 | +### sudo systemctl enable --now kubelet |
| 94 | +### |
| 95 | +#### |
| 96 | +#### END |
| 97 | +#### |
| 98 | +#### Distributions using deb packages |
| 99 | +### |
| 100 | +#### Install the dependencies for adding repositories |
| 101 | +### apt-get update |
| 102 | +### apt-get install -y software-properties-common curl |
| 103 | +### |
| 104 | +#### Add the Kubernetes repository |
| 105 | +### curl -fsSL https://pkgs.k8s.io/core:/stable:/$KUBERNETES_VERSION/deb/Release.key | |
| 106 | +### gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg |
| 107 | +### |
| 108 | +### echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/$KUBERNETES_VERSION/deb/ /" | |
| 109 | +### tee /etc/apt/sources.list.d/kubernetes.list |
| 110 | +### |
| 111 | +#### Add the CRI-O repository |
| 112 | +### curl -fsSL https://pkgs.k8s.io/addons:/cri-o:/stable:/$CRIO_VERSION/deb/Release.key | |
| 113 | +### gpg --dearmor -o /etc/apt/keyrings/cri-o-apt-keyring.gpg |
| 114 | +### |
| 115 | +### echo "deb [signed-by=/etc/apt/keyrings/cri-o-apt-keyring.gpg] https://pkgs.k8s.io/addons:/cri-o:/stable:/$CRIO_VERSION/deb/ /" | |
| 116 | +### tee /etc/apt/sources.list.d/cri-o.list |
| 117 | +### |
| 118 | +#### Install the packages |
| 119 | +### apt-get update |
| 120 | +### apt-get install -y cri-o kubelet kubeadm kubectl |
| 121 | +### |
| 122 | +#### Start CRI-O |
| 123 | +### systemctl start crio.service |
| 124 | +### |
| 125 | +#### Bootstrap a cluster |
| 126 | +### swapoff -a |
| 127 | +### modprobe br_netfilter |
| 128 | +### sysctl -w net.ipv4.ip_forward=1 |
| 129 | +### |
| 130 | +### kubeadm init |
| 131 | +#### |
| 132 | +#### END |
| 133 | +#### |
| 134 | + - when: hostvars[kubeinit_provision_service_node].os != 'centos' |
| 135 | + block: |
| 136 | + |
| 137 | + - fail: msg=stopping |
| 138 | + |
| 139 | + - name: Add kubernetes repo for latest kubectl (Debian) |
| 140 | + ansible.builtin.shell: | |
| 141 | + set -eo pipefail |
| 142 | + apt-get update |
| 143 | + apt-get install -y software-properties-common curl |
| 144 | +
|
| 145 | + curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | |
| 146 | + gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg |
| 147 | + echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" | |
| 148 | + tee /etc/apt/sources.list.d/kubernetes.list |
| 149 | +
|
| 150 | + curl -fsSL https://pkgs.k8s.io/addons:/cri-o:/prerelease:/main/deb/Release.key | |
| 151 | + gpg --dearmor -o /etc/apt/keyrings/cri-o-apt-keyring.gpg |
| 152 | + echo "deb [signed-by=/etc/apt/keyrings/cri-o-apt-keyring.gpg] https://pkgs.k8s.io/addons:/cri-o:/prerelease:/main/deb/ /" | |
| 153 | + tee /etc/apt/sources.list.d/cri-o.list |
| 154 | +
|
| 155 | + apt-get update |
| 156 | + apt-get install -y cri-o kubelet kubeadm kubectl |
| 157 | +
|
| 158 | + systemctl start crio.service |
| 159 | + args: |
| 160 | + executable: /bin/bash |
| 161 | + register: _result |
| 162 | + changed_when: "_result.rc == 0" |
| 163 | + |
| 164 | + ### |
| 165 | + # The Project's prerelease:/main prefix at the CRI-O's package path, can be replaced with stable:/v1.28, stable:/v1.29, prerelease:/v1.28 or prerelease:/v1.29 if another stream package is used. |
| 166 | + ### |
| 167 | + |
| 168 | + - name: Add kubernetes repo for latest kubectl (Ubuntu) |
| 169 | + ansible.builtin.shell: | |
| 170 | + set -eo pipefail |
| 171 | + apt-get install -y apt-transport-https ca-certificates curl gnupg |
| 172 | + curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg |
| 173 | + chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg # allow unprivileged APT programs to read this keyring |
| 174 | + echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | tee /etc/apt/sources.list.d/kubernetes.list |
| 175 | + chmod 644 /etc/apt/sources.list.d/kubernetes.list # helps tools such as command-not-found to work correctly |
| 176 | + apt-get update --allow-insecure-repositories |
| 177 | + args: |
| 178 | + executable: /bin/bash |
| 179 | + register: _result |
| 180 | + changed_when: "_result.rc == 0" |
| 181 | + |
| 182 | + - name: Install services requirements |
| 183 | + ansible.builtin.package: |
| 184 | + name: |
| 185 | + - kubectl |
| 186 | + state: present |
| 187 | + use: apt |
64 | 188 |
|
65 | 189 | delegate_to: "{{ kubeinit_provision_service_node }}"
|
0 commit comments