aboutsummaryrefslogtreecommitdiffstats
path: root/resources/tools/testbed-setup/ansible/roles/vexx_hosts
diff options
context:
space:
mode:
Diffstat (limited to 'resources/tools/testbed-setup/ansible/roles/vexx_hosts')
-rw-r--r--resources/tools/testbed-setup/ansible/roles/vexx_hosts/defaults/main.yaml19
-rw-r--r--resources/tools/testbed-setup/ansible/roles/vexx_hosts/handlers/cimc.yaml74
-rw-r--r--resources/tools/testbed-setup/ansible/roles/vexx_hosts/handlers/ipmi.yaml52
-rw-r--r--resources/tools/testbed-setup/ansible/roles/vexx_hosts/handlers/main.yaml30
-rw-r--r--resources/tools/testbed-setup/ansible/roles/vexx_hosts/tasks/main.yaml48
5 files changed, 223 insertions, 0 deletions
diff --git a/resources/tools/testbed-setup/ansible/roles/vexx_hosts/defaults/main.yaml b/resources/tools/testbed-setup/ansible/roles/vexx_hosts/defaults/main.yaml
new file mode 100644
index 0000000000..37b48f81c2
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/vexx_hosts/defaults/main.yaml
@@ -0,0 +1,19 @@
+---
+# file: roles/vexx_hosts/defaults/main.yaml
+
+# provision via cobbler
+provision_enabled: False
+# name_servers is used in /etc/netplan/01-netcfg.yaml
+name_servers: "1.1.1.1, 8.8.8.8"
+
+# Proxy settings: Uncomment and fill the proper values. These variables will be
+# set globally by writing into /etc/environment file on target machine.
+#proxy_env:
+# http_proxy: http://proxy.com:80
+# HTTP_PROXY: http://proxy.com:80
+# https_proxy: http://proxy.com:80
+# HTTPS_PROXY: http://proxy.com:80
+# ftp_proxy: http://proxy.com:80
+# FTP_PROXY: http://proxy.com:80
+# no_proxy: localhost,127.0.0.1,{{ ansible_default_ipv4.address }}
+# NO_PROXY: localhost,127.0.0.1,{{ ansible_default_ipv4.address }}
diff --git a/resources/tools/testbed-setup/ansible/roles/vexx_hosts/handlers/cimc.yaml b/resources/tools/testbed-setup/ansible/roles/vexx_hosts/handlers/cimc.yaml
new file mode 100644
index 0000000000..65f0c83f87
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/vexx_hosts/handlers/cimc.yaml
@@ -0,0 +1,74 @@
+---
+# file: roles/vexx_hosts/handlers/cimc.yaml
+
+- name: Boot from network
+ imc_rest:
+ hostname: "{{ inventory_cimc_hostname }}"
+ username: "{{ inventory_cimc_username }}"
+ password: "{{ inventory_cimc_password }}"
+ validate_certs: no
+ content: |
+ <!-- Configure PXE boot -->
+ <configConfMo><inConfig>
+ <lsbootLan dn="sys/rack-unit-1/boot-policy/lan-read-only" access="read-only" order="1" prot="pxe" type="lan"/>
+ </inConfig></configConfMo>
+ delegate_to: localhost
+ tags:
+ - boot-network
+
+- name: Boot from storage
+ imc_rest:
+ hostname: "{{ inventory_cimc_hostname }}"
+ username: "{{ inventory_cimc_username }}"
+ password: "{{ inventory_cimc_password }}"
+ validate_certs: no
+ content: |
+ <configConfMo><inConfig>
+ <lsbootStorage dn="sys/rack-unit-1/boot-policy/storage-read-write" access="read-write" order="1" type="storage"/>
+ </inConfig></configConfMo>
+ delegate_to: localhost
+ tags:
+ - boot-storage
+
+- name: Power up server
+ imc_rest:
+ hostname: "{{ inventory_cimc_hostname }}"
+ username: "{{ inventory_cimc_username }}"
+ password: "{{ inventory_cimc_password }}"
+ validate_certs: no
+ content: |
+ <configConfMo><inConfig>
+ <computeRackUnit dn="sys/rack-unit-1" adminPower="up"/>
+ </inConfig></configConfMo>
+ delegate_to: localhost
+ tags:
+ - power-up
+
+- name: Power down server
+ imc_rest:
+ hostname: "{{ inventory_cimc_hostname }}"
+ username: "{{ inventory_cimc_username }}"
+ password: "{{ inventory_cimc_password }}"
+ validate_certs: no
+ content: |
+ <configConfMo><inConfig>
+ <computeRackUnit dn="sys/rack-unit-1" adminPower="down"/>
+ </inConfig></configConfMo>
+ delegate_to: localhost
+ tags:
+ - power-down
+
+- name: Power cycle server
+ imc_rest:
+ hostname: "{{ inventory_cimc_hostname }}"
+ username: "{{ inventory_cimc_username }}"
+ password: "{{ inventory_cimc_password }}"
+ validate_certs: no
+ content: |
+ <!-- Power cycle server -->
+ <configConfMo><inConfig>
+ <computeRackUnit dn="sys/rack-unit-1" adminPower="cycle-immediate"/>
+ </inConfig></configConfMo>
+ delegate_to: localhost
+ tags:
+ - power-cycle
diff --git a/resources/tools/testbed-setup/ansible/roles/vexx_hosts/handlers/ipmi.yaml b/resources/tools/testbed-setup/ansible/roles/vexx_hosts/handlers/ipmi.yaml
new file mode 100644
index 0000000000..549454a1a2
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/vexx_hosts/handlers/ipmi.yaml
@@ -0,0 +1,52 @@
+---
+# file: roles/vexx_hosts/handlers/ipmi.yaml
+
+- name: Boot from network
+ ipmi_boot:
+ name: "{{ inventory_ipmi_hostname }}"
+ user: "{{ inventory_ipmi_username }}"
+ password: "{{ inventory_ipmi_password }}"
+ bootdev: network
+ delegate_to: localhost
+ tags:
+ - boot-network
+
+- name: Boot from storage
+ ipmi_boot:
+ name: "{{ inventory_ipmi_hostname }}"
+ user: "{{ inventory_ipmi_username }}"
+ password: "{{ inventory_ipmi_password }}"
+ bootdev: hd
+ delegate_to: localhost
+ tags:
+ - boot-storage
+
+- name: Power up server
+ ipmi_power:
+ name: "{{ inventory_ipmi_hostname }}"
+ user: "{{ inventory_ipmi_username }}"
+ password: "{{ inventory_ipmi_password }}"
+ state: on
+ delegate_to: localhost
+ tags:
+ - power-up
+
+- name: Power down server
+ ipmi_power:
+ name: "{{ inventory_ipmi_hostname }}"
+ user: "{{ inventory_ipmi_username }}"
+ password: "{{ inventory_ipmi_password }}"
+ state: off
+ delegate_to: localhost
+ tags:
+ - power-down
+
+- name: Power cycle server
+ ipmi_power:
+ name: "{{ inventory_ipmi_hostname }}"
+ user: "{{ inventory_ipmi_username }}"
+ password: "{{ inventory_ipmi_password }}"
+ state: boot
+ delegate_to: localhost
+ tags:
+ - power-cycle
diff --git a/resources/tools/testbed-setup/ansible/roles/vexx_hosts/handlers/main.yaml b/resources/tools/testbed-setup/ansible/roles/vexx_hosts/handlers/main.yaml
new file mode 100644
index 0000000000..bd52fdc9a9
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/vexx_hosts/handlers/main.yaml
@@ -0,0 +1,30 @@
+---
+# file: roles/vexx_hosts/handlers/main.yaml
+
+- name: IPMI specific
+ import_tasks: ipmi.yaml
+ when: inventory_ipmi_hostname is defined
+ tags:
+ - ipmi-handlers
+
+- name: CIMC specific
+ import_tasks: cimc.yaml
+ when: inventory_cimc_hostname is defined
+ tags:
+ - cimc-handlers
+
+- name: Reboot server
+ reboot:
+ reboot_timeout: 3600
+ tags:
+ - reboot-server
+
+- name: Wait for server to restart
+ wait_for:
+ host: "{{ inventory_hostname }}"
+ search_regex: OpenSSH
+ port: 22
+ delay: 60
+ timeout: 3600
+ tags:
+ - reboot-server
diff --git a/resources/tools/testbed-setup/ansible/roles/vexx_hosts/tasks/main.yaml b/resources/tools/testbed-setup/ansible/roles/vexx_hosts/tasks/main.yaml
new file mode 100644
index 0000000000..decda18649
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/vexx_hosts/tasks/main.yaml
@@ -0,0 +1,48 @@
+---
+# file: roles/vexx_hosts/tasks/main.yaml
+
+- name: Ensure the system exists in Cobbler
+ cobbler_system:
+ host: "{{ cobbler_hostname }}"
+ port: 60080
+ interfaces:
+ br1:
+ ipaddress: "{{ ansible_default_ipv4.address }}"
+ macaddress: "{{ ansible_default_ipv4.macaddress }}"
+ name: "{{ hostname }}"
+ password: "{{ cobbler_password }}"
+ properties:
+ hostname: "{{ hostname }}"
+ gateway: "{{ ansible_default_ipv4.gateway }}"
+ profile: "{{ cobbler_profile }}"
+ name_servers: "{{ name_servers }}"
+ kickstart: "/var/lib/cobbler/kickstarts/{{ cobbler_profile }}.seed"
+ kernel_options: '"interface={{ ansible_default_ipv4.interface }}"'
+ netboot_enabled: yes
+ username: "{{ cobbler_username }}"
+ use_ssl: no
+ validate_certs: no
+ when: provision_enabled
+ delegate_to: localhost
+ tags:
+ - cobbler-include
+
+- name: Commit Cobbler changes
+ cobbler_sync:
+ host: "{{ cobbler_hostname }}"
+ port: 60080
+ password: "{{ cobbler_password }}"
+ username: "{{ cobbler_username }}"
+ use_ssl: no
+ validate_certs: no
+ run_once: yes
+ when: provision_enabled
+ delegate_to: localhost
+ register: __included_in_cobbler
+ notify:
+ - "Boot from network"
+ - "Reboot server"
+ tags:
+ - cobbler-include
+
+- meta: flush_handlers