--- - 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