From 560c18ccfd71a2008bec54b33bc26ecce765bdb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torma=20Krist=C3=B3f?= Date: Sat, 3 Oct 2020 00:59:13 +0200 Subject: [PATCH] init --- README.md | 3 ++ hosts | 8 ++++ roles/common/handlers/main.yml | 12 ++++++ roles/common/tasks/main.yml | 77 ++++++++++++++++++++++++++++++++++ roles/master/tasks/main.yml | 32 ++++++++++++++ roles/worker/tasks/main.yml | 4 ++ update.yml | 21 ++++++++++ 7 files changed, 157 insertions(+) create mode 100644 README.md create mode 100644 hosts create mode 100644 roles/common/handlers/main.yml create mode 100644 roles/common/tasks/main.yml create mode 100644 roles/master/tasks/main.yml create mode 100644 roles/worker/tasks/main.yml create mode 100644 update.yml diff --git a/README.md b/README.md new file mode 100644 index 0000000..dc90c75 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# EasyUpdater + +Update HyperCluster Linux virtual machines easily \ No newline at end of file diff --git a/hosts b/hosts new file mode 100644 index 0000000..8d7b683 --- /dev/null +++ b/hosts @@ -0,0 +1,8 @@ +[opensuse] +192.168.42.90 + +[debian] +192.168.42.42 + +[centos] +192.168.42.69 \ No newline at end of file diff --git a/roles/common/handlers/main.yml b/roles/common/handlers/main.yml new file mode 100644 index 0000000..d70f481 --- /dev/null +++ b/roles/common/handlers/main.yml @@ -0,0 +1,12 @@ +- name: docker status + service: + name: docker + state: started + enabled: true + +- name: restart kubelet + service: + name: kubelet + daemon_reload: yes + state: restarted + enabled: true diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml new file mode 100644 index 0000000..ed943ee --- /dev/null +++ b/roles/common/tasks/main.yml @@ -0,0 +1,77 @@ +- name: Install packages that allow apt to be used over HTTPS + apt: + name: "{{ packages }}" + state: present + update_cache: yes + vars: + packages: + - aptitude + - 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 bionic 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 user to docker group + user: + name: "{{ ansible_user_id }}" + 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 + notify: + - restart kubelet diff --git a/roles/master/tasks/main.yml b/roles/master/tasks/main.yml new file mode 100644 index 0000000..c4ef3f2 --- /dev/null +++ b/roles/master/tasks/main.yml @@ -0,0 +1,32 @@ +- name: Initialize the Kubernetes cluster using kubeadm + command: kubeadm init --apiserver-advertise-address="{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" + +- name: Creates .kube directory + file: + path: /home/{{ ansible_user_id }}/.kube + state: directory + +- name: Copy files needed for kubectl + copy: + remote_src: yes + src: /etc/kubernetes/admin.conf + dest: /home/{{ ansible_user_id }}/.kube/config + owner: "{{ ansible_user_id }}" + group: users + +- name: Set up weave network + shell: export KUBECONFIG=/etc/kubernetes/admin.conf && export kubever=$(kubectl version | base64 | tr -d '\n') && kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever" + register: weavenet_out + +- name: Generate join command + command: kubeadm token create --print-join-command + register: kubernetes_join_command_result + +- name: Set the kubeadm join command globally. + set_fact: + kubernetes_join_command: > + {{ kubernetes_join_command_result.stdout }} + when: kubernetes_join_command_result.stdout is defined + delegate_to: "{{ item }}" + delegate_facts: true + with_items: "{{ groups['all'] }}" diff --git a/roles/worker/tasks/main.yml b/roles/worker/tasks/main.yml new file mode 100644 index 0000000..d6b9467 --- /dev/null +++ b/roles/worker/tasks/main.yml @@ -0,0 +1,4 @@ +- name: Join node to Kubernetes master + shell: > + {{ kubernetes_join_command }} + creates=/etc/kubernetes/kubelet.conf diff --git a/update.yml b/update.yml new file mode 100644 index 0000000..6438781 --- /dev/null +++ b/update.yml @@ -0,0 +1,21 @@ +--- +- name: Apply common configuration to all nodes + hosts: all + become: true + + roles: + - common + +- name: Configure and deploy Kubernetes master + hosts: master + become: true + + roles: + - master + +- name: Join workers to Kubernetes cluster + hosts: worker + become: true + + roles: + - worker