blob: 0195921d7c3fb4cdf158a791e9e8177a5c40b7f4 [file] [log] [blame]
# Copyright (c) 2022 VEXXHOST, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
- name: Add repository keys
ansible.builtin.copy:
src: apt-key.gpg
dest: /usr/share/keyrings/kubernetes-archive-keyring.gpg
owner: root
group: root
mode: 0644
when:
- kubernetes_repo_url == _kubernetes_upstream_apt_repository
- name: Add repository
ansible.builtin.apt_repository:
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
state: present
- name: Setup version pins
ansible.builtin.template:
src: apt-preferences.j2
dest: /etc/apt/preferences.d/kubernetes
mode: 0644
- name: Install packages
ansible.builtin.apt:
name:
- "containerd"
- "kubeadm={{ kubernetes_version }}-00"
- "kubectl={{ kubernetes_version }}-00"
- "kubelet={{ kubernetes_version }}-00"
state: present
- name: Enable kernel modules on-boot
ansible.builtin.template:
src: modules-load.conf.j2
dest: /etc/modules-load.d/k8s.conf
owner: root
group: root
mode: 0644
- name: Enable kernel modules in runtime
community.general.modprobe:
name: "{{ item }}"
state: present
loop: "{{ kubernetes_kernel_modules }}"
- name: Configure sysctl values
ansible.posix.sysctl:
name: "{{ item.name }}"
value: "{{ item.value }}"
state: present
loop: "{{ kubernetes_sysctls }}"
- name: Check swap status
ansible.builtin.command: /sbin/swapon -s
changed_when: false
register: _swapon
- name: Disable swap
ansible.builtin.command: /sbin/swapoff -a
ignore_errors: "{{ ansible_check_mode }}"
when:
- _swapon.stdout
- name: Remove swapfile from /etc/fstab
ansible.posix.mount:
name: "{{ item }}"
fstype: swap
state: absent
with_items:
- swap
- none
- name: Configure short hostname
ansible.builtin.hostname:
name: "{{ inventory_hostname_short }}"
- name: Ensure hostname inside hosts file
ansible.builtin.lineinfile:
path: /etc/hosts
regexp: '^127\.0\.1\.1'
line: 127.0.1.1 {{ inventory_hostname }} {{ inventory_hostname_short }}
- name: Setup control plane
when: inventory_hostname in groups[kubernetes_control_plane_group]
ansible.builtin.include_tasks: control-plane.yml
- name: Setup nodes
when: inventory_hostname not in groups[kubernetes_control_plane_group]
ansible.builtin.include_tasks: nodes.yml
- name: Add labels to control plane nodes
delegate_to: "{{ groups[kubernetes_control_plane_group][0] }}"
kubernetes.core.k8s:
state: patched
kind: Node
name: "{{ inventory_hostname_short }}"
definition:
metadata:
labels:
openstack-control-plane: enabled
openvswitch: enabled
when:
- inventory_hostname in groups['controllers']
- name: Add labels to compute nodes
delegate_to: "{{ groups[kubernetes_control_plane_group][0] }}"
kubernetes.core.k8s:
state: patched
kind: Node
name: "{{ inventory_hostname_short }}"
definition:
metadata:
labels:
openstack-compute-node: enabled
openvswitch: enabled
when:
- inventory_hostname in groups['computes']