| {# Collection of common macroses shared across MaaS #} |
| |
| |
| {%- macro REBOOT_HW_NODES(ipmi_user, ipmi_password, ipmi_devices=['']) %} |
| |
| - description: Reboot hardware computes and set to PXE boot. It needs for clean deployment |
| cmd: | |
| {%- for device in ipmi_devices %} |
| ipmitool -H {{ device }} -U {{ ipmi_user }} -P {{ ipmi_password }} -I lanplus chassis power off |
| {%- endfor %} |
| {%- for device in ipmi_devices %} |
| ipmitool -H {{ device }} -U {{ ipmi_user }} -P {{ ipmi_password }} -I lanplus chassis bootdev pxe |
| {%- endfor %} |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| {%- endmacro %} |
| |
| |
| {%- macro AUTH_IN_MAAS() %} |
| |
| - description: MaaS auth |
| cmd: bash -x /var/lib/maas/.maas_login.sh |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| {%- endmacro %} |
| |
| {%- macro SET_LOCAL_DNS() %} |
| |
| - description: Set upstream dns in MaaS |
| cmd: sleep 30; maas mirantis maas set-config name=upstream_dns value='{{ ETH0_IP_ADDRESS_CFG01 }} 8.8.8.8 8.8.4.4' |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| {%- endmacro %} |
| |
| {%- macro ADD_TEST_SSH_KEY_TO_NODES(key) %} |
| |
| - description: Add key to root user on salt minions |
| cmd: salt "*" ssh.set_auth_key root "{{ key }}" |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| - description: Add key to ubuntu user on salt minions |
| cmd: salt "*" ssh.set_auth_key ubuntu "{{ key }}" |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| {%- endmacro %} |
| |
| {%- macro ADD_ROOT_SSH_KEY_TO_NODES() %} |
| |
| - description: Add root key to root user on salt minions |
| cmd: salt "*" ssh.set_auth_key root "$(ssh-keygen -y -f ~/.ssh/id_rsa | cut -d " " -f 2)" |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| - description: Add root key to ubuntu user on salt minions |
| cmd: salt "*" ssh.set_auth_key ubuntu "$(ssh-keygen -y -f ~/.ssh/id_rsa | cut -d " " -f 2)" |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| {%- endmacro %} |
| |
| {%- macro ADD_ROOT_PUB_SSH_TO_MASS() %} |
| |
| - description: Generate public from from root private key |
| cmd: ssh-keygen -y -f ~root/.ssh/id_rsa > ~root/.ssh/id_rsa.pub |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| - description: Add root public key to MaaS user |
| cmd: maas mirantis sshkeys create key="$(cat ~root/.ssh/id_rsa.pub)" |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| {%- endmacro %} |
| |
| {%- macro COMMISSION_VMS() %} |
| |
| - description: Wait dhcpd server |
| cmd: timeout 90s /bin/bash -c 'while ! pidof dhcpd; do echo "dhcpd still isnt running"; sleep 10; done' |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| - description: Add machines and comission |
| cmd: salt-call state.sls maas.machines |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| - description: Wait finish of comissioning machines |
| cmd: salt-call state.sls maas.machines.wait_for_ready |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| {%- endmacro %} |
| |
| {%- macro DEPLOY_VMS() %} |
| |
| - description: Show salt keys before deploy |
| cmd: salt-key |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| - description: Assign IPs to machines |
| cmd: salt-call state.sls maas.machines.assign_ip |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| - description: Assign drive partitions to machines |
| cmd: salt-call state.sls maas.machines.storage |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| - description: Deploy machines |
| cmd: salt-call state.sls maas.machines.deploy |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| - description: Wait finish of deploying machines |
| cmd: salt-call state.sls maas.machines.wait_for_deployed |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| - description: Show salt keys after deploy |
| cmd: salt-key |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| - description: Accept salt keys |
| cmd: salt-key -A -y --include-denied --include-rejected |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| - description: Show salt keys after accepting |
| cmd: salt-key |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| {%- endmacro %} |
| |
| {%- macro CONFIG_MACHINES(target) %} |
| |
| - description: Refresh pillars |
| cmd: salt '*' saltutil.refresh_pillar |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| - description: Sync all |
| cmd: salt '*' saltutil.sync_all |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| - description: Show top of reclass |
| cmd: reclass-salt --top |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| - description: Set rebooted flag |
| cmd: salt -C '{{ target }}' cmd.run 'touch /run/is_rebooted' |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| - description: Config machines and reboot them |
| cmd: salt --async -C '{{ target }}' cmd.run 'salt-call state.sls linux.system.repo,linux.system.user,openssh,linux.network;reboot' |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| - description: Wait 10 minutes for machines reboot |
| cmd: sleep 600 |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| - description: Check salt minions |
| cmd: salt -C '{{ target }}' test.ping |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 5, delay: 30} |
| skip_fail: false |
| |
| - description: Check reboot status of machines |
| cmd: | |
| ! salt -C '{{ target }}' cmd.run '[ -f "/run/is_rebooted" ] && echo "Failed" || echo "Rebooted"' | grep -q Failed |
| node_name: {{ HOSTNAME_CFG01 }} |
| retry: {count: 1, delay: 5} |
| skip_fail: false |
| |
| {%- endmacro %} |