Disclaimer
I would like to thank Alex Ellis for his wonderful work in the container world.
From the moment I first read his blog, I wanted to build a RPi cluster and test stuff :)
And what you are going to find in that article is no more no less than his work that I "translated" in a playbook.
Why Ansible ? Simply because it is probably the tool that has impressed me most these past years by its simplicity, efficiency and power.
Nothing new, nothing fancy : just a playbook I wrote for me and I thought could be interesting to others.
For the playbook to run smoothly, I'm assuming you already have a configured RPi cluster and Ansible set up to interact with it. If not, you still can check my previous article on the topic.
If you are just willing to install Ansible, go to the dedicated section.
The playbook
This playbook, along with some others to come (I'm really eager to play with Kafka and Pulsar) is available on my Github.
It's here for you to have a quick overview, but if some changes were to occur, I don't think I will reflect them here. You've been warned.
---
- name: Install Docker and K8s
hosts: pi-cluster
remote_user: pi
tasks:
- block:
- name: Add encryption key for the Docker and K8s repository
apt_key:
url: "{{ item }}"
state: present
with_items:
- https://download.docker.com/linux/raspbian/gpg
- https://packages.cloud.google.com/apt/doc/apt-key.gpg
- name: Clean Docker and K8s repository files to be idempotent
file:
name: "{{ item }}"
state: absent
with_items:
- /etc/apt/sources.list.d/docker.list
- /etc/apt/sources.list.d/kubernetes.list
- name: Recreate Docker and K8s repository files
file:
name: "{{ item }}"
state: touch
with_items:
- /etc/apt/sources.list.d/docker.list
- /etc/apt/sources.list.d/kubernetes.list
- name: Add Docker and K8s repository to the list of repositories
lineinfile:
path: /etc/apt/sources.list.d/{{ item.category }}.list
line: "{{ item.url }}"
with_items:
- { url: 'deb [arch=armhf] https://download.docker.com/linux/raspbian stretch stable', category: 'docker' }
- { url: 'deb http://apt.kubernetes.io/ kubernetes-xenial main' , category: 'kubernetes' }
- name: Install packages to allow apt to use HTTPS repositories
apt:
name: "{{ item }}"
state: present
with_items:
- apt-transport-https
- ca-certificates
- software-properties-common
- name: Update list of available repositories
apt:
update_cache: yes
- name: Update all packages to the latest version
apt:
upgrade: dist
- name: Install Docker and K8s binaries
apt:
name: "{{ item }}"
state: present
with_items:
- docker-ce
- kubelet
- kubeadm
- kubectl
- kubernetes-cni
- name: Turn off swap
shell: dphys-swapfile swapoff && dphys-swapfile uninstall && update-rc.d dphys-swapfile remove
- name: Activating cgroup
lineinfile:
path: /boot/cmdline.txt
backrefs: true
regexp: '^(.*rootwait)$'
line: '\1 cgroup_enable=cpuset cgroup_memory=1'
- name: Rebooting
shell: reboot now
ignore_errors: true
become: true
ansible-playbook nameOfYourFile.yml --ask-become-pass
Once you've run it (without any errors I hope), Docker and Kubernetes should be installed and ready to use.
Have fun !
No comments:
Post a Comment