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