From 8605f3f406468f57bb9b2eac12a4421f65965300 Mon Sep 17 00:00:00 2001 From: vagrant Date: Tue, 4 Feb 2020 14:16:01 +0000 Subject: CSIT Azure integration + Terraform + Ansible Signed-off-by: Peter Mikus Change-Id: I353511c5ef39d8c8d43fedc61c8dbb30b4821e1b --- .../ansible/roles/vexx_hosts/defaults/main.yaml | 19 ++++++ .../ansible/roles/vexx_hosts/handlers/cimc.yaml | 74 ++++++++++++++++++++++ .../ansible/roles/vexx_hosts/handlers/ipmi.yaml | 52 +++++++++++++++ .../ansible/roles/vexx_hosts/handlers/main.yaml | 30 +++++++++ .../ansible/roles/vexx_hosts/tasks/main.yaml | 61 ++++++++++++++++++ 5 files changed, 236 insertions(+) create mode 100644 resources/tools/testbed-setup/ansible/roles/vexx_hosts/defaults/main.yaml create mode 100644 resources/tools/testbed-setup/ansible/roles/vexx_hosts/handlers/cimc.yaml create mode 100644 resources/tools/testbed-setup/ansible/roles/vexx_hosts/handlers/ipmi.yaml create mode 100644 resources/tools/testbed-setup/ansible/roles/vexx_hosts/handlers/main.yaml create mode 100644 resources/tools/testbed-setup/ansible/roles/vexx_hosts/tasks/main.yaml (limited to 'resources/tools/testbed-setup/ansible/roles/vexx_hosts') 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: | + + + + + 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: | + + + + 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: | + + + + 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: | + + + + 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: | + + + + + 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..a8aa57323b --- /dev/null +++ b/resources/tools/testbed-setup/ansible/roles/vexx_hosts/tasks/main.yaml @@ -0,0 +1,61 @@ +--- +# 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 }}" + name_servers_search: "{{ name_servers_search }}" + 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 + +- name: Copy netplan network config file + template: + src: "files/netplan_config" + dest: "/etc/netplan/01-netcfg.yaml" + owner: "root" + group: "root" + mode: "0644" + tags: + - copy-interface-file + +- meta: flush_handlers -- cgit 1.2.3-korg