From 652c7fc5ffff693c1579ff78a1e7e9227084cd01 Mon Sep 17 00:00:00 2001 From: Jonny Ervine Date: Wed, 19 Feb 2020 07:56:45 +0000 Subject: [PATCH] new file: install-docker-debian.yml new file: inventory Initial commit --- install-docker-debian.yml | 136 ++++++++++++++++++++++++++++++++++++++ inventory | 12 ++++ 2 files changed, 148 insertions(+) create mode 100644 install-docker-debian.yml create mode 100644 inventory diff --git a/install-docker-debian.yml b/install-docker-debian.yml new file mode 100644 index 0000000..567a177 --- /dev/null +++ b/install-docker-debian.yml @@ -0,0 +1,136 @@ +--- +- name: Setup all hosts for installation + hosts: kubernetes + become: true + tasks: + - name: Install dependencies for docker + apt: + name: "{{ item }}" + state: present + with_items: + - "apt-transport-https" + - "ca-certificates" + - "software-properties-common" + - "cron" + - "curl" + + - name: Get upstream docker APT GPG key + apt_key: + url: https://download.docker.com/linux/debian/gpg + state: "present" + + - name: Configure upstream APT repository for Debian x86_64 + apt_repository: + repo: "deb [arch=amd64] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} edge" + state: "present" + update_cache: True + when: + - ansible_distribution == "Debian" + - ansible_architecture == "x86_64" + + - name: Configure upstream APT repository for Raspbian armhf + apt_repository: + repo: "deb [arch=armhf] https://download.docker.com/linux/{{ ansible_lsb.id | lower }} {{ ansible_distribution_release }} edge" + state: "present" + update_cache: True + when: + - ansible_lsb.id == "Raspbian" + + - name: Install Docker + apt: + name: "docker-ce=17.12.1~ce-0~{{ ansible_lsb.id | lower }}" + state: "present" + update_cache: True + install_recommends: False + + - name: Get upstream kubernetes APT GPG key + apt_key: + url: https://packages.cloud.google.com/apt/doc/apt-key.gpg + state: "present" + + - name: Configure upstream kubernetes APT repository + apt_repository: + repo: "deb http://apt.kubernetes.io/ kubernetes-xenial main" + state: "present" + update_cache: True + + - name: Install kubeadm + apt: + name: "kubeadm" + state: "present" + update_cache: True + install_recommends: False + + - name: Remove swapfile from /etc/fstab + mount: + name: swap + fstype: swap + state: absent + + - name: Disable swap + command: swapoff -a + when: ansible_swaptotal_mb > 0 + +- name: Set up master node + hosts: masters + become: true + tasks: + - name: Check for admin.conf from kubeadm + stat: path=/etc/kubernetes/admin.conf + register: admin_conf + + - set_fact: + running: admin_conf.stat.exists + + - name: Run kubeadm if admin.conf doesn't exist + command: kubeadm init --pod-network-cidr 10.244.0.0/16 + when: admin_conf.stat.exists == false + + - name: Create kubeadm join command + shell: kubeadm token create --print-join-command + register: results + when: admin_conf.stat.exists == false + - debug: + var: results.stdout + when: admin_conf.stat.exists == false + - set_fact: + token: "{{ results.stdout | regex_search(regexp, '\\2') | first }}" + vars: + regexp: '([^\s]+\s){4}([^\s]+)' + when: admin_conf.stat.exists == false + - debug: + var: token + when: admin_conf.stat.exists == false + - set_fact: + hash: "{{ results.stdout | regex_search(regexp, '\\2') | first }}" + vars: + regexp: '([^\s]+\s){6}([^\s]+)' + when: admin_conf.stat.exists == false + - debug: + var: hash + when: admin_conf.stat.exists == false + + - name: Install flannel networking for RPi + shell: curl -sSL https://rawgit.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl --kubeconfig=/etc/kubernetes/admin.conf create -f - + when: + - ansible_lsb.id == "Raspbian" + - admin_conf.stat.exists == false + + - name: Install flannel networking for x86_64 + shell: curl -sSL https://rawgit.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml | kubectl --kubeconfig=/etc/kubernetes/admin.conf create -f - + when: + - ansible_distribution == "Debian" + - ansible_architecture == "x86_64" + - admin_conf.stat.exists == false + + - debug: + msg: "kubeadm has probably already been run." + when: admin_conf.stat.exists == true + +- name: Set up worker nodes + hosts: nodes + become: true + tasks: + - name: Install kubernetes on nodes + command: kubeadm join 192.168.11.167:6443 --token "{{ hostvars['debian.ipa.champion']['token'] }}" --discovery-token-ca-cert-hash "{{ hostvars['debian.ipa.champion']['hash'] }}" + when: hostvars['debian.ipa.champion']['running'] == false diff --git a/inventory b/inventory new file mode 100644 index 0000000..32dc033 --- /dev/null +++ b/inventory @@ -0,0 +1,12 @@ +[kubernetes] +debian-k8s-master1.ipa.champion +debian-k8s-node1.ipa.champion + +[masters] +debian-k8s-master1.ipa.champion + +[nodes] +debian-k8s-node1.ipa.champion + +[test] +rpi-builder.ipa.champion