build_vm_list.yml 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. ---
  2. # Creates a dictionary for use with oVirt.vm-infra role
  3. # https://github.com/oVirt/ovirt-ansible-vm-infra
  4. # Side note:
  5. # If we have a count: 1 in our vm definition, the name that you put in the proper field will be preserved
  6. # if we have more than 1 a counter will be raised and the vm name will be name + iteration (EG) node0, node1, node2
  7. # in case of count: 3
  8. - fail:
  9. msg: "The openshift_ovirt_dns_zone variable is required."
  10. when:
  11. - openshift_ovirt_dns_zone is none
  12. - name: Create virtual machine list fact
  13. set_fact:
  14. vms: >-
  15. {{ vms|default([]) }} + [
  16. {% for iter in range(item.count) -%}
  17. {% if iter > 0 -%},{% endif -%}
  18. {
  19. {% if item.count == 1 -%}
  20. 'name': '{{ item.name }}.{{ openshift_ovirt_dns_zone }}',
  21. {% elif item.count > 1 -%}
  22. 'name': '{{ item.name }}{{ iter }}.{{ openshift_ovirt_dns_zone }}',
  23. {% endif -%}
  24. 'tag': 'openshift_{{ item.profile }}',
  25. 'description': '{{ item.description | default("") }}',
  26. 'cloud_init':
  27. {
  28. {% if item.count == 1 -%}
  29. 'host_name': '{{ item.name }}.{{ openshift_ovirt_dns_zone }}',
  30. {% if item.nic_mode is defined -%}
  31. 'nic_boot_protocol': 'static',
  32. 'nic_ip_address': '{{ item["nic_mode"][item["name"]]["nic_ip_address"] }}',
  33. 'nic_netmask': '{{ item["nic_mode"][item["name"]]["nic_netmask"] }}',
  34. 'nic_gateway': '{{ item["nic_mode"][item["name"]]["nic_gateway"] }}',
  35. 'nic_on_boot': {{ item["nic_mode"][item["name"]]["nic_on_boot"] | default(true) | bool }},
  36. 'nic_name': '{{ item["nic_mode"][item["name"]]["nic_name"] | default("eth0") }}',
  37. {% if item["nic_mode"][item["name"]]["dns_servers"] is defined -%}
  38. 'dns_servers': '{{ item["nic_mode"][item["name"]]["dns_servers"] }}',
  39. 'dns_search': '{{ item["nic_mode"][item["name"]]["dns_search"] }}',
  40. {% endif -%}
  41. {% endif -%}
  42. {% if item.dns_servers is defined -%}
  43. 'dns_servers': '{{ item["dns_servers"] }}',
  44. {% endif -%}
  45. {% if item.dns_search is defined -%}
  46. 'dns_search': '{{ item["dns_search"] }}',
  47. {% endif -%}
  48. {% elif item.count > 1 -%}
  49. 'host_name': '{{ item.name }}{{ iter }}.{{ openshift_ovirt_dns_zone }}',
  50. {% if item.nic_mode is defined -%}
  51. 'nic_boot_protocol': 'static',
  52. 'nic_ip_address': '{{ item["nic_mode"][item["name"] + iter | string ]["nic_ip_address"] }}',
  53. 'nic_netmask': '{{ item["nic_mode"][item["name"] + iter | string ]["nic_netmask"] }}',
  54. 'nic_gateway': '{{ item["nic_mode"][item["name"] + iter | string ]["nic_gateway"] }}',
  55. 'nic_on_boot': {{ item["nic_mode"][item["name"] + iter | string ]["nic_on_boot"] | default(true) | bool }},
  56. 'nic_name': '{{ item["nic_mode"][item["name"] + iter | string ]["nic_name"] | default("eth0") }}',
  57. {% if item["nic_mode"][item["name"] + iter | string ]["dns_servers"] is defined -%}
  58. 'dns_servers': '{{ item["nic_mode"][item["name"] + iter | string ]["dns_servers"] }}',
  59. {% endif -%}
  60. {% if item["nic_mode"][item["name"] + iter | string ]["dns_search"] is defined -%}
  61. 'dns_search': '{{ item["nic_mode"][item["name"] + iter | string ]["dns_search"] }}',
  62. {% endif -%}
  63. {% endif -%}
  64. {% if item.dns_servers is defined -%}
  65. 'dns_servers': '{{ item["dns_servers"] }}',
  66. {% endif -%}
  67. {% if item.dns_search is defined -%}
  68. 'dns_search': '{{ item["dns_search"] }}',
  69. {% endif -%}
  70. {% endif -%}
  71. 'authorized_ssh_keys': '{{ openshift_ovirt_ssh_key }}'
  72. },
  73. 'profile': {{ openshift_ovirt_vm_profile[ item.profile ] }} ,
  74. }
  75. {% endfor -%}
  76. ]
  77. affinity_groups: >-
  78. {{ affinity_groups|default([]) }} + [
  79. {% if item.count > 1 -%}
  80. {
  81. 'name': '{{ item.name }}_ag',
  82. 'cluster': '{{ openshift_ovirt_cluster }}',
  83. 'vm_enforcing': 'false',
  84. 'vm_rule': 'negative',
  85. 'vms': [
  86. {% for iter in range(item.count) -%}
  87. '{{ item.name }}{{ iter }}.{{ openshift_ovirt_dns_zone }}',
  88. {% endfor -%}
  89. ]
  90. }
  91. {% endif -%}
  92. ]
  93. with_items: "{{ openshift_ovirt_vm_manifest }}"
  94. tags:
  95. - openshift_ovirt
  96. ...