awx_configuration.yml 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. # Copyright 2020 Dell Inc. or its subsidiaries. All Rights Reserved.
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. ---
  15. # Get Current AWX configuration
  16. - name: Get organization list
  17. command: >-
  18. awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
  19. organizations list -f human
  20. register: organizations_list
  21. changed_when: no
  22. - name: Get project list
  23. command: >-
  24. awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
  25. projects list -f human
  26. register: projects_list
  27. changed_when: no
  28. - name: Get inventory list
  29. command: >-
  30. awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
  31. inventory list -f human
  32. register: inventory_list
  33. changed_when: no
  34. - name: Get credentials list
  35. command: >-
  36. awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
  37. credentials list -f human
  38. register: credentials_list
  39. changed_when: no
  40. - name: Get template list
  41. command: >-
  42. awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
  43. job_templates list -f human
  44. register: job_templates_list
  45. changed_when: no
  46. - name: If omnia-inventory exists, fetch group names in the inventory
  47. command: >-
  48. awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
  49. groups list --inventory "{{ omnia_inventory_name }}" -f human
  50. register: groups_list
  51. when: omnia_inventory_name in inventory_list.stdout
  52. - name: Get schedules list
  53. command: >-
  54. awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
  55. schedules list -f human
  56. register: schedules_list
  57. changed_when: no
  58. # Delete Default Configurations
  59. - name: Delete default organization
  60. command: >-
  61. awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
  62. organizations delete "{{ default_org }}"
  63. when: default_org in organizations_list.stdout
  64. - name: Delete default job template
  65. command: >-
  66. awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
  67. job_templates delete "{{ default_template }}"
  68. when: default_template in job_templates_list.stdout
  69. - name: Delete default project
  70. command: >-
  71. awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
  72. projects delete "{{ default_projects }}"
  73. when: default_projects in projects_list.stdout
  74. - name: Delete default credential
  75. command: >-
  76. awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
  77. credentials delete "{{ default_credentials }}"
  78. when: default_credentials in credentials_list.stdout
  79. # Create required configuration if not present
  80. - name: Create organisation
  81. command: >-
  82. awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
  83. organizations create --name "{{ organization_name }}"
  84. when: organization_name not in organizations_list.stdout
  85. - name: Create new project
  86. command: >-
  87. awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
  88. projects create --name "{{ project_name }}" --organization "{{ organization_name }}"
  89. --local_path "{{ dir_name }}"
  90. when: project_name not in projects_list.stdout
  91. - name: Create new omnia inventory
  92. command: >-
  93. awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
  94. inventory create --name "{{ omnia_inventory_name }}" --organization "{{ organization_name }}"
  95. when: omnia_inventory_name not in inventory_list.stdout
  96. - name: Create groups in omnia inventory
  97. command: >-
  98. awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
  99. groups create --name "{{ item }}" --inventory "{{ omnia_inventory_name }}"
  100. when: omnia_inventory_name not in inventory_list.stdout or item not in groups_list.stdout
  101. loop: "{{ group_names }}"
  102. - name: Create credentials for omnia
  103. command: >-
  104. awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
  105. credentials create --name "{{ credential_name }}" --organization "{{ organization_name }}"
  106. --credential_type "{{ credential_type }}"
  107. --inputs '{"username": "{{ cobbler_username }}", "password": "{{ cobbler_password }}"}'
  108. when: credential_name not in credentials_list.stdout
  109. - name: DeployOmnia Template
  110. block:
  111. - name: Create template to deploy omnia
  112. command: >-
  113. awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
  114. job_templates create
  115. --name "{{ omnia_template_name }}"
  116. --job_type run
  117. --inventory "{{ omnia_inventory_name }}"
  118. --project "{{ project_name }}"
  119. --playbook "{{ omnia_playbook }}"
  120. --verbosity "{{ playbooks_verbosity }}"
  121. --ask_skip_tags_on_launch true
  122. - name: Associate credential
  123. command: >-
  124. awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
  125. job_templates associate "{{ omnia_template_name }}"
  126. --credential ""{{ credential_name }}""
  127. when: omnia_template_name not in job_templates_list.stdout
  128. - name: DynamicInventory template
  129. block:
  130. - name: Create template to fetch dynamic inventory
  131. command: >-
  132. awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
  133. job_templates create
  134. --name "{{ inventory_template_name }}"
  135. --job_type run
  136. --inventory "{{ omnia_inventory_name }}"
  137. --project "{{ project_name }}"
  138. --playbook "{{ inventory_playbook }}"
  139. --verbosity "{{ playbooks_verbosity }}"
  140. --use_fact_cache true
  141. - name: Associate credential
  142. command: >-
  143. awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
  144. job_templates associate "{{ inventory_template_name }}"
  145. --credential ""{{ credential_name }}""
  146. when: inventory_template_name not in job_templates_list.stdout
  147. - name: Schedule dynamic inventory template
  148. block:
  149. - name: Get unified job template list
  150. command: >-
  151. awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
  152. unified_job_templates list --name "{{ inventory_template_name }}" -f human
  153. register: unified_job_template_list
  154. - name: Get job ID
  155. set_fact:
  156. job_id: "{{ unified_job_template_list.stdout | regex_search('[0-9]+') }}"
  157. - name: Schedule dynamic inventory job
  158. command: >-
  159. awx --conf.host "{{ awx_ip }}" --conf.username "{{ awx_user }}" --conf.password "{{ admin_password }}"
  160. schedules create --name "{{ schedule_name }}"
  161. --unified_job_template="{{ job_id }}" --rrule="{{ schedule_rule }}"
  162. when: schedule_name not in schedules_list.stdout