====== Cobbler ====== ===== Summary ===== [[https://cobbler.github.io/|Cobbler]] is used to reimage testnodes in the lab. The Cobbler host is ''cobbler.front.sepia.ceph.com'' and is managed by Ansible. It's a bare metal machine that used to be mira065. Access the Web UI at https://cobbler.front.sepia.ceph.com/cobbler_web/ ===== Reimaging/Reinstalling a host ===== See [[:testnodereimage]] ===== Creating a new user for Web UI access ===== - In the ''ceph-cm-ansible'' repo, there is a ''tools/cobbler-access.sh'' script. Run it. - Create a new branch named ''wip-username'' in the ''ceph-sepia-secrets'' repo - Paste the output under ''%%------ String for cobbler.yml ------%%'' into a new line in ''ansible/inventory/group_vars/cobbler.yml'' under ''users_digest_lines'' - git commit, git push the branch, and create a Pull Request - ''%%ansible-playbook cobbler.yml --tags="settings"%%'' # Example $ ~/git/ceph/ceph-cm-ansible/tools/cobbler-access.sh Enter username: bob ------ String for cobbler.yml ------ bob:Cobbler:07a95ca759fd46e9416de672a5e2bb60 # Add the user to the cobbler.yml secrets group_vars file dgalloway@w541 ceph-sepia-secrets (wip-bob)$ git diff diff --git a/ansible/inventory/group_vars/cobbler.yml b/ansible/inventory/group_vars/cobbler.yml index 758427a..6968689 100644 --- a/ansible/inventory/group_vars/cobbler.yml +++ b/ansible/inventory/group_vars/cobbler.yml @@ -15,6 +15,7 @@ users_digest_lines: - "yuriw:Cobbler:XXXXX" - "vasu:Cobbler:XXXXX" - "dmick:Cobbler:XXXXX" + - "bob:Cobbler:07a95ca759fd46e9416de672a5e2bb60" ===== Adding a new Distro ===== - Create an entry for the new distro in ceph-cm-ansible's root ''cobbler.yml'' - Create the profile - **If** the distro's ISO is not publicly accessible (e.g., RHEL/inktank-rescue), - Add a dummy entry (Distro name and blank iso var) to ''roles/cobbler_profile/defaults/main.yml'' - Add to ''ansible/inventory/group_vars/cobbler.yml'' in the secrets repo - **Else if** the distro's ISO **is** public (e.g., CentOS/Ubuntu), just add the iso path, sha256, etc. to ''roles/cobbler_profile/defaults/main.yml'' - Run ''ansible-playbook cobbler.yml %%--%%tags=%%"%%$NEW_PROFILE_TAG%%"%%'' where $NEW_PROFILE_TAG is the tag created in Step 1 - In cobbler web UI, go to **Profiles** - Click **Create New Sub-profile** - Name it ''$NEW_DISTRO_NAME**-stock**'' - Set **Parent Profile** to ''$NEW_DISTRO_NAME'' - **Save** ==== RHEL in Sepia ==== Because RHEL ISOs are only available inside the Red Hat firewall, we can't add an ''http'' URL to the secrets repo. To add a RHEL version: - Find the ISO hosted inside the Red Hat firewall and download it - Once downloaded, ''scp'' the ISO to ''cobbler.front.sepia.ceph.com:/iso'' - In the ceph-sepia-secrets repo, set the appropriate ''%%file:///iso/path%%'' ==== Error adding brand new distro ==== Cobbler keeps a list of supported distros in ''/var/lib/cobbler/distro_signatures.json'' so it knows what defaults to apply to a distro/profile. If a distro is brand-spankin' new, you may get an error like "No signature matched in /var/www/cobbler/ks_mirror/Ubuntu-17.10-server-x86_64". First try running ''cobbler signature update''. If it still doesn't show up in ''cobbler signature report'', you'll have to manually add an entry in the JSON. - Edit ''/var/lib/cobbler/distro_signatures.json'' - ''service cobblerd restart'' ===== Re-importing a Distro ===== This would typically be done if a newer ISO (minor revision) of an OS is released. For example: if you wanted to import Ubuntu 16.04.3 in place of the original 16.04 image. - First, you need to make sure no machines in Cobbler are set to use the distro you plan to replace - ssh to the Cobbler host - Set the profile for each machine using the distro you wish to replace with something else # Example: for host in $(cobbler system find --profile Ubuntu-16.04-server-x86_64); do cobbler system edit --name=$host --profile inktank-rescue; done - You may wish to ''cat'' these hosts to a file so you can set the profile back after cobbler system find --profile Ubuntu-16.04-server-x86_64 > currently_xenial.dgalloway for host in $(cat currently_xenial.dgalloway); do cobbler system edit --name=$host --profile inktank-rescue; done # Reimport distro for host in $(cat currently_xenial.dgalloway); do cobbler system edit --name=$host --profile Ubuntu-16.04-server-x86_64; done rm currently_xenial.dgalloway - Delete all associated profiles under the **Profiles** tab in the Cobbler web UI - Delete the distro from **Distros** in the web UI - Proceed with [[services:cobbler#adding_a_new_distro|Re-adding the distro]]