304 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			304 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| ---
 | |
| 
 | |
| - name: "{{ role_name }} Install Software"
 | |
|   include_role: 
 | |
|     name: nfc_common
 | |
|   vars:
 | |
|     common_gather_facts: false
 | |
|     aptSigningKeys:
 | |
|       - name: docker
 | |
|         url: https://download.docker.com/linux/debian/gpg
 | |
|         save_directory: /usr/share/keyrings
 | |
|         file_extension: asc
 | |
| 
 | |
|       - name: kubernetes
 | |
|         url: https://packages.cloud.google.com/apt/doc/apt-key.gpg
 | |
|         save_directory: /usr/share/keyrings
 | |
|         file_extension: asc
 | |
| 
 | |
|     aptRepositories:
 | |
|       - name: docker
 | |
|         repo: deb [arch={{ dynamic_processor_architecture }} signed-by=/usr/share/keyrings/docker.asc] http://download.docker.com/linux/{{ ansible_os_family | lower }}   {{ ansible_lsb.codename | lower }} stable
 | |
|       - name: kubernetes
 | |
|         repo: deb [signed-by=/usr/share/keyrings/kubernetes.asc] http://apt.kubernetes.io/ kubernetes-xenial main
 | |
| 
 | |
|     aptInstall:
 | |
|       - name: gnupg2 
 | |
|       - name: apt-transport-https
 | |
|       - name: software-properties-common
 | |
|       - name: ca-certificates
 | |
|       - name: iptables
 | |
|       - name: python3-pip
 | |
|       - name: python3-virtualenv
 | |
| 
 | |
|       - name: containerd.io
 | |
|         version: "{{ ContainerDioVersion }}"
 | |
| 
 | |
|       - name: kubectl
 | |
|         version: "{{ KubernetesVersion }}"
 | |
|       - name: kubelet
 | |
|         version: "{{ KubernetesVersion }}"
 | |
|       - name: kubeadm
 | |
|         version: "{{ KubernetesVersion }}"
 | |
|   tags:
 | |
|     - install
 | |
| 
 | |
| # containerd.io=1.6.22-1 kubectl=1.26.9-00 kubelet=1.26.9-00 kubeadm=1.26.9-00
 | |
| 
 | |
| - name: Remove swapfile from /etc/fstab
 | |
|   mount:
 | |
|     name: "{{ item }}"
 | |
|     fstype: swap
 | |
|     state: absent
 | |
|   with_items:
 | |
|     - swap
 | |
|     - none
 | |
|   when: 
 | |
|     - ansible_os_family == 'Debian' # ansible_lsb.codename = bullseye, ansible_lsb.major_release = 11
 | |
|   tags:
 | |
|     - install
 | |
| 
 | |
| 
 | |
| - name: Disable swap
 | |
|   command: swapoff -a
 | |
|   changed_when: true == false
 | |
|   when: 
 | |
|     #- ansible_swaptotal_mb > 0
 | |
|     - ansible_os_family == 'Debian'
 | |
|   tags:
 | |
|     - install
 | |
| 
 | |
| - name: Check an armbian os system
 | |
|   stat:
 | |
|     path: /etc/default/armbian-zram-config
 | |
|   register: armbian_stat_result
 | |
| 
 | |
| 
 | |
| - name: Armbian Disable Swap
 | |
|   ansible.builtin.shell:
 | |
|     cmd: |
 | |
|       sed -i 's/\# SWAP=false/SWAP=false/g' /etc/default/armbian-zram-config;
 | |
|       sed -i 's/ENABLED=true/ENABLED=false/g' /etc/default/armbian-zram-config;
 | |
|   args:
 | |
|     executable: bash
 | |
|   changed_when: false
 | |
|   # failed_when: false
 | |
|   #notify: RebootHost # doesnt need to reboot as swapoff -a covers the deployment
 | |
|   when: armbian_stat_result.stat.exists
 | |
| 
 | |
| 
 | |
| - name: Add the overlay module
 | |
|   community.general.modprobe:
 | |
|     name: overlay
 | |
|     state: present
 | |
|   when:
 | |
|     - ansible_os_family == 'Debian'
 | |
|   tags:
 | |
|     - install
 | |
| 
 | |
| 
 | |
| - name: Add the br_netfilter module
 | |
|   community.general.modprobe:
 | |
|     name: br_netfilter
 | |
|     state: present
 | |
|   when:
 | |
|     - ansible_os_family == 'Debian'
 | |
|   tags:
 | |
|     - install
 | |
| 
 | |
| - name: check if containerd installed
 | |
|   ansible.builtin.shell:
 | |
|     cmd: which containerd
 | |
|   failed_when: false
 | |
|   changed_when: false
 | |
|   register: containerd_installed
 | |
| 
 | |
| 
 | |
| - name: "Containerd.io Started?"
 | |
|   service:
 | |
|     name: containerd
 | |
|     state: started
 | |
|   tags:
 | |
|     - configure
 | |
|     - install
 | |
|   when: >
 | |
|     ansible_os_family == 'Debian'
 | |
|       and
 | |
|     containerd_installed.rc | default(1) | int == 0
 | |
| 
 | |
| 
 | |
| - name: containerd load modules config
 | |
|   template:
 | |
|     src: "etc_module_containerd.conf"
 | |
|     dest: /etc/modules-load.d/containerd.conf
 | |
|     owner: root
 | |
|     mode: 0700
 | |
|   notify: "restart ContainerD"
 | |
|   when: 
 | |
|     - ansible_os_family == 'Debian'
 | |
|   tags:
 | |
|     - install
 | |
| 
 | |
| 
 | |
| - name: Create containerD host directories.
 | |
|   become_method: sudo
 | |
|   become: yes
 | |
|   file: 
 | |
|     path: /etc/containerd/certs.d/{{ item.name }}
 | |
|     state: directory
 | |
|     owner: "{{ ansible_user }}"
 | |
|     group: "{{ ansible_user }}"
 | |
|     mode: 0700
 | |
|   with_items: "{{ containerd.repositories }}"
 | |
|   tags:
 | |
|     - install
 | |
|     - containerRegistry
 | |
| 
 | |
| 
 | |
| - name: containerD registry host
 | |
|   template:
 | |
|     src: "containerd-registry-hosts.toml.j2"
 | |
|     dest: /etc/containerd/certs.d/{{ item.name }}/hosts.toml
 | |
|     owner: root
 | |
|     mode: 0700
 | |
|   notify: "restart ContainerD"
 | |
|   with_items: "{{ containerd.repositories }}"
 | |
|   when: 
 | |
|     - ansible_os_family == 'Debian'
 | |
|   tags:
 | |
|     - install
 | |
|     - containerRegistry
 | |
| 
 | |
| 
 | |
| - name: containerD default config
 | |
|   template:
 | |
|     src: "etc_containerd_containerd.toml"
 | |
|     dest: /etc/containerd/config.toml
 | |
|     owner: root
 | |
|     mode: 0700
 | |
|   notify: "restart ContainerD"
 | |
|   register: containerd_config
 | |
|   when: 
 | |
|     - ansible_os_family == 'Debian'
 | |
|   tags:
 | |
|     - install
 | |
|     - containerRegistry
 | |
| 
 | |
| 
 | |
| - name: Install required python modules
 | |
|   ansible.builtin.pip:
 | |
|     name: kubernetes
 | |
|     state: forcereinstall
 | |
|     #virtualenv: /tmp/venv_ansible
 | |
|   when: inventory_hostname != 'op1'
 | |
|   tags:
 | |
|     - install
 | |
| 
 | |
| 
 | |
| - name: sysctl net.bridge.bridge-nf-call-ip6tables
 | |
|   sysctl:
 | |
|     name: net.bridge.bridge-nf-call-ip6tables
 | |
|     value: '1'
 | |
|     sysctl_set: yes
 | |
|     state: present
 | |
|     reload: yes
 | |
|   when:
 | |
|     - ansible_os_family == 'Debian'
 | |
|   tags:
 | |
|     - install
 | |
| 
 | |
| 
 | |
| - name: sysctl net.bridge.bridge-nf-call-iptables
 | |
|   sysctl:
 | |
|     name: net.bridge.bridge-nf-call-iptables
 | |
|     value: '1'
 | |
|     sysctl_set: yes
 | |
|     state: present
 | |
|     reload: yes
 | |
|   when:
 | |
|     - ansible_os_family == 'Debian'
 | |
|   tags:
 | |
|     - install
 | |
| 
 | |
| 
 | |
| - name: sysctl net.ipv4.ip_forward
 | |
|   sysctl:
 | |
|     name: net.ipv4.ip_forward
 | |
|     value: '1'
 | |
|     sysctl_set: yes
 | |
|     state: present
 | |
|     reload: yes
 | |
|   when:
 | |
|     - ansible_os_family == 'Debian'
 | |
|   tags:
 | |
|     - install
 | |
| 
 | |
| 
 | |
| # - name: Check if kubernetes has been Initialized
 | |
| #   stat:
 | |
| #     path: /etc/kubernetes/admin.conf
 | |
| #   register: KubernetesInit
 | |
| #   when: 
 | |
| #     - kubernetes_config.cluster.prime.name == inventory_hostname
 | |
| 
 | |
| 
 | |
| - name: check if iptables is installed
 | |
|   ansible.builtin.shell: |-
 | |
|     dpkg -s iptables &> /dev/null
 | |
|   changed_when: true == false
 | |
|   register: iptables_installed
 | |
|   when: 
 | |
|     - ansible_os_family == 'Debian'
 | |
|   tags:
 | |
|     - install
 | |
|     - iptables
 | |
|     - firewall
 | |
| 
 | |
| 
 | |
| - name: Add kubernetes Firewall Rules - '/etc/iptables-kubernetes.rules'
 | |
|   template:
 | |
|     src: iptables-kubernetes.rules.j2
 | |
|     dest: "/etc/iptables-kubernetes.rules"
 | |
|     owner: root
 | |
|     mode: 0700
 | |
|     force: yes
 | |
|   notify: "Apply Firewall Rules"
 | |
|   when: 
 | |
|     - ansible_os_family == 'Debian'
 | |
|     - iptables_installed.rc == 0
 | |
|   tags:
 | |
|     - install
 | |
|     - iptables
 | |
|     - firewall
 | |
| 
 | |
| 
 | |
| - name: File - '/etc/network/if-pre-up.d/firewall-kubernetes'
 | |
|   template:
 | |
|     src: firewall-kubernetes.j2
 | |
|     dest: "/etc/network/if-pre-up.d/firewall-kubernetes"
 | |
|     owner: root
 | |
|     mode: 0700
 | |
|     force: yes
 | |
|   when: 
 | |
|     - ansible_os_family == 'Debian'
 | |
|     - iptables_installed.rc == 0
 | |
|   tags:
 | |
|     - install
 | |
|     - iptables
 | |
|     - firewall
 | |
| 
 | |
| 
 | |
| - name:  Create local workdir
 | |
|   file:
 | |
|     path: "{{ item }}"
 | |
|     state: directory
 | |
|     mode: 0700
 | |
|   delegate_to: localhost
 | |
|   connection: local
 | |
|   run_once: true
 | |
|   changed_when: true == false
 | |
|   with_items:
 | |
|     - /tmp/ansible/
 | |
|   tags:
 | |
|     - always
 |