112 lines
3.0 KiB
YAML
112 lines
3.0 KiB
YAML
---
|
|
- name: Main playbook for Kubernetes cluster
|
|
hosts: all
|
|
become: true
|
|
|
|
# #
|
|
# # @author Stéphane Gratias (2023).
|
|
# #
|
|
|
|
pre_tasks:
|
|
|
|
- name: >-
|
|
Show target servers -> Hostname : OS - IP
|
|
debug:
|
|
msg: "{{ ansible_hostname }} : {{ ansible_distribution }} {{ ansible_distribution_version }} - {{ ansible_default_ipv4.address }}"
|
|
tags:
|
|
- always
|
|
|
|
- name: Add the overlay and br_netfilter modules and make sure it is loaded after reboots
|
|
community.general.modprobe:
|
|
name: "{{ item }}"
|
|
state: present
|
|
persistent: present
|
|
loop:
|
|
- overlay
|
|
- br_netfilter
|
|
tags:
|
|
- always
|
|
|
|
|
|
roles:
|
|
- { role: geerlingguy.containerd, tags: [kubernetes, containerd] }
|
|
- { role: geerlingguy.kubernetes, tags: kubernetes }
|
|
|
|
tasks:
|
|
|
|
- name: Add kubectl alias and completion
|
|
ansible.builtin.lineinfile:
|
|
path: "{{ item.path }}"
|
|
regexp: "{{ item.regexp }}"
|
|
state: "{{ item.state|default('present') }}"
|
|
line: "{{ item.line|default(omit) }}"
|
|
loop: "{{ kubernetes_alias_bashrc }}"
|
|
tags:
|
|
- kubernetes
|
|
- alias
|
|
|
|
- name: create kubernetes app base dir
|
|
file:
|
|
path: "{{ item }}"
|
|
state: directory
|
|
mode: 0755
|
|
owner: root
|
|
group: root
|
|
with_items:
|
|
- "{{ kubernetes_tree_base_dir | last }}"
|
|
- "{{ kubernetes_tree_base_dir | last }}/{{ kubernetes_service }}"
|
|
tags:
|
|
- kubernetes
|
|
- git
|
|
|
|
# - name: Allow pods on control plane (if configured).
|
|
# command: "kubectl taint nodes --all node-role.kubernetes.io/control-plane-"
|
|
# when:
|
|
# - kubernetes_allow_pods_on_control_plane | bool
|
|
# - not kubernetes_init_stat.stat.exists
|
|
|
|
|
|
# need pip kubernetes to use k8s module
|
|
- name: Create all k8s namespace
|
|
kubernetes.core.k8s:
|
|
name: argocd
|
|
api_version: v1
|
|
kind: Namespace
|
|
state: present
|
|
tags:
|
|
- test
|
|
|
|
# Download and apply manifest
|
|
- name: Download all manifest to the cluster.
|
|
ansible.builtin.get_url:
|
|
url: https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
|
|
dest: "{{ kubernetes_tree_base_dir | last }}/{{ kubernetes_service }}/install.yaml"
|
|
mode: '0664'
|
|
tags:
|
|
- test
|
|
|
|
- name: Apply metrics-server manifest to the cluster.
|
|
kubernetes.core.k8s:
|
|
state: present
|
|
namespace: argocd
|
|
src: "{{ kubernetes_tree_base_dir | last }}/{{ kubernetes_service }}/install.yaml"
|
|
tags:
|
|
- test
|
|
|
|
# - name: Remove file (delete file)
|
|
# ansible.builtin.file:
|
|
# path: /etc/foo.txt
|
|
# state: absent
|
|
|
|
- name: Create all k8s objects needed
|
|
kubernetes.core.k8s:
|
|
namespace: "{{ item.namespace }}"
|
|
kind: "{{ item.kind }}"
|
|
definition: "{{ item.definition }}"
|
|
state: present
|
|
loop: "{{ kubernetes_argocd_objects }}"
|
|
tags:
|
|
- test
|
|
- last
|
|
|