OS Upgrade » History » Version 20
Marc Dequènes, 2023-06-29 03:04
1 | 1 | Marc Dequènes | h1. OS Upgrade |
---|---|---|---|
2 | |||
3 | This is a list of steps as guidelines for OS upgrades. |
||
4 | |||
5 | 16 | Marc Dequènes | * review APT pinnings in Ansible |
6 | 1 | Marc Dequènes | * create a temporary _group_vars/<new-suite>/system.yml_ in a git branch: |
7 | |||
8 | <pre> |
||
9 | --- |
||
10 | system: |
||
11 | distribution: |
||
12 | debian: |
||
13 | 17 | Marc Dequènes | codename: bookworm |
14 | 1 | Marc Dequènes | dc: |
15 | 17 | Marc Dequènes | codename: bookworm |
16 | 1 | Marc Dequènes | |
17 | </pre> |
||
18 | |||
19 | 18 | Marc Dequènes | * check if there other places where the old suite name is used and update them |
20 | 3 | Marc Dequènes | * (I often choose Elwing first) ansible-playbook --diff -l Elwing -t apt playbooks/common.yml | tee /tmp/dc.log |
21 | 18 | Marc Dequènes | * run selected playbooks that update pinnings and the other suite names |
22 | 1 | Marc Dequènes | * apt upgrade |
23 | 11 | Marc Dequènes | * apt full-upgrade (check if removed packages are problematic) |
24 | 9 | Marc Dequènes | ** accept new version of: |
25 | *** /etc/services and copy-paste content of _local services_ from _/etc/services.dpkg-old_ to avoid having to redeploy all services |
||
26 | *** /etc/grub.d/10_linux but see warning below |
||
27 | *** /etc/ssh/ssh_config (we use ssh_config.d in Ansible now) BUT NOT sshd_config! |
||
28 | 1 | Marc Dequènes | ** do not accept new versions for: |
29 | 20 | Marc Dequènes | *** /etc/apt-cacher-ng/acng.conf |
30 | *** /etc/logrotate.d/* |
||
31 | *** /etc/oidentd.conf |
||
32 | *** /etc/rsyslog.conf |
||
33 | 2 | Marc Dequènes | *** /etc/smartd.conf |
34 | *** /etc/snmp/snmp.conf |
||
35 | 1 | Marc Dequènes | *** /etc/sudoers |
36 | ** check the diff manually for other files |
||
37 | 17 | Marc Dequènes | * if PHP FPM: (to avoid having to redeploy all vhosts) (example for PHP 7.4->8.2) |
38 | ** rm /etc/php/8.2/fpm/pool.d/www.conf |
||
39 | ** cp /etc/php/7.4/fpm/pool.d/* /etc/php/8.2/fpm/pool.d/ |
||
40 | ** sed -i 's/7\.4/8.2/g' /etc/php/8.2/fpm/pool.d/* |
||
41 | ** systemctl restart php8.2-fpm.service |
||
42 | ** sed -i 's/7\.4/8.2/g' /etc/apache2/sites-enabled/*.conf.d/php.conf |
||
43 | 13 | Marc Dequènes | ** systemctl restart apache2 |
44 | 17 | Marc Dequènes | ** purge facts_cache/<host> before running Ansible to detect the new major version |
45 | 10 | Marc Dequènes | ** run common web playbook _playbooks/tenants/duckcorp/web.yml_ with _-t web-common_ |
46 | 19 | Marc Dequènes | * run the _playbooks/common.yml_ playbook |
47 | 15 | Marc Dequènes | * on MX1 servers, run the _playbooks/tenants/duckcorp/mail.yml_ playbook with _-t antispam_ (to switch the Rspamd repo to the new suite) |
48 | 14 | Marc Dequènes | * run the _playbooks/tenants/duckcorp/accounts.yml_ playbook |
49 | 7 | Marc Dequènes | |
50 | 14 | Marc Dequènes | |
51 | 7 | Marc Dequènes | It is critical that the common playbook is run successfully before rebooting. Especially _/etc/grub.d/10_linux_ must contain the _--unrestricted_ option and the GRUB config must be regenerated or the server will block at the GRUB screen waiting for a login. |
52 | 14 | Marc Dequènes | |
53 | * reboot |
||
54 | * check failed services: systemctl --failed |