====== New Major Distro Release Procedure ======
This page will cover all the components of the Upstream testing process that need to be modified in order to start building packages for and testing new major Linux distribution versions.
===== Steps =====
- [[services:ceph-cm-ansible]]
- Add the distro to [[services:cobbler#adding_a_new_distro|Cobbler]]
- You will likely need to provision a machine with Cobbler and tweak the [[https://github.com/ceph/ceph-cm-ansible/pull/397/commits/52933a6e74b983ee2e1c49d038ce4c541e86718b|packages]] that get installed in the kickstart
- If you haven't already, put [[https://github.com/ceph/ceph-cm-ansible/blob/main/tools/set-next-server-local.sh|set-next-server-local.sh]] in place on your workstation.
- See [[https://wiki.sepia.ceph.com/doku.php?id=testnodereimage#set-next-server|set-next-server]]
- Create the ''roles/testnode/vars/distro_majorversion.yml'' file
- See https://github.com/ceph/ceph-cm-ansible/blob/master/roles/testnode/vars/ubuntu_18.yml for an example.
- Create the ''roles/testnode/templates/ssh/sshd_config_distro_majorversion.yml'' file
- You will also likely need to tweak the packages in this file as package names change or get deprecated
- FOG
- [[https://wiki.sepia.ceph.com/doku.php?id=services:fog#capturing_os_images|Capture new OS image(s)]]
- teuthology
- Add to the [[https://github.com/ceph/teuthology/blob/master/teuthology/orchestra/opsys.py|distro map]]
- Prado **[DEPRECATED]** only needs modifying if you're adding a new distro entirely
- Shaman
- Add the new distro to the appropriate codename maps [[https://github.com/ceph/shaman/blob/master/shaman/util.py|here]]
- Redeploy
- Chacra
- Add the new distro [[https://github.com/ceph/chacra/blob/master/chacra/constants.py|here]]
- [[https://github.com/ceph/chacra/blob/master/deploy/playbooks/roles/common/templates/prod.py.j2#L235|here too]]
- Redeploy
- Mita **[DEPRECATED]**
- If necessary, add the distro to [[https://github.com/ceph/mita/blob/master/deploy/playbooks/roles/common/templates/prod_nodes.py.j2|prod_nodes.py]]
- If you're adding a new distro entirely, you'll also need to add the Openstack image to the appropriate region.
- Redeploy
- Jenkins Job Configs: See https://github.com/ceph/ceph-build/pull/1022 as an **example**. It is not all encompassing! I [[https://github.com/ceph/ceph-build/pull/1025|missed]] a few spots in that PR.
- Don't forget [[https://github.com/ceph/ceph-build/pull/1024|build_utils.sh]]
- If necessary, [[https://wiki.sepia.ceph.com/doku.php?id=production:chacra.ceph.com&s[]=vagrant#update_vagrant_repo|create a new vagrant repo]]
- Download the latest vagrant version from https://releases.hashicorp.com/vagrant/
- Using Ubuntu Jammy as an example:
wget https://releases.hashicorp.com/vagrant/2.2.19/vagrant_2.2.19_x86_64.deb
ls vagrant_2.2.19_x86_64.deb | chacractl binary create vagrant/latest/HEAD/ubuntu/jammy/x86_64
- Once you have a successful Ceph build and repo for this new OS version, change the default in ceph.git like [[https://github.com/ceph/ceph/commit/a07ca4c5c0f04c43c71231a898c2a89e99a80606|this]] and [[https://github.com/ceph/ceph/commit/24c2d2b1244d95c232f927dad1417717a2768ece|this]].
- Also in teuthology like [[https://github.com/ceph/teuthology/commit/dc1f66ce4f57c3cb19a69a9b890ab9bcc5dd1993|this]].