Initial commit with basic Molecule
Change-Id: If55c8b62cb219e575857ba5395a48ddac5973e01
diff --git a/roles/kubernetes/tasks/main.yml b/roles/kubernetes/tasks/main.yml
new file mode 100644
index 0000000..383ce1f
--- /dev/null
+++ b/roles/kubernetes/tasks/main.yml
@@ -0,0 +1,124 @@
+# 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
+ 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
+
+- 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']