81 lines
2.5 KiB
YAML
81 lines
2.5 KiB
YAML
- name: Store custom configuration files
|
|
ansible.builtin.copy:
|
|
dest: "{{ item.filename }}"
|
|
content: "{{ item.content }}"
|
|
loop:
|
|
- filename: /etc/rancher/k3s/config.yaml
|
|
content: |
|
|
kubelet-arg:
|
|
- "config=/etc/rancher/k3s/kubelet.config"
|
|
- filename: /etc/rancher/k3s/kubelet.config
|
|
content: |
|
|
apiVersion: kubelet.config.k8s.io/v1beta1
|
|
kind: KubeletConfiguration
|
|
|
|
shutdownGracePeriod: 180s
|
|
shtudownGracePeriodCriticalPods: 60s
|
|
loop_control:
|
|
label: "{{ item.filename }}"
|
|
|
|
- name: Gather service facts
|
|
ansible.builtin.service_facts:
|
|
# Module requires no attributes
|
|
|
|
- name: Install K3s
|
|
ansible.builtin.command:
|
|
cmd: ./install.sh
|
|
chdir: /opt/metacluster/k3s
|
|
environment:
|
|
INSTALL_K3S_SKIP_DOWNLOAD: 'true'
|
|
# To prevent from overwriting traefik's existing configuration, "disable" it on this new node
|
|
INSTALL_K3S_EXEC: "server --token {{ vapp['metacluster.token'] | trim }} --server https://{{ vapp['metacluster.vip'] }}:6443 --disable local-storage,traefik --config /etc/rancher/k3s/config.yaml"
|
|
when: ansible_facts.services['k3s.service'] is undefined
|
|
|
|
- name: Ensure API availability
|
|
ansible.builtin.uri:
|
|
url: https://{{ vapp['guestinfo.ipaddress'] }}:6443/livez?verbose
|
|
method: GET
|
|
validate_certs: no
|
|
status_code: [200, 401]
|
|
register: api_readycheck
|
|
until: api_readycheck.json.apiVersion is defined
|
|
retries: "{{ playbook.retries }}"
|
|
delay: "{{ (storage_benchmark | int) * (playbook.delay.medium | int) }}"
|
|
|
|
- name: Install kubectl tab-completion
|
|
ansible.builtin.shell:
|
|
cmd: kubectl completion bash | tee /etc/bash_completion.d/kubectl
|
|
|
|
- name: Initialize tempfile
|
|
ansible.builtin.tempfile:
|
|
state: file
|
|
register: kubeconfig
|
|
|
|
- name: Retrieve kubeconfig
|
|
ansible.builtin.command:
|
|
cmd: kubectl config view --raw
|
|
register: kubectl_config
|
|
|
|
- name: Store kubeconfig in tempfile
|
|
ansible.builtin.copy:
|
|
dest: "{{ kubeconfig.path }}"
|
|
content: "{{ kubectl_config.stdout }}"
|
|
mode: 0600
|
|
no_log: true
|
|
|
|
- name: Add label to node object
|
|
kubernetes.core.k8s:
|
|
name: "{{ ansible_facts.nodename | lower }}"
|
|
kind: Node
|
|
state: patched
|
|
definition:
|
|
metadata:
|
|
labels:
|
|
ova.airgappedk8s/moref_id: "{{ moref_id }}"
|
|
kubeconfig: "{{ kubeconfig.path }}"
|
|
register: k8snode_patch
|
|
until:
|
|
- k8snode_patch.result.metadata.labels['ova.airgappedk8s/moref_id'] is defined
|
|
retries: "{{ playbook.retries }}"
|
|
delay: "{{ (storage_benchmark | int) * (playbook.delay.medium | int) }}"
|