Created
December 4, 2020 14:26
-
-
Save abrader/dc8fb9fab998bfa354671d049e1962bc to your computer and use it in GitHub Desktop.
Ansible playbook for k8s basis
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
- hosts: all | |
become: true | |
become_user: root | |
become_method: sudo | |
tasks: | |
- name: SELinux disable | |
selinux: | |
state: disabled | |
- name: YUM repo for Docker | |
yum_repository: | |
name: Docker-CE-stable | |
description: Docker - Community Edition - Stable Release for EL7 | |
baseurl: https://download.docker.com/linux/centos/7/$basearch/stable | |
gpgkey: https://download.docker.com/linux/centos/gpg | |
gpgcheck: yes | |
state: present | |
- name: YUM repository for CRI-O | |
yum_repository: | |
name: devel_kubic_libcontainers_stable | |
description: Stable Releases of Upstream github.com/containers packages (CentOS_7) | |
baseurl: https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/CentOS_7/ | |
gpgkey: https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/CentOS_7/repodata/repomd.xml.key | |
gpgcheck: yes | |
state: present | |
- name: YUM repository for CRI-O 1.18.4 | |
yum_repository: | |
name: devel_kubic_libcontainers_stable_cri-o_1.18_1.18.4 | |
description: Stable Releases of CRI-O v1.18.4 (CentOS_7) | |
baseurl: https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/1.18:/1.18.4/CentOS_7/ | |
gpgkey: https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/1.18:/1.18.4/CentOS_7/repodata/repomd.xml.key | |
gpgcheck: yes | |
state: present | |
- name: Prereq RPM packages | |
yum: | |
name: "{{ packages }}" | |
state: present | |
update_cache: yes | |
vars: | |
packages: | |
- deltarpm | |
- yum-utils | |
- device-mapper-persistent-data | |
- lvm2 | |
- name: Install docker and its dependecies | |
yum: | |
name: "{{ packages }}" | |
state: present | |
update_cache: yes | |
vars: | |
packages: | |
- docker-ce | |
- docker-ce-cli | |
- containerd.io | |
- podman | |
- cri-o | |
notify: | |
- docker status | |
- name: firewalld stop and disable | |
service: | |
name: firewalld | |
state: stopped | |
enabled: no | |
- name: Create necessary Docker dir | |
file: | |
path: /etc/systemd/system/docker.service.d | |
state: directory | |
mode: '0755' | |
- name: Created Docker config dir | |
file: | |
path: /etc/docker | |
state: directory | |
mode: '0755' | |
- name: Place Docker configuration file | |
copy: | |
src: /vagrant/daemon.json | |
dest: /etc/docker/daemon.json | |
owner: root | |
group: root | |
mode: '0644' | |
- name: Docker daemon_reload | |
systemd: | |
name: docker | |
state: reloaded | |
- name: enable and run docker | |
service: | |
name: docker | |
state: started | |
enabled: yes | |
# - name: enable and run CRI-O | |
# service: | |
# name: crio | |
# state: started | |
# enabled: yes | |
- 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: YUM key for Kubernetes | |
rpm_key: | |
key: https://packages.cloud.google.com/yum/doc/yum-key.gpg | |
state: present | |
- name: RPM key for Kubernetes | |
rpm_key: | |
key: https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg | |
state: present | |
- name: YUM repository for Kubernetes | |
yum_repository: | |
name: Kubernetes-EL7 | |
description: Kubernetes for EL7 x86_64 | |
baseurl: https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 | |
state: present | |
- name: Install Kubernetes binaries | |
yum: | |
name: "{{ packages }}" | |
state: present | |
update_cache: yes | |
vars: | |
packages: | |
- kubelet | |
- kubeadm | |
- kubectl | |
- name: Configure node ip | |
lineinfile: | |
create: yes | |
path: /etc/default/kubelet | |
line: KUBELET_EXTRA_ARGS=--node-ip={{ node_ip }} | |
- name: Try again | |
shell: echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables | |
- name: Restart kubelet | |
service: | |
name: kubelet | |
daemon_reload: yes | |
state: restarted | |
- name: Initialize the Kubernetes cluster using kubeadm | |
command: kubeadm init --apiserver-advertise-address="172.24.5.10" --apiserver-cert-extra-sans="172.24.5.10" --node-name k8s-master --pod-network-cidr=172.24.0.0/16 | |
- name: Setup kubeconfig for root user | |
command: "{{ item }}" | |
with_items: | |
- mkdir -p /root/.kube | |
- cp -i /etc/kubernetes/admin.conf /root/.kube/config | |
- chown root:root /root/.kube/config | |
# - name: kubeconfig dir for vagrant | |
# file: | |
# path: /home/vagrant/.kube | |
# state: directory | |
# mode: '0700' | |
# - name: Kubeconfig file for vagrant | |
# copy: | |
# src: /etc/kubernetes/admin.conf | |
# dest: /vagrant/.kube/config | |
# owner: vagrant | |
# group: vagrant | |
# mode: '0744' | |
- name: Install calico pod network | |
become: false | |
command: kubectl apply -f https://docs.projectcalico.org/v3.9/manifests/calico.yaml | |
- name: Generate join command | |
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 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment