|
--- |
|
- hosts: all |
|
become: true |
|
tasks: |
|
- name: Install packages that allow apt to be used over HTTPS |
|
apt: |
|
name: "{{ packages }}" |
|
state: present |
|
update_cache: yes |
|
vars: |
|
packages: |
|
- apt-transport-https |
|
- ca-certificates |
|
- curl |
|
- gnupg-agent |
|
- software-properties-common |
|
|
|
- name: Add an apt signing key for Docker |
|
apt_key: |
|
url: https://download.docker.com/linux/ubuntu/gpg |
|
state: present |
|
|
|
- name: Add apt repository for stable version |
|
apt_repository: |
|
repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable |
|
state: present |
|
|
|
- name: Install docker and its dependecies |
|
apt: |
|
name: "{{ packages }}" |
|
state: present |
|
update_cache: yes |
|
vars: |
|
packages: |
|
- docker-ce |
|
- docker-ce-cli |
|
- containerd.io |
|
notify: |
|
- docker status |
|
|
|
- name: Add vagrant user to docker group |
|
user: |
|
name: vagrant |
|
group: docker |
|
|
|
- name: Remove swapfile from /etc/fstab |
|
mount: |
|
name: "{{ item }}" |
|
fstype: swap |
|
state: absent |
|
with_items: |
|
- swap |
|
- none |
|
|
|
- name: Disable swap |
|
command: swapoff -a |
|
when: ansible_swaptotal_mb > 0 |
|
|
|
- name: Add an apt signing key for Kubernetes |
|
apt_key: |
|
url: https://packages.cloud.google.com/apt/doc/apt-key.gpg |
|
state: present |
|
|
|
- name: Adding apt repository for Kubernetes |
|
apt_repository: |
|
repo: deb https://apt.kubernetes.io/ kubernetes-xenial main |
|
state: present |
|
filename: kubernetes.list |
|
|
|
- name: Install Kubernetes binaries |
|
apt: |
|
name: "{{ packages }}" |
|
state: present |
|
update_cache: yes |
|
vars: |
|
packages: |
|
- kubelet |
|
- kubeadm |
|
- kubectl |
|
|
|
- name: Initialize the Kubernetes cluster using kubeadm |
|
command: kubeadm init --apiserver-advertise-address="192.168.50.10" --apiserver-cert-extra-sans="192.168.50.10" --node-name k8s-master --pod-network-cidr=192.168.0.0/16 |
|
|
|
- name: Setup kubeconfig for vagrant user |
|
command: "{{ item }}" |
|
with_items: |
|
- mkdir -p /home/vagrant/.kube |
|
- cp -i /etc/kubernetes/admin.conf /home/vagrant/.kube/config |
|
- chown vagrant:vagrant /home/vagrant/.kube/config |
|
|
|
- name: Install calico pod network |
|
become: false |
|
command: kubectl create -f https://docs.projectcalico.org/v3.4/getting-started/kubernetes/installation/hosted/calico.yaml |
|
|
|
- name: Generate join command |
|
become: false |
|
command: kubeadm token create --print-join-command |
|
register: join_command |
|
|
|
- name: Copy join command to local file |
|
become: false |
|
local_action: copy content="{{ join_command.stdout_lines[0] }}" dest="./join-command" |
|
|
|
handlers: |
|
- name: docker status |
|
service: name=docker state=started |