Commit Graph

168 Commits

Author SHA1 Message Date
Joshua Boniface efeaa61e0f Add customizable NTP servers 2023-09-01 15:42:29 -04:00
Joshua Boniface e9f76042bd Allow specifying alternate channels in IPMI 2023-09-01 15:42:29 -04:00
Joshua Boniface 34d12ab423 Add Ceph check 2023-09-01 15:42:29 -04:00
Joshua Boniface 84a3f7afa0 Add edac-utils to packages 2023-09-01 15:42:29 -04:00
Joshua Boniface 612045b8b3 Restore original rsyslog-rotate script
Direct call doesn't work because of how arguments are passed to
postrotate.
2023-09-01 15:42:29 -04:00
Joshua Boniface 5cd9566163 Explicitly use systemctl in logrotate
For some reason (Debian bug?) the default rsyslog-rotate script was not
properly rotating rsyslog logfiles. Instead, explicitly call systemctl
kill -s HUP for this, using a full path.
2023-09-01 15:42:29 -04:00
Joshua Boniface 57010260bd Use full debian_version 2023-09-01 15:42:29 -04:00
Joshua Boniface 2a925904e4 Alter format of Debian version in MOTD 2023-09-01 15:42:29 -04:00
Joshua Boniface a79961605a Replace per-user htoprc with system-wide config
Also update to newer htoprc layout from BLSE.
2023-09-01 15:42:29 -04:00
Joshua Boniface 5a48ec4d79 Ensure CPU tuning is only applied on Debian 11+ 2023-09-01 15:42:29 -04:00
Joshua Boniface 07d75573d6 Add updated tuning configuration
Uses a much nicer CPU tuning configuration, leveraging systemd's
AllowedCPUs and CPUAffinity options within a set of slices (some
default, some custom).

Configuration is also greatly simplified versus the previous
implementation, simply asking for a number of CPUS for both the system
and OSDs, and calculating everything else that is required.

Also switches (back) to the v2 unified cgroup hierarchy by default as
required by the systemd AllowedCPUs directive.
2023-09-01 15:42:29 -04:00
Joshua Boniface 8f685116b7 Add Ceph monitor backup 2023-09-01 15:42:29 -04:00
Joshua Boniface c3ce11dacf Fix update-motd so it runs properly 2023-09-01 15:42:29 -04:00
Joshua Boniface 267494d58a Add lm-sensors configuration 2023-09-01 15:42:29 -04:00
Joshua Boniface d94f587e37 Remove obsolete logrotate settings 2023-09-01 15:42:29 -04:00
Joshua Boniface 73e1f2042c Add extra space for clarity 2023-09-01 15:42:29 -04:00
Joshua Boniface 30ddeb0fee Update MOTD automatically on boot
The cron every minute was pointlessly excessive considering this doesn't
actually change minute-to-minute.
2023-09-01 15:42:29 -04:00
Joshua Boniface 86026de8ef Adjust colour scheme of MOTD 2023-09-01 15:42:29 -04:00
Joshua Boniface 8e1d005d43 Obtain more information for MOTD header
Add model and serial numbers to the vendor, and put this on its own
line. Also use BASH for proper syntax formatting. Reformat the header to
be a more compact format.
2023-09-01 15:42:29 -04:00
Joshua Boniface b987c4ea8f Adjust GRUB_DIST and add UEFI regeneration
Keeps the UEFI boot list cleaned and consistent
2023-09-01 15:42:29 -04:00
Joshua Boniface 08c8be66b3 Increase timeout threshold for freshness 2023-09-01 15:42:28 -04:00
Joshua Boniface 00482aec06 Fix the other instance too 2023-09-01 15:42:28 -04:00
Joshua Boniface da98a4d445 Ignore errors about removing keys 2023-09-01 15:42:28 -04:00
Joshua Boniface e8fe165e00 Further optimize ownership agent output 2023-09-01 15:42:28 -04:00
Joshua Boniface cbea6e284c Make ownership check consistent with cmk-agent 2.1
The new CheckMK agent uses UID 998 (dynamic) for itself. This causes
ownership problems with the old logic of this check. Move instead to a
range, where the UIDs from 200-599 are reserved for administrators, and
check for this range explicitly. Also eliminates the exceptions for ceph
and 2000 from previous iterations.
2023-09-01 15:42:28 -04:00
Joshua Boniface 9e20e47903 Update freshness checks 2023-09-01 15:42:28 -04:00
Joshua Boniface d47d320bb3 Replace freshness and kernel_version checks
Use an updated plugin from BLSE that uses needrestart instead of manual
parsing of these elements.
2023-09-01 15:42:28 -04:00
Joshua Boniface ea9fe5570f Add method to remove inactive SSH keys 2023-09-01 15:42:28 -04:00
Joshua Boniface ce9304e43e Populate /etc/timezone as well 2023-09-01 15:42:28 -04:00
Joshua Boniface aa6b4ac3dc Make locale generation universal
Don't rely on a notify/handler, just do it every time in the base role.
2023-09-01 15:42:28 -04:00
Joshua Boniface 35dcf979f4 Customize grub distributor 2023-09-01 15:42:28 -04:00
Joshua Boniface ba81a106d2 Set postfix to listen on all interfaces
Binding to just localhost was causing problems.
2023-09-01 15:42:28 -04:00
Joshua Boniface a87745d640 Fix name of task 2023-09-01 15:42:28 -04:00
Joshua Boniface 77be96bf6f Fix a few more splits 2023-09-01 15:42:28 -04:00
Joshua Boniface 95b47f8b09 Fix a few more extraneous splits
Just use this_node if applicable, or the raw node.hostname.
2023-09-01 15:42:28 -04:00
Joshua Boniface d24cb8a8ef Unify and standardize inventory_hostname
This was causing some confusing conflicts, so create a new fact called
"this_node" which is inventory_hostname.split('.')[0], i.e. the short
name, and use that everywhere instead of an FQDN or true inventory
hostname.
2023-09-01 15:42:28 -04:00
Joshua Boniface 056c325486 Add option for setting CPU governor
Allows the administrator to set a CPU frequency governor if they need
to, though the default of ondemand is usually sufficient.
2023-09-01 15:42:28 -04:00
Joshua Boniface fc5bcf139c Fix name of IPMI check again 2023-09-01 15:42:28 -04:00
Joshua Boniface 44cedf66c9 Fix name of ipmi check 2023-09-01 15:42:28 -04:00
Joshua Boniface 9f7dbfb4f8 Add IPMI check to tasks 2023-09-01 15:42:28 -04:00
Joshua Boniface b9ae4d1009 Adjust headers and add LOM check 2023-09-01 15:42:27 -04:00
Joshua Boniface 48fb21af75 Add node list to PVC MOTD 2023-09-01 15:42:27 -04:00
Joshua Boniface e009cf4076 Fix whitespaced manufacturer and bad [[ 2023-09-01 15:42:27 -04:00
Joshua Boniface e65f1d15a6 Add coordinator state to MOTD 2023-09-01 15:42:27 -04:00
Joshua Boniface 894ce9b517 Support unknown manufacturers in MOTD 2023-09-01 15:42:27 -04:00
Joshua Boniface b814ec60f6 Add resolv.conf customization 2023-09-01 15:42:27 -04:00
Joshua Boniface ddecb94348 Disable unified cgroup heirarchy on kernel cmdline
This is required on Debian 11 to use the cset tool, since the newer
systemd implementation of a unified cgroup hierarchy is not compatible
with the cset tool.

Ref for future use:
  https://github.com/lpechacek/cpuset/issues/40
2023-09-01 15:42:27 -04:00
Joshua Boniface be3ce67574 Use inventory_hostname in IPMI fragment 2023-09-01 15:42:27 -04:00
Joshua Boniface 5f05835721 Update bondX configuration 2023-09-01 15:42:27 -04:00
Joshua Boniface 9f16995f59 Add smartmontools to base package list 2023-09-01 15:42:27 -04:00
Joshua Boniface 45424a28ce Fix bad flag 2023-09-01 15:42:27 -04:00
Joshua Boniface 044a14fa6d Add package installs for different Debian versions 2023-09-01 15:42:27 -04:00
Joshua Boniface ae40227ea1 Move paths and keys to defaults 2023-09-01 15:42:27 -04:00
Joshua Boniface 86eaeed2b4 Fix sources.list for Bullseye 2023-09-01 15:42:26 -04:00
Joshua Boniface 4b0a4ae73c Fix bad Ansible variable name 2023-09-01 15:42:26 -04:00
Joshua Boniface 7bacbd5dd6 Don't fail if IPMI tasks fail 2023-09-01 15:42:26 -04:00
Joshua Boniface eef0f959dd Add GRUB, Plymouth themes and issue for PVC 2023-09-01 15:42:26 -04:00
Joshua Boniface 6d3e5ac728 Fix zkcli for good 2023-09-01 15:42:26 -04:00
Joshua Boniface bace67b8bf Add GRUB configuration to Ansible role 2023-09-01 15:42:26 -04:00
Joshua Boniface 35089f6dda Fix zkcli alias to use hostname 2023-09-01 15:42:26 -04:00
Joshua Boniface 9dc9139c35 Use short ansible_hostname in ipmi fragment 2023-09-01 15:42:26 -04:00
Joshua Boniface 329bc9690e Add ipmitool to packages list 2023-09-01 15:42:26 -04:00
Joshua Boniface 0fc889df32 Ensure we can connect to Patroni 2023-09-01 15:42:26 -04:00
Joshua Boniface c9df64bc7d Ensure deb-src is present for bullseye 2023-09-01 15:42:26 -04:00
Joshua Boniface 3a67dc129b Ensure DEBIAN_FRONTEND is noninteractive 2023-09-01 15:42:26 -04:00
Joshua Boniface a548bdcc6a Use inventory_hostname for IPMI dict 2023-09-01 15:42:26 -04:00
Joshua Boniface 6104e0a5a5 Use independent fact to work around codename 2023-09-01 15:42:26 -04:00
Joshua Boniface 5c46bb0db7 Ensure backup_keys isn't empty 2023-09-01 15:42:25 -04:00
Joshua Boniface d69770b776 Avoid writing hosts if empty 2023-09-01 15:42:25 -04:00
Joshua Boniface f4e49b9d3e Ensure apt-update runs if configs update 2023-09-01 15:42:25 -04:00
Joshua Boniface 9438ab46d7 Add bullseye support 2023-09-01 15:42:25 -04:00
Joshua Boniface dc83f91bd8 Add directory creation to backup script 2023-09-01 15:42:25 -04:00
Joshua Boniface 5466df7065 Add PostgreSQL to daily backup script 2023-09-01 15:42:25 -04:00
Joshua Boniface c9742fe2e5 Update tags and fix backup keys to var 2023-09-01 15:42:25 -04:00
Joshua Boniface 7c7ca4a229 Allow inter-cluster orphan NTP sync
Due to the requirement of Ceph to have all peer nodes tightly
synchronized with each other to come online, PVC nodes need a way to
synchronize to each other even in the absence of an external time
reference. This is especially prevalent if a set of nodes are left
offline for an extended period (>1-2 weeks), since their hardware clocks
will drift. If the resulting Internet connectivity is then dependent on
a VM, this will cause a catch-22 and the cluster will not properly
start.

This configuration will accomplish that - if no suitable >6 stratum
peers are found, the hosts will enter orphan mode. Since they are now
all configured as "peers" with each other, they will collectively decide
on one of them to become the source and sync to it. A local stratum 10
fudge is added so that at least one of the nodes can become this source.

While this is not an ideal use of NTP, it is by far the cleanest
solution to this problem, and does not impact normal functionality when
the two configured stratum-2 servers are reachable.
2023-09-01 15:42:25 -04:00
Joshua Boniface e53342474c Remove GRUB config from base role
This is not actually ideal.
2023-09-01 15:42:25 -04:00
Joshua Boniface 4666db17cb Fix version sorting bugs in kernel-cleanup.sh 2023-09-01 15:42:25 -04:00
Joshua Boniface 6903627150 Add additional items to base role
Backups, GRUB configuration, and IPMI configuration.
2023-09-01 15:42:25 -04:00
Joshua Boniface c96ad603b0 Fix sudoers to use conditional deploy_username 2023-09-01 15:42:25 -04:00
Joshua Boniface 29363ebf80 Allow configurable fail2ban IPs 2023-09-01 15:42:25 -04:00
Joshua Boniface d9be39a048 Allow customization of deploy username 2023-09-01 15:42:25 -04:00
Joshua Boniface 4dc5ebdba0 Move to more dynamic apt configs
Allow specifying repository URLs in the group_vars, and add
release-specific template files to support future version changes.
2023-09-01 15:42:25 -04:00
Joshua Boniface 57e5953fd1 Add sensible sorting of kernel removals 2023-09-01 15:42:25 -04:00
Joshua Boniface 2a72a826f5 Remove cruft and add mkpasswd setup 2023-09-01 15:42:25 -04:00
Joshua Boniface bf02da693f Correct bad indentation in base role 2023-09-01 15:42:25 -04:00
Joshua Boniface 1f6cb077fa Update tags and add kernel-cleanup script 2023-09-01 15:42:25 -04:00
Joshua Boniface c0dc6fad4e Add some additional compression libraries 2023-09-01 15:42:25 -04:00
Joshua Boniface a4be011884 Add local domain to resolver config 2023-09-01 15:42:25 -04:00
Joshua Boniface 075ce8ea22 Add PVC status MOTD script 2023-09-01 15:42:24 -04:00
Joshua Boniface 68a475ccf9 Set proper mode on agent plugins 2023-09-01 15:42:24 -04:00
Joshua Boniface f86ec62416 Add check-mk-agent plugin installs
These are used by various Ansible tasks, even if the administrator is
not using Check_MK for monitoring.
2023-09-01 15:42:24 -04:00
Joshua Boniface 62d53b0c9c Add PCI and USB utils 2023-09-01 15:42:24 -04:00
Joshua Boniface a8419be587 Use generic Debian repos and PVC component 2023-09-01 15:42:24 -04:00
Joshua Boniface 777a4693a1 Improve SSH configuration for nodes
Ensure hostbased auth works with configs, remove erroneous old
conditional for authtypes, remove obsolete config option.
2023-09-01 15:42:24 -04:00
Joshua Boniface 88209a2b70 Use Google DNS instead of Cloudflare
For some reason Cloudflare works in fewer places than Google, so just
use it instead.
2023-09-01 15:42:24 -04:00
Joshua Boniface fbbf5ffe09 Use cluster_group variable for paths
Instead of trying to automagic this group out of the Ansible hostvars,
just make it explicitly defined in the group_vars to avoid any
confusion.
2023-09-01 15:42:23 -04:00
Joshua Boniface 715fa103cd Ensure uuid-runtime is installed 2023-09-01 15:42:23 -04:00
Joshua Boniface 0566aadfb0 Remove obsolete issue-gen script on install 2023-09-01 15:42:23 -04:00
Joshua Boniface 7e653d52c3 Include upstream and short names in hosts 2023-09-01 15:42:23 -04:00
Joshua Boniface e7e7f2cc96 Don't remove nano 2023-09-01 15:42:22 -04:00