From 2530bad08af677dbaafcec98ef6b6dba49e89e0b Mon Sep 17 00:00:00 2001 From: Andrii Gladkyi Date: Wed, 6 Mar 2024 10:43:50 +0100 Subject: [PATCH] Ansible playbooks for server control via IPMI --- playbooks/README.md | 25 +++++++++++++++++++++++++ playbooks/secrets.yml | 16 +++++++--------- playbooks/servers/ping.yml | 6 ++++++ playbooks/servers/power_on.yml | 13 +++++++++++++ playbooks/servers/reboot.yml | 13 +++++++++++++ playbooks/servers/shutdown.yml | 13 +++++++++++++ 6 files changed, 77 insertions(+), 9 deletions(-) create mode 100644 playbooks/README.md create mode 100644 playbooks/servers/ping.yml create mode 100644 playbooks/servers/power_on.yml create mode 100644 playbooks/servers/reboot.yml create mode 100644 playbooks/servers/shutdown.yml diff --git a/playbooks/README.md b/playbooks/README.md new file mode 100644 index 0000000..e7d9e2b --- /dev/null +++ b/playbooks/README.md @@ -0,0 +1,25 @@ +# Ansible Playbooks + +## Requirements + +* Python 3 + +## Installation + +```sh +python3 -m pip install --user ansible pyghmi +``` + +## Usage + +```sh +ansible-playbook +``` + +## Vault + +* GPG key is required to decrypt vault's key + +```sh +ansible-vault edit secrets.yml +``` diff --git a/playbooks/secrets.yml b/playbooks/secrets.yml index 5a6130f..fb1febf 100644 --- a/playbooks/secrets.yml +++ b/playbooks/secrets.yml @@ -1,10 +1,8 @@ $ANSIBLE_VAULT;1.1;AES256 -36303964646562316638333136326439333564383236356661396366623431353234626663663534 -3263616362333265383835316163633734306465363461660a373838323334383139393766336262 -38383735386562356536653535333565356232323161623435303164363239613234386365393161 -3065313465356536370a326139366162613439333731623464343635373831336264653132663661 -64316165646662333432326265396663326232343237343461323038656237316637613631643563 -66303532313563663132653061356563613138626136363932366137326565643331376437353734 -39313065626430393137643734633439623037653736373366396231353132343735643461343661 -65613138303763643639353936303038653839616165353139323637313539646530373665353634 -63636331306339313034326339646331626339353665356435373437643130303561 +35666564353831313765653331653537373532616236343638613566376139383933353936363961 +3232386632373839613131363534353661326437653866610a343562653766633266326636393735 +35396131613065313466303134623866666131646465616630383935363165383630373533383463 +3739373964346164320a626632316132376439373363323664303263636230346235656462393830 +64326362623837373335613963363238646436303839616631653663333632623930343937366232 +37653935303236356634343938333662616336616137636462636534393239613835326439646433 +366163353761373062656437616233643730 diff --git a/playbooks/servers/ping.yml b/playbooks/servers/ping.yml new file mode 100644 index 0000000..93aca92 --- /dev/null +++ b/playbooks/servers/ping.yml @@ -0,0 +1,6 @@ +- name: "Ping servers" + hosts: "servers" + gather_facts: false + tasks: + - name: "Ping server" + ansible.builtin.ping: diff --git a/playbooks/servers/power_on.yml b/playbooks/servers/power_on.yml new file mode 100644 index 0000000..68fff60 --- /dev/null +++ b/playbooks/servers/power_on.yml @@ -0,0 +1,13 @@ +- name: "Power on servers" + gather_facts: false + vars_files: + - "../secrets.yml" + hosts: "localhost" + tasks: + - name: "Power on via IPMI" + community.general.ipmi_power: + name: "192.168.0.5" + user: "{{ ipmi.username }}" + password: "{{ ipmi.password }}" + state: "on" + delegate_to: "localhost" diff --git a/playbooks/servers/reboot.yml b/playbooks/servers/reboot.yml new file mode 100644 index 0000000..61c0427 --- /dev/null +++ b/playbooks/servers/reboot.yml @@ -0,0 +1,13 @@ +- name: "Reboot servers" + gather_facts: false + vars_files: + - "../secrets.yml" + hosts: "localhost" + tasks: + - name: "Reboot via IPMI" + community.general.ipmi_power: + name: "192.168.0.5" + user: "{{ ipmi.username }}" + password: "{{ ipmi.password }}" + state: "reset" + delegate_to: "localhost" diff --git a/playbooks/servers/shutdown.yml b/playbooks/servers/shutdown.yml new file mode 100644 index 0000000..39eab43 --- /dev/null +++ b/playbooks/servers/shutdown.yml @@ -0,0 +1,13 @@ +- name: "Shutdown servers" + gather_facts: false + vars_files: + - "../secrets.yml" + hosts: "localhost" + tasks: + - name: "Shutdown via IPMI" + community.general.ipmi_power: + name: "192.168.0.5" + user: "{{ ipmi.username }}" + password: "{{ ipmi.password }}" + state: "shutdown" + delegate_to: "localhost"