Table of Contents

Cobbler

Summary

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

  1. In the ceph-cm-ansible repo, there is a tools/cobbler-access.sh script. Run it.
  2. Create a new branch named wip-username in the ceph-sepia-secrets repo
  3. Paste the output under ------ String for cobbler.yml ------ into a new line in ansible/inventory/group_vars/cobbler.yml under users_digest_lines
  4. git commit, git push the branch, and create a Pull Request
  5. 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

  1. Create an entry for the new distro in ceph-cm-ansible's root cobbler.yml
  2. Create the profile
    1. If the distro's ISO is not publicly accessible (e.g., RHEL/inktank-rescue),
      1. Add a dummy entry (Distro name and blank iso var) to roles/cobbler_profile/defaults/main.yml
      2. Add to ansible/inventory/group_vars/cobbler.yml in the secrets repo
    2. 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
  3. Run ansible-playbook cobbler.yml --tags="$NEW_PROFILE_TAG" where $NEW_PROFILE_TAG is the tag created in Step 1
  4. In cobbler web UI, go to Profiles
    1. Click Create New Sub-profile
    2. Name it $NEW_DISTRO_NAME-stock
    3. Set Parent Profile to $NEW_DISTRO_NAME
    4. 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:

  1. Find the ISO hosted inside the Red Hat firewall and download it
  2. Once downloaded, scp the ISO to cobbler.front.sepia.ceph.com:/iso
  3. 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.

  1. Edit /var/lib/cobbler/distro_signatures.json
  2. 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.

  1. First, you need to make sure no machines in Cobbler are set to use the distro you plan to replace
    1. ssh to the Cobbler host
    2. 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
      1. 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
  2. Delete all associated profiles under the Profiles tab in the Cobbler web UI
  3. Delete the distro from Distros in the web UI
  4. Proceed with Re-adding the distro