--- /dev/null
+- hosts: all\r
+ become: true\r
+ tasks:\r
+ - name: Install packages that allow apt to be used over HTTPS\r
+ apt:\r
+ name: "{{ packages }}"\r
+ state: present\r
+ vars:\r
+ packages:\r
+ - apt-transport-https\r
+ - ca-certificates\r
+ - curl\r
+ - gnupg-agent\r
+ - software-properties-common\r
+\r
+ - name: Add the apt signing key for Docker\r
+ apt_key:\r
+ url: https://download.docker.com/linux/ubuntu/gpg\r
+ state: present\r
+\r
+ - name: Add the apt repository for the stable Docker version\r
+ apt_repository:\r
+ repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable\r
+ state: present\r
+\r
+ - name: Install Docker and its dependencies\r
+ apt:\r
+ name: "{{ packages }}"\r
+ state: present\r
+ update_cache: yes\r
+ vars:\r
+ packages:\r
+ - docker-ce\r
+ - docker-ce-cli\r
+ - containerd.io\r
+\r
+ - name: Ensure user group exists\r
+ group:\r
+ name: "{{ ansible_user }}"\r
+\r
+ - name: Add user to the docker group\r
+ user:\r
+ name: "{{ ansible_user }}"\r
+ groups: docker,{{ ansible_user }}\r
+ append: yes\r
+\r
+ - name: Remove swapfile from /etc/fstab\r
+ mount:\r
+ name: "{{ item }}"\r
+ fstype: swap\r
+ state: absent\r
+ with_items:\r
+ - swap\r
+ - none\r
+\r
+ - name: Disable swap\r
+ command: swapoff -a\r
+ when: ansible_swaptotal_mb > 0\r
+\r
+ - name: Add the apt signing key for Kubernetes\r
+ apt_key:\r
+ url: https://packages.cloud.google.com/apt/doc/apt-key.gpg\r
+ state: present\r
+\r
+ - name: Add the apt repository for Kubernetes\r
+ apt_repository:\r
+ repo: deb https://apt.kubernetes.io/ kubernetes-xenial main\r
+ state: present\r
+ filename: kubernetes.list\r
+\r
+ - name: Install Kubernetes binaries\r
+ apt:\r
+ name: "{{ packages }}"\r
+ update_cache: yes\r
+ vars:\r
+ packages:\r
+ - kubelet=1.19.16-00\r
+ - kubeadm=1.19.16-00\r
+ - kubectl=1.19.16-00\r
+\r
+ - name: Restart kubelet\r
+ service:\r
+ name: kubelet\r
+ daemon_reload: yes\r
+ state: restarted\r
+\r
+ - name: Making systemd as Cgroup Driver\r
+ copy:\r
+ src: daemon.json\r
+ dest: /etc/docker/daemon.json\r
+\r
+ - name: Restaring Docker...\r
+ service:\r
+ name: docker\r
+ state: restarted\r
+\r
+ - name: update sysctl param\r
+ copy:\r
+ src: k8s.conf\r
+ dest: /etc/sysctl.d/k8s.conf\r
+ owner: root\r
+ group: root\r
+\r
+ - name: System reload\r
+ shell: sysctl --system\r
+\r
+ - name: Initialize the Kubernetes cluster\r
+ become: true\r
+ command: kubeadm init --pod-network-cidr=10.244.0.0/16\r
+\r
+ - name: Setup kubeconfig\r
+ command: "{{ item }}"\r
+ with_items:\r
+ - mkdir -p "$HOME/.kube"\r
+ - sudo cp /etc/kubernetes/admin.conf "$HOME/.kube/config"\r
+ - sudo chown "{{ ansible_user }}:{{ ansible_user }}" "$HOME/.kube/config"\r
+\r
+ - name: Deploy Flannel\r
+ become: true\r
+ command: kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml\r
+\r
+ - name: Remove taints from master node\r
+ become: true\r
+ command: kubectl taint nodes --all node-role.kubernetes.io/master-\r
+\r
+ - name: Create Tiller service account\r
+ become: true\r
+ command: kubectl -n kube-system create serviceaccount tiller\r
+\r
+ - name: Setup Tiller ClusterBinding\r
+ become: true\r
+ command: kubectl create clusterrolebinding tiller --clusterrole=cluster-admin --serviceaccount=kube-system:tiller\r