From 3bd1b81b53e6738aab8ccc4ecc7db8178bb2d1d2 Mon Sep 17 00:00:00 2001 From: Zack Cerza Date: Wed, 22 Jul 2015 09:35:20 -0600 Subject: [PATCH] Cobbler: ship ipmi-related utility scripts console.sh, reboot.sh, and reimage.sh Signed-off-by: Zack Cerza --- roles/cobbler/defaults/main.yml | 11 +++++++++++ roles/cobbler/tasks/ipmi_secrets.yml | 12 ++++++++++++ roles/cobbler/tasks/main.yml | 4 ++++ roles/cobbler/tasks/upload_templates.yml | 21 +++++++++++++++++++++ roles/cobbler/templates/utils/console.sh | 5 +++++ roles/cobbler/templates/utils/reboot.sh | 4 ++++ roles/cobbler/templates/utils/reimage.sh | 9 +++++++++ roles/cobbler_systems/defaults/main.yml | 1 + 8 files changed, 67 insertions(+) create mode 100644 roles/cobbler/tasks/ipmi_secrets.yml create mode 100644 roles/cobbler/templates/utils/console.sh create mode 100644 roles/cobbler/templates/utils/reboot.sh create mode 100644 roles/cobbler/templates/utils/reimage.sh diff --git a/roles/cobbler/defaults/main.yml b/roles/cobbler/defaults/main.yml index 791b1fd..41475d6 100644 --- a/roles/cobbler/defaults/main.yml +++ b/roles/cobbler/defaults/main.yml @@ -40,6 +40,11 @@ scripts: triggers: - install/post/cephlab_ansible.sh +utils: + - console.sh + - reboot.sh + - reimage.sh + ansible_user_ssh_keys: [] ansible_user: '' @@ -51,3 +56,9 @@ ansible_user_uid_: '' # - "nameserver x.x.x.x" # - "search an.example.com" resolvconf: [] + +power_type: ipmilan +# power_user and power_pass defaults will need to be overridden in a secrets +# repo to be useful +power_user: poweruser +power_pass: powerpass diff --git a/roles/cobbler/tasks/ipmi_secrets.yml b/roles/cobbler/tasks/ipmi_secrets.yml new file mode 100644 index 0000000..3c04eed --- /dev/null +++ b/roles/cobbler/tasks/ipmi_secrets.yml @@ -0,0 +1,12 @@ +--- +- name: Set path to IPMI credentials + set_fact: + ipmi_creds_path: "{{ secrets_path }}/ipmi.yml" + when: ipmi_creds_path is undefined + +- name: Include IPMI credentials + include_vars: "{{ item }}" + with_first_found: + - "{{ ipmi_creds_path }}" + - empty.yml + no_log: true diff --git a/roles/cobbler/tasks/main.yml b/roles/cobbler/tasks/main.yml index 531f830..e1f0ac6 100644 --- a/roles/cobbler/tasks/main.yml +++ b/roles/cobbler/tasks/main.yml @@ -1,4 +1,8 @@ --- +- include: ipmi_secrets.yml + tags: + - always + - name: Include cobbler keys. include_vars: "{{ secrets_path | mandatory }}/cobbler_keys.yml" no_log: true diff --git a/roles/cobbler/tasks/upload_templates.yml b/roles/cobbler/tasks/upload_templates.yml index 97ceb4c..c17b020 100644 --- a/roles/cobbler/tasks/upload_templates.yml +++ b/roles/cobbler/tasks/upload_templates.yml @@ -52,3 +52,24 @@ with_items: triggers tags: - triggers + +- name: Create /root/bin + file: + path: /root/bin + state: directory + owner: root + group: root + mode: 0755 + tags: + - utils + +- name: Upload utilities for convenience. + template: + src: "utils/{{ item }}" + dest: "/root/bin/{{ item }}" + owner: root + group: root + mode: 0755 + with_items: utils + tags: + - utils diff --git a/roles/cobbler/templates/utils/console.sh b/roles/cobbler/templates/utils/console.sh new file mode 100644 index 0000000..bbd07cf --- /dev/null +++ b/roles/cobbler/templates/utils/console.sh @@ -0,0 +1,5 @@ +#!/bin/bash +## {{ ansible_managed }} +set -ex +name=$1 +ipmitool -H $name.{{ ipmi_domain }} -I lanplus -U {{ power_user }} -P {{ power_pass }} sol activate diff --git a/roles/cobbler/templates/utils/reboot.sh b/roles/cobbler/templates/utils/reboot.sh new file mode 100644 index 0000000..3251590 --- /dev/null +++ b/roles/cobbler/templates/utils/reboot.sh @@ -0,0 +1,4 @@ +#!/bin/bash +## {{ ansible_managed }} +name=$1 +cobbler system reboot --name $name diff --git a/roles/cobbler/templates/utils/reimage.sh b/roles/cobbler/templates/utils/reimage.sh new file mode 100644 index 0000000..4aee52d --- /dev/null +++ b/roles/cobbler/templates/utils/reimage.sh @@ -0,0 +1,9 @@ +#!/bin/bash +## {{ ansible_managed }} +set -ex +name=$1 +profile=$2 +echo "Reimaging $name with profile $profile" +# First turn netboot off so that cobbler removes any stale PXE data +cobbler system edit --name=$name netboot off +cobbler system edit --name=$name --profile $profile --netboot on && cobbler system reboot --name $name diff --git a/roles/cobbler_systems/defaults/main.yml b/roles/cobbler_systems/defaults/main.yml index db468e6..ff53866 100644 --- a/roles/cobbler_systems/defaults/main.yml +++ b/roles/cobbler_systems/defaults/main.yml @@ -1,5 +1,6 @@ --- interface: eth0 kernel_options: '' +kernel_options_post: '' default_profile: "Ubuntu-14.04-server-x86_64" -- 2.39.5