54 lines
2.1 KiB
Bash
54 lines
2.1 KiB
Bash
# The mount points the tasks use must be free.
|
|
for m in /srv/archive /mnt/data /srv/web; do
|
|
if findmnt -n "$m" >/dev/null || awk -v m="$m" '$1 !~ /^#/ && $2 == m' /etc/fstab | grep -q .; then
|
|
refuse "$m is already mounted or in /etc/fstab; free it first"
|
|
fi
|
|
done
|
|
vgs research >/dev/null 2>&1 && refuse "a volume group called research already exists"
|
|
vgs vg_web >/dev/null 2>&1 && refuse "a volume group called vg_web already exists"
|
|
|
|
# The control node: ansible-core and greg's project, with a key the nodes
|
|
# already accept, and sudo without a password for the localhost plays.
|
|
pkg_installed ansible-core || { echo ansible-core >>"$LAB_STATE/missing"; pkg_install ansible-core; }
|
|
user_add greg
|
|
printf 'greg ALL=(ALL) NOPASSWD: ALL\n' >/etc/sudoers.d/le-lab-greg
|
|
chmod 440 /etc/sudoers.d/le-lab-greg
|
|
install -d -m 700 -o greg -g greg /home/greg/.ssh
|
|
runuser -u greg -- ssh-keygen -q -t ed25519 -N '' -f /home/greg/.ssh/id_ed25519
|
|
install -d -m 755 -o greg -g greg /home/greg/ansible
|
|
cat >/home/greg/ansible/ansible.cfg <<'X'
|
|
[defaults]
|
|
inventory = inventory
|
|
remote_user = devops
|
|
host_key_checking = false
|
|
|
|
[privilege_escalation]
|
|
become = true
|
|
X
|
|
cat >/home/greg/ansible/inventory <<'X'
|
|
[storage]
|
|
localhost ansible_connection=local
|
|
|
|
[nodes]
|
|
node1
|
|
X
|
|
chown greg: /home/greg/ansible/ansible.cfg /home/greg/ansible/inventory
|
|
|
|
# One managed node, prepared as in chapter 3.1 (devops with greg's key and
|
|
# passwordless sudo), with the LVM tools but no disks: a host without the
|
|
# volume group (task 2).
|
|
nodes_up 1
|
|
in_node -i node1 'useradd -m devops && install -d -m 700 -o devops -g devops /home/devops/.ssh &&
|
|
cat >/home/devops/.ssh/authorized_keys && chown devops: /home/devops/.ssh/authorized_keys &&
|
|
chmod 600 /home/devops/.ssh/authorized_keys &&
|
|
echo "devops ALL=(ALL) NOPASSWD: ALL" >/etc/sudoers.d/devops && chmod 440 /etc/sudoers.d/devops' \
|
|
</home/greg/.ssh/id_ed25519.pub
|
|
in_node node1 dnf -y -q install lvm2 >/dev/null
|
|
# What's installed here now; reset removes what the tasks add.
|
|
rpm -qa --qf '%{NAME}\n' | sort -u >"$LAB_STATE/rpms"
|
|
|
|
# The control node's spare disks.
|
|
disk_add 0 2G >/dev/null
|
|
disk_add 1 1G >/dev/null
|
|
disk_add 2 2G >/dev/null
|