blob: 383ce1f54289513ce74c0d6c0f9fb032e4cd9289 [file] [log] [blame]
Mohammed Naser336caf42022-03-11 17:56:45 -05001# Copyright (c) 2022 VEXXHOST, Inc.
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may
4# not use this file except in compliance with the License. You may obtain
5# a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations
13# under the License.
14
15- name: Add repository keys
16 ansible.builtin.copy:
17 src: apt-key.gpg
18 dest: /usr/share/keyrings/kubernetes-archive-keyring.gpg
19 when:
20 - kubernetes_repo_url == _kubernetes_upstream_apt_repository
21
22- name: Add repository
23 ansible.builtin.apt_repository:
24 repo: "deb {% if kubernetes_repo_url == _kubernetes_upstream_apt_repository %}[signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg]{% endif %} {{ kubernetes_repo_url }} kubernetes-xenial main"
25 state: present
26
27- name: Setup version pins
28 ansible.builtin.template:
29 src: apt-preferences.j2
30 dest: /etc/apt/preferences.d/kubernetes
31 mode: 0644
32
33- name: Install packages
34 ansible.builtin.apt:
35 name:
36 - "containerd"
37 - "kubeadm={{ kubernetes_version }}-00"
38 - "kubectl={{ kubernetes_version }}-00"
39 - "kubelet={{ kubernetes_version }}-00"
40 state: present
41
42- name: Enable kernel modules on-boot
43 ansible.builtin.template:
44 src: modules-load.conf.j2
45 dest: /etc/modules-load.d/k8s.conf
46
47- name: Enable kernel modules in runtime
48 community.general.modprobe:
49 name: "{{ item }}"
50 state: present
51 loop: "{{ kubernetes_kernel_modules }}"
52
53- name: Configure sysctl values
54 ansible.posix.sysctl:
55 name: "{{ item.name }}"
56 value: "{{ item.value }}"
57 state: present
58 loop: "{{ kubernetes_sysctls }}"
59
60- name: Check swap status
61 ansible.builtin.command: /sbin/swapon -s
62 changed_when: false
63 register: _swapon
64
65- name: Disable swap
66 ansible.builtin.command: /sbin/swapoff -a
67 ignore_errors: "{{ ansible_check_mode }}"
68 when:
69 - _swapon.stdout
70
71- name: Remove swapfile from /etc/fstab
72 ansible.posix.mount:
73 name: "{{ item }}"
74 fstype: swap
75 state: absent
76 with_items:
77 - swap
78 - none
79
80- name: Configure short hostname
81 ansible.builtin.hostname:
82 name: "{{ inventory_hostname_short }}"
83
84- name: Ensure hostname inside hosts file
85 ansible.builtin.lineinfile:
86 path: /etc/hosts
87 regexp: '^127\.0\.1\.1'
88 line: 127.0.1.1 {{ inventory_hostname }} {{ inventory_hostname_short }}
89
90- name: Setup control plane
91 when: inventory_hostname in groups[kubernetes_control_plane_group]
92 ansible.builtin.include_tasks: control-plane.yml
93
94- name: Setup nodes
95 when: inventory_hostname not in groups[kubernetes_control_plane_group]
96 ansible.builtin.include_tasks: nodes.yml
97
98- name: Add labels to control plane nodes
99 delegate_to: "{{ groups[kubernetes_control_plane_group][0] }}"
100 kubernetes.core.k8s:
101 state: patched
102 kind: Node
103 name: "{{ inventory_hostname_short }}"
104 definition:
105 metadata:
106 labels:
107 openstack-control-plane: enabled
108 openvswitch: enabled
109 when:
110 - inventory_hostname in groups['controllers']
111
112- name: Add labels to compute nodes
113 delegate_to: "{{ groups[kubernetes_control_plane_group][0] }}"
114 kubernetes.core.k8s:
115 state: patched
116 kind: Node
117 name: "{{ inventory_hostname_short }}"
118 definition:
119 metadata:
120 labels:
121 openstack-compute-node: enabled
122 openvswitch: enabled
123 when:
124 - inventory_hostname in groups['computes']