Skip to content

Instantly share code, notes, and snippets.

@abrader
Created December 4, 2020 14:26
Show Gist options
  • Save abrader/dc8fb9fab998bfa354671d049e1962bc to your computer and use it in GitHub Desktop.
Save abrader/dc8fb9fab998bfa354671d049e1962bc to your computer and use it in GitHub Desktop.
Ansible playbook for k8s basis
---
- 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