|
| 1 | +--- |
| 2 | +#### Validate required variables for specific 'sap_vm_provision_iac_platform #### |
| 3 | + |
| 4 | +- name: Assert that string variables are valid for {{ sap_vm_provision_iac_platform }} |
| 5 | + ansible.builtin.assert: |
| 6 | + that: |
| 7 | + - lookup('ansible.builtin.vars', item, default='SAP_VM_PROVISION_UNDEFINED_VARIABLE_DETECTED') != 'SAP_VM_PROVISION_UNDEFINED_VARIABLE_DETECTED' |
| 8 | + - lookup('ansible.builtin.vars', item) is string |
| 9 | + - lookup('ansible.builtin.vars', item) | trim | length > 0 |
| 10 | + fail_msg: | |
| 11 | + {% if lookup('ansible.builtin.vars', item, default='SAP_VM_PROVISION_UNDEFINED_VARIABLE_DETECTED') == 'SAP_VM_PROVISION_UNDEFINED_VARIABLE_DETECTED' %} |
| 12 | + The variable '{{ item }}' is undefined. |
| 13 | + {% elif lookup('ansible.builtin.vars', item) is not string %} |
| 14 | + The variable '{{ item }}' is not a String. |
| 15 | + {% else %} |
| 16 | + The variable '{{ item }}' is empty. |
| 17 | + {% endif %} |
| 18 | + loop: |
| 19 | + - sap_vm_provision_aws_access_key |
| 20 | + - sap_vm_provision_aws_secret_access_key |
| 21 | + - sap_vm_provision_aws_region |
| 22 | + - sap_vm_provision_aws_vpc_availability_zone |
| 23 | + - sap_vm_provision_aws_vpc_subnet_id |
| 24 | + - sap_vm_provision_aws_ec2_vs_host_os_image |
| 25 | + |
| 26 | + |
| 27 | +- name: Assert that string variables are valid for {{ sap_vm_provision_iac_platform }} using 'ansible' |
| 28 | + ansible.builtin.assert: |
| 29 | + that: |
| 30 | + - lookup('ansible.builtin.vars', item, default='SAP_VM_PROVISION_UNDEFINED_VARIABLE_DETECTED') != 'SAP_VM_PROVISION_UNDEFINED_VARIABLE_DETECTED' |
| 31 | + - lookup('ansible.builtin.vars', item) is string |
| 32 | + - lookup('ansible.builtin.vars', item) | trim | length > 0 |
| 33 | + fail_msg: | |
| 34 | + {% if lookup('ansible.builtin.vars', item, default='SAP_VM_PROVISION_UNDEFINED_VARIABLE_DETECTED') == 'SAP_VM_PROVISION_UNDEFINED_VARIABLE_DETECTED' %} |
| 35 | + The variable '{{ item }}' is undefined. |
| 36 | + {% elif lookup('ansible.builtin.vars', item) is not string %} |
| 37 | + The variable '{{ item }}' is not a String. |
| 38 | + {% else %} |
| 39 | + The variable '{{ item }}' is empty. |
| 40 | + {% endif %} |
| 41 | + loop: |
| 42 | + - sap_vm_provision_aws_vpc_sg_names |
| 43 | + - sap_vm_provision_aws_key_pair_name_ssh_host_public_key |
| 44 | + - sap_vm_provision_aws_placement_resource_name |
| 45 | + - sap_vm_provision_aws_ha_iam_role |
| 46 | + - sap_vm_provision_aws_ha_iam_instance_profile |
| 47 | + when: |
| 48 | + - sap_vm_provision_iac_type == 'ansible' |
| 49 | + |
| 50 | + |
| 51 | +- name: Assert that boolean variables are valid for {{ sap_vm_provision_iac_platform }} |
| 52 | + ansible.builtin.assert: |
| 53 | + that: |
| 54 | + - lookup('ansible.builtin.vars', __sap_vm_provision_loop_bool_var, default='SAP_VM_PROVISION_UNDEFINED_VARIABLE_DETECTED') != 'SAP_VM_PROVISION_UNDEFINED_VARIABLE_DETECTED' |
| 55 | + - lookup('ansible.builtin.vars', __sap_vm_provision_loop_bool_var) is boolean |
| 56 | + - lookup('ansible.builtin.vars', __sap_vm_provision_loop_bool_var) | trim | length > 0 |
| 57 | + fail_msg: | |
| 58 | + {% if lookup('ansible.builtin.vars', item, default='SAP_VM_PROVISION_UNDEFINED_VARIABLE_DETECTED') == 'SAP_VM_PROVISION_UNDEFINED_VARIABLE_DETECTED' %} |
| 59 | + The variable '{{ __sap_vm_provision_loop_bool_var }}' is undefined. |
| 60 | + {% elif lookup('ansible.builtin.vars', item) is not boolean %} |
| 61 | + The variable '{{ __sap_vm_provision_loop_bool_var }}' is not a Boolean. |
| 62 | + {% else %} |
| 63 | + The variable '{{ __sap_vm_provision_loop_bool_var }}' is empty. |
| 64 | + {% endif %} |
| 65 | + loop: |
| 66 | + - sap_vm_provision_aws_vpc_subnet_create_boolean |
| 67 | + - sap_vm_provision_aws_placement_strategy_spread |
| 68 | + - sap_vm_provision_aws_dns_overwrite |
| 69 | + vars: |
| 70 | + __sap_vm_provision_loop_bool_var: "{{ item }}" |
| 71 | + |
| 72 | + |
| 73 | +- name: Block to validate host_specifications_dictionary |
| 74 | + vars: |
| 75 | + __sap_vm_provision_os_image_dictionary_name: "{{ 'sap_vm_provision_' ~ sap_vm_provision_iac_platform ~ '_host_os_image_dictionary' }}" |
| 76 | + __sap_vm_provision_os_image_name: "{{ 'sap_vm_provision_' ~ sap_vm_provision_iac_platform ~ '_host_os_image' }}" |
| 77 | + __sap_vm_provision_os_image_value: "{{ lookup('ansible.builtin.vars', __sap_vm_provision_os_image_name) }}" |
| 78 | + block: |
| 79 | + - name: Assert that the variable {{ __sap_vm_provision_os_image_dictionary_name }} is defined and valid |
| 80 | + ansible.builtin.assert: |
| 81 | + that: |
| 82 | + - lookup('ansible.builtin.vars', __sap_vm_provision_os_image_dictionary_name) is defined |
| 83 | + - lookup('ansible.builtin.vars', __sap_vm_provision_os_image_dictionary_name) is mapping |
| 84 | + - lookup('ansible.builtin.vars', __sap_vm_provision_os_image_dictionary_name) | length > 0 |
| 85 | + fail_msg: | |
| 86 | + The variable {{ __sap_vm_provision_os_image_dictionary_name }} is undefined or invalid. |
| 87 | + It must be a non-empty dictionary. |
| 88 | +
|
| 89 | + - name: Assert that the value of variable {{ __sap_vm_provision_os_image_name }} is present in a dictionary |
| 90 | + ansible.builtin.assert: |
| 91 | + that: |
| 92 | + - lookup('ansible.builtin.vars', __sap_vm_provision_os_image_dictionary_name)[__sap_vm_provision_os_image_value] is defined |
| 93 | + - lookup('ansible.builtin.vars', __sap_vm_provision_os_image_dictionary_name)[__sap_vm_provision_os_image_value] | length > 0 |
| 94 | + fail_msg: | |
| 95 | + Invalid value '{{ __sap_vm_provision_os_image_value }}' provided for the variable '{{ __sap_vm_provision_os_image_name }}'. |
| 96 | + Available options: {{ lookup('ansible.builtin.vars', __sap_vm_provision_os_image_dictionary_name).keys() | list | join(', ') }} |
0 commit comments