diff --git a/ansible-desktop.yml b/ansible-desktop.yml index ff719d8..ff6b259 100644 --- a/ansible-desktop.yml +++ b/ansible-desktop.yml @@ -1,7 +1,13 @@ --- -- name: Base playbook +- name: docker-units playbook hosts: docker-units roles: - { role: common, become: true } - { role: docker, become: true } + - { role: docker-compose, become: true } + +- name: k8s playbook + hosts: docker-units + roles: + - { role: common, become: true } ... diff --git a/hosts b/hosts index a45e710..13baaef 100644 --- a/hosts +++ b/hosts @@ -1,8 +1,20 @@ +[k8s:children] +k8s-master +k8s-worker + +[k8s-master] +k8s-master-01 ansible_host=192.168.1.180 +k8s-master-02 ansible_host=192.168.1.181 + +[k8s-worker] +k8s-worker-01 ansible_host=192.168.1.190 +k8s-worker-02 ansible_host=192.168.1.191 + [docker-units] -10.10.10.6 -192.168.1.151 +homeassistant ansible_host=10.10.10.6 +pi-hole ansible_host=192.168.1.151 -[docker-units:vars] +[all:vars] ansible_connection=ssh ansible_ssh_private_key_file=/home/fedy95/.ssh/id_rsa ansible_user=fedy95 diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml index e4c0b45..96d712d 100644 --- a/roles/common/tasks/main.yml +++ b/roles/common/tasks/main.yml @@ -25,4 +25,14 @@ - name: Upgrade installed packages apt: upgrade=yes + +- name: Disable all swaps from /proc/swaps + shell: | + swapoff --all + +- name: Disable SWAP in fstab + lineinfile: + path: /etc/fstab + regexp: 'swap' + state: absent ... diff --git a/roles/docker/tasks/docker-compose.yml b/roles/docker-compose/tasks/main.yml similarity index 100% rename from roles/docker/tasks/docker-compose.yml rename to roles/docker-compose/tasks/main.yml diff --git a/roles/docker/vars/main.yml b/roles/docker-compose/vars/main.yml similarity index 100% rename from roles/docker/vars/main.yml rename to roles/docker-compose/vars/main.yml diff --git a/roles/docker/tasks/docker.yml b/roles/docker/tasks/docker.yml deleted file mode 100644 index 92c19bf..0000000 --- a/roles/docker/tasks/docker.yml +++ /dev/null @@ -1,52 +0,0 @@ ---- -- name: Update apt cache - apt: - update_cache: yes - cache_valid_time: "{{ aptcachetime }}" - -- name: Upgrade all apt packages - apt: upgrade=dist - -- name: Install docker packages - apt: - name: "{{ item }}" - state: present - update_cache: yes - loop: - - 'apt-transport-https' - - 'ca-certificates' - - 'curl' - - 'gnupg' - - 'lsb-release' - -- name: Add Docker GPG key - apt_key: - url: https://download.docker.com/linux/ubuntu/gpg - state: present - -- name: Add deb repository - apt_repository: - repo: deb https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable - state: present - update_cache: yes - -- name: Install docker - apt: - name: "{{ item }}" - state: present - update_cache: yes - loop: - - 'docker-ce' - - 'docker-ce-cli' - - 'containerd.io' - -- name: Ensure docker users are added to the docker group. - user: - name: "{{ item }}" - groups: docker - append: true - with_items: "{{ ansible_env.USER }}" - -- name: "Ensure Docker is {{ docker.start | ternary('started','stopped') }}" - service: name=docker state={{ docker.start | ternary('restarted','stopped') }} enabled={{ docker.service_enabled }} -... diff --git a/roles/docker/tasks/main.yml b/roles/docker/tasks/main.yml index 9e33dc7..92c19bf 100644 --- a/roles/docker/tasks/main.yml +++ b/roles/docker/tasks/main.yml @@ -1,4 +1,52 @@ --- -- include_tasks: docker.yml -- include_tasks: docker-compose.yml +- name: Update apt cache + apt: + update_cache: yes + cache_valid_time: "{{ aptcachetime }}" + +- name: Upgrade all apt packages + apt: upgrade=dist + +- name: Install docker packages + apt: + name: "{{ item }}" + state: present + update_cache: yes + loop: + - 'apt-transport-https' + - 'ca-certificates' + - 'curl' + - 'gnupg' + - 'lsb-release' + +- name: Add Docker GPG key + apt_key: + url: https://download.docker.com/linux/ubuntu/gpg + state: present + +- name: Add deb repository + apt_repository: + repo: deb https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable + state: present + update_cache: yes + +- name: Install docker + apt: + name: "{{ item }}" + state: present + update_cache: yes + loop: + - 'docker-ce' + - 'docker-ce-cli' + - 'containerd.io' + +- name: Ensure docker users are added to the docker group. + user: + name: "{{ item }}" + groups: docker + append: true + with_items: "{{ ansible_env.USER }}" + +- name: "Ensure Docker is {{ docker.start | ternary('started','stopped') }}" + service: name=docker state={{ docker.start | ternary('restarted','stopped') }} enabled={{ docker.service_enabled }} ... diff --git a/roles/kube-dependencies/tasks/main.yml b/roles/kube-dependencies/tasks/main.yml new file mode 100644 index 0000000..cf714be --- /dev/null +++ b/roles/kube-dependencies/tasks/main.yml @@ -0,0 +1,82 @@ +- hosts: k8s + - name: add Kubernetes apt-key + apt_key: + url: https://packages.cloud.google.com/apt/doc/apt-key.gpg + state: present + + - name: add Kubernetes' APT repository + apt_repository: + repo: deb http://apt.kubernetes.io/ kubernetes-xenial main + state: present + filename: 'kubernetes' + + - name: install kubelet + apt: + name: kubelet={{ kube_version }} + state: present + update_cache: true + + - name: install kubeadm + apt: + name: kubeadm={{ kube_version }} + state: present + +- hosts: k8s-master + become: yes + tasks: + - name: install kubectl + apt: + name: kubectl={{ kube_version }} + state: present + force: yes + + - name: initialize the cluster + shell: kubeadm init --pod-network-cidr=10.244.0.0/16 >> cluster_initialized.txt + args: + chdir: $HOME + creates: cluster_initialized.txt + + - name: create .kube directory + become: yes + become_user: ubuntu + file: + path: $HOME/.kube + state: directory + mode: 0755 + + - name: copy admin.conf to user's kube config + copy: + src: /etc/kubernetes/admin.conf + dest: /home/ubuntu/.kube/config + remote_src: yes + owner: ubuntu + + - name: install Pod network + become: yes + become_user: ubuntu + shell: kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml >> pod_network_setup.txt + args: + chdir: $HOME + creates: pod_network_setup.txt + +- hosts: k8s-master + become: yes + gather_facts: false + tasks: + - name: get join command + shell: kubeadm token create --print-join-command + register: join_command_raw + + - name: set join command + set_fact: + join_command: "{{ join_command_raw.stdout_lines[0] }}" + + +- hosts: k8s-workers + become: yes + tasks: + - name: join cluster + shell: "{{ hostvars['master'].join_command }} >> node_joined.txt" + args: + chdir: $HOME + creates: node_joined.txt diff --git a/roles/kube-dependencies/vars/main.yml b/roles/kube-dependencies/vars/main.yml new file mode 100644 index 0000000..fb9fe16 --- /dev/null +++ b/roles/kube-dependencies/vars/main.yml @@ -0,0 +1,3 @@ +--- +kube_version: "1.14.0-00" +...