deploy/ansible/roles-misc/0.9-sap-on-azure-quality-checks/tasks/run_check.yaml (88 lines of code) (raw):
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
# /*---------------------------------------------------------------------------8
# | |
# | Run quality check |
# | |
# +------------------------------------4--------------------------------------*/
---
- name: "SAP on Azure quality checks: - Check required Database HA variables"
ansible.builtin.set_fact:
database_high_availability: "{{ db_high_availability | default(false) }}"
when:
- db_high_availability is defined
- database_high_availability is not defined
- name: "SAP on Azure quality checks: - Retrieve Subscription ID and Resource Group Name"
ansible.builtin.uri:
url: http://169.254.169.254/metadata/instance?api-version=2021-02-01
use_proxy: false
headers:
Metadata: true
register: azure_metadata
# https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/blob/main/QualityCheck/Readme.md#login-with-ssh-keys-no-password-required-for-sudo
- name: "SAP on Azure quality checks: - Set common quality check facts"
ansible.builtin.set_fact:
qc_subscription_id: "{{ azure_metadata.json.compute.subscriptionId }}"
qc_az_vm_resource_group: "{{ azure_metadata.json.compute.resourceGroupName }}"
qc_az_vm_name: "{{ azure_metadata.json.compute.name }}"
qc_vm_username: "{{ ansible_user }}"
qc_vm_hostname: "{{ ansible_hostname }}.{{ sap_fqdn }}"
qc_vm_operating_system: "{{ vm_operating_system_map[ansible_os_family | upper] }}"
qc_vm_database: "{{ vm_database_map[platform | upper] }}"
qc_vm_role: "{{ vm_role_map[node_tier | upper] }}"
qc_sid: "{{ db_sid if vm_role_map[node_tier | upper] == 'DB' else sap_sid }}"
qc_high_availability: "{{ (vm_role_map[node_tier | upper] == 'DB' and database_high_availability) or (vm_role_map[node_tier | upper] == 'ASCS' and scs_high_availability) }}"
- name: "SAP on Azure quality checks: - Debug variables"
ansible.builtin.debug:
msg:
- "Subscription ID: {{ qc_subscription_id }}"
- "Resource Group Name: {{ qc_az_vm_resource_group }}"
- "VM Name: {{ qc_az_vm_name }}"
- "VM Username: {{ qc_vm_username }}"
- "VM Hostname: {{ qc_vm_hostname }}"
- "VM Operating System: {{ qc_vm_operating_system }}"
- "VM Database: {{ qc_vm_database }}"
- "VM Role: {{ qc_vm_role }}"
- "SSH Key path {{ _workspace_directory }}/sshkey"
- "Output Directory {{ _workspace_directory }}/quality_assurance"
- "SID: {{ qc_sid }}"
- "High Availability: {{ qc_high_availability }}"
verbosity: 2
- name: "SAP on Azure quality checks: - get access token in the context of azureadm on deployer"
delegate_to: localhost
no_log: true
ansible.builtin.command: az account get-access-token --subscription {{ qc_subscription_id }} --query "accessToken"
failed_when: qc_access_token_result.stdout == ""
register: qc_access_token_result
- name: "SAP on Azure quality checks: - retrieve client id in the context of azureadm on deployer"
delegate_to: localhost
no_log: true
ansible.builtin.command: echo $ARM_CLIENT_ID
failed_when: gz_arm_client_id_result.stdout == ""
register: gz_arm_client_id_result
- name: "SAP on Azure quality checks: - Run quality check"
ansible.builtin.shell:
cmd: >-
Connect-AzAccount -AccountId {{ gz_arm_client_id_result.stdout }} `
-AccessToken {{ qc_access_token_result.stdout }} `
-Subscription {{ qc_subscription_id }}
./QualityCheck.ps1 -LogonWithUserSSHKey `
-VMOperatingSystem {{ qc_vm_operating_system }} `
-VMDatabase {{ qc_vm_database }} `
-VMRole {{ qc_vm_role }} `
-AzVMResourceGroup {{ qc_az_vm_resource_group }} `
-AzVMName {{ qc_az_vm_name }} `
-VMHostname {{ qc_vm_hostname }} `
-VMUsername {{ qc_vm_username }} `
-VMConnectionPort 22 `
-SubscriptionId {{ qc_subscription_id }} `
-SSHKey {{ _workspace_directory }}/sshkey `
-Hardwaretype VM `
-SID {{ qc_sid }} `
-HighAvailability {{ '$' ~ qc_high_availability }} `
-OutputDirName {{ _workspace_directory }}/quality_assurance
args:
executable: "/usr/local/bin/pwsh"
chdir: "/opt/microsoft/quality_check"
no_log: true
delegate_to: localhost
become_user: root
become: true
register: quality_check_result
- name: "SAP on Azure quality checks: - Debug quality check result"
ansible.builtin.debug:
msg: "{{ quality_check_result.stdout_lines }}"
verbosity: 2
...