User Tools

Site Tools


services:cobbler

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 VM in RHEV.

Access the Web UI at https://cobbler.front.sepia.ceph.com/cobbler_web/

Reimaging/Reinstalling a host

Creating a new user for Web UI access

  1. Generate a random password (mkpasswd -l 12)
  2. Generate the hashed password (htdigest -c /tmp/users.digest "Cobbler" $username)
    1. Paste the generated password when prompted
  3. Create a new branch named wip-username in the secrets repo
  4. Paste the output of cat /tmp/users.digest into a new line in ansible/inventory/group_vars/cobbler.yml under users_digest_lines
  5. git commit, git push the branch, and create a PR
  6. ansible-playbook cobbler.yml --tags="settings"
# Example
$ mkpasswd -l 12
b39feiiSiuQ%

$ htdigest -c /tmp/users.digest "Cobbler" bob
Adding password for bob in realm Cobbler.
New password: 
Re-type new password: 

$ cat /tmp/users.digest 
bob:Cobbler:027abc2039e7495f72128d9c3c628686

# 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:027abc2039e7495f72128d9c3c628686"

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

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
services/cobbler.txt · Last modified: 2017/12/01 18:49 by djgalloway