mirror of
https://github.com/lukaszraczylo/rpi-home-cluster-setup.git
synced 2026-10-18 01:27:31 +00:00
Home K8S setup
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
---
|
||||
- name: Install packages - filesystem
|
||||
ansible.builtin.package:
|
||||
name:
|
||||
- e2fsprogs
|
||||
- parted
|
||||
state: present
|
||||
|
||||
- name: Create partition for perm data
|
||||
community.general.parted:
|
||||
device: /dev/mmcblk0
|
||||
number: 2
|
||||
fs_type: ext4
|
||||
part_start: 1GiB
|
||||
part_end: 100%
|
||||
flags: [ boot ]
|
||||
state: present
|
||||
|
||||
- name: Fomat perm data partition
|
||||
community.general.filesystem:
|
||||
dev: /dev/mmcblk0p2
|
||||
fstype: ext4
|
||||
ignore_errors: yes
|
||||
|
||||
- name: Re-mount old data partition
|
||||
ansible.posix.mount:
|
||||
path: /media/mmcblk0p1
|
||||
src: /dev/mmcblk0p1
|
||||
opts: rw
|
||||
state: remounted
|
||||
|
||||
- name: Mount perm data partition
|
||||
ansible.posix.mount:
|
||||
path: /mnt
|
||||
src: /dev/mmcblk0p2
|
||||
opts: rw
|
||||
fstype: ext4
|
||||
state: mounted
|
||||
|
||||
- name: Overwrite setup-disk
|
||||
ansible.builtin.copy:
|
||||
src: static/setup-disk
|
||||
dest: /sbin/setup-disk
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0744'
|
||||
backup: yes
|
||||
|
||||
- name: Setup new disk as system
|
||||
ansible.builtin.command:
|
||||
cmd: setup-disk -m sys /mnt
|
||||
creates: /mnt/bin/date
|
||||
|
||||
- name: Housekeeping
|
||||
ansible.builtin.shell:
|
||||
cmd: |
|
||||
rm -f /media/mmcblk0p1/boot/*
|
||||
cd /mnt
|
||||
rm boot/boot
|
||||
mv boot/* /media/mmcblk0p1/boot/
|
||||
rm -Rf boot
|
||||
mkdir media/mmcblk0p1
|
||||
ln -s media/mmcblk0p1/boot boot
|
||||
removes: /mnt/boot/boot
|
||||
|
||||
- name: Add mountpoints to fstab
|
||||
ansible.builtin.shell:
|
||||
cmd: |
|
||||
echo "/dev/mmcblk0p1 /media/mmcblk0p1 vfat defaults 0 0" >> etc/fstab
|
||||
echo "/dev/mmcblk0p1 /media/mmcblk0p1 vfat defaults 0 0" >> /etc/fstab
|
||||
sed -i '/cdrom/d' etc/fstab
|
||||
sed -i '/floppy/d' etc/fstab
|
||||
sed -i '/usbdisk/d' etc/fstab
|
||||
touch /mnt/.nvm_mountpoints
|
||||
chdir: /mnt
|
||||
creates: /mnt/.nvm_mountpoints
|
||||
|
||||
- name: Enable repositories and cgroups
|
||||
ansible.builtin.shell:
|
||||
cmd: |
|
||||
sed -i '/edge/s/^#//' /mnt/etc/apk/repositories
|
||||
sed -i 's/^/root=\/dev\/mmcblk0p2 /' /media/mmcblk0p1/cmdline.txt
|
||||
echo "cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1" >> /media/mmcblk0p1/cmdline.txt
|
||||
sed -i ':a;N;$!ba;s/\n/ /g' /media/mmcblk0p1/cmdline.txt
|
||||
touch /mnt/.nvm_cgroups
|
||||
creates: /mnt/.nvm_cgroups
|
||||
|
||||
- name: Commit changes
|
||||
ansible.builtin.shell:
|
||||
chdir: /media/mmcblk0p1
|
||||
cmd: lbu_commit -d || true
|
||||
|
||||
- name: Reboot
|
||||
reboot:
|
||||
@@ -0,0 +1,11 @@
|
||||
---
|
||||
- name: Pull basic images
|
||||
ansible.builtin.shell:
|
||||
cmd: kubeadm config images pull
|
||||
|
||||
- name: Install helm
|
||||
ansible.builtin.shell:
|
||||
cmd: |
|
||||
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
|
||||
creates: /etc/kubernetes/kubelet.conf
|
||||
register: k8sinit_output
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
- name: Check for base system config lockfile
|
||||
stat: path="/mnt/.nvm_mountpoints"
|
||||
register: basic_config_lock
|
||||
- include: filesystem.yml
|
||||
when: basic_config_lock.stat.exists == False
|
||||
- include: networking.yml
|
||||
- include: kubernetes.yml
|
||||
- include: nfs.yml
|
||||
@@ -0,0 +1,68 @@
|
||||
---
|
||||
- name: Set hostname
|
||||
ansible.builtin.hostname:
|
||||
name: '{{ inventory_hostname }}'
|
||||
|
||||
- name: "Build hosts file"
|
||||
lineinfile:
|
||||
dest: /etc/hosts
|
||||
regexp: '.*{{ item }}$'
|
||||
line: "{{hostvars[item]['ansible_default_ipv4']['address']}} {{item}} {{item}}.local"
|
||||
state: present
|
||||
register: etchostsupdate
|
||||
when: hostvars[item]['ansible_facts']['default_ipv4'] is defined
|
||||
with_items:
|
||||
- "{{ groups['all'] }}"
|
||||
|
||||
- name: Install packages for networking
|
||||
ansible.builtin.package:
|
||||
name:
|
||||
- dbus
|
||||
- avahi
|
||||
- kubernetes
|
||||
- kubectl
|
||||
- docker
|
||||
- cni-plugins
|
||||
- kubelet
|
||||
- kubeadm
|
||||
- sudo
|
||||
- curl
|
||||
state: present
|
||||
|
||||
- name: Enable service dbus
|
||||
ansible.builtin.service:
|
||||
name: dbus
|
||||
state: started
|
||||
enabled: yes
|
||||
|
||||
- name: Overwrite avahi config
|
||||
ansible.builtin.copy:
|
||||
src: static/avahi-config
|
||||
dest: /etc/avahi/avahi-daemon.conf
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
backup: yes
|
||||
|
||||
- name: Enable service avahi
|
||||
ansible.builtin.service:
|
||||
name: avahi-daemon
|
||||
state: restarted
|
||||
enabled: yes
|
||||
|
||||
- name: Enable service docker
|
||||
ansible.builtin.service:
|
||||
name: docker
|
||||
state: started
|
||||
enabled: yes
|
||||
|
||||
- name: Enable service kubelet
|
||||
ansible.builtin.service:
|
||||
name: kubelet
|
||||
state: started
|
||||
enabled: yes
|
||||
|
||||
- name: Enable promisc mode for ARP requests
|
||||
ansible.builtin.shell:
|
||||
cmd: |
|
||||
ip link set eth0 promisc on
|
||||
@@ -0,0 +1,34 @@
|
||||
---
|
||||
- name: Install nfsprogs
|
||||
ansible.builtin.package:
|
||||
name:
|
||||
- nfs-utils
|
||||
|
||||
- name: Prepare nfs mountpoint
|
||||
ansible.builtin.shell:
|
||||
cmd: |
|
||||
mkdir -p /media/nfs
|
||||
|
||||
- name: Mount NFS resources
|
||||
ansible.posix.mount:
|
||||
src: "{{settings.nfs_host}}:{{settings.nfs_multi_share_path}}"
|
||||
path: /media/nfs
|
||||
fstype: nfs
|
||||
opts: nofail,noatime,nolock,tcp,actimeo=1800
|
||||
state: mounted
|
||||
|
||||
- name: Mount NFS torrent
|
||||
ansible.posix.mount:
|
||||
src: "{{settings.nfs_host}}:{{settings.nfs_torrent_path}}"
|
||||
path: /mnt/drobo-storage/docker-volumes/torrent
|
||||
fstype: nfs
|
||||
opts: nofail,noatime,nolock,tcp,actimeo=1800
|
||||
state: mounted
|
||||
|
||||
- name: Mount NFS adguard
|
||||
ansible.posix.mount:
|
||||
src: "{{settings.nfs_host}}:{{settings.nfs_adguard_path}}"
|
||||
path: /mnt/drobo-storage/docker-volumes/adguard
|
||||
fstype: nfs
|
||||
opts: nofail,noatime,nolock,tcp,actimeo=1800
|
||||
state: mounted
|
||||
Reference in New Issue
Block a user