password_config.yml 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. # Copyright 2021 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. - name: Check login_vars file is encrypted
  16. command: cat {{ login_vars_filename }}
  17. changed_when: false
  18. register: config_content
  19. no_log: true
  20. - name: Decrpyt login_vars.yml
  21. command: >-
  22. ansible-vault decrypt {{ login_vars_filename }}
  23. --vault-password-file {{ vault_filename }}
  24. changed_when: false
  25. when: "'$ANSIBLE_VAULT;' in config_content.stdout"
  26. - name: Include variable file login_vars.yml
  27. include_vars: "{{ login_vars_filename }}"
  28. no_log: true
  29. - name: Validate input parameters are not empty
  30. fail:
  31. msg: "{{ input_config_failure_msg }}"
  32. register: input_config_check
  33. when:
  34. - provision_password | length < 1 or
  35. cobbler_password | length < 1 or
  36. idrac_username | length < 1 or
  37. idrac_password | length < 1
  38. - name: Assert provision_password
  39. assert:
  40. that:
  41. - provision_password | length > min_length | int - 1
  42. - provision_password | length < max_length | int + 1
  43. - '"-" not in provision_password '
  44. - '"\\" not in provision_password '
  45. - '"\"" not in provision_password '
  46. - " \"'\" not in provision_password "
  47. success_msg: "{{ success_msg_provision_password }}"
  48. fail_msg: "{{ fail_msg_provision_password }}"
  49. register: provision_password_check
  50. - name: Assert cobbler_password
  51. assert:
  52. that:
  53. - cobbler_password | length > min_length | int - 1
  54. - cobbler_password | length < max_length | int + 1
  55. - '"-" not in cobbler_password '
  56. - '"\\" not in cobbler_password '
  57. - '"\"" not in cobbler_password '
  58. - " \"'\" not in cobbler_password "
  59. success_msg: "{{ success_msg_cobbler_password }}"
  60. fail_msg: "{{ fail_msg_cobbler_password }}"
  61. register: cobbler_password_check
  62. - name: Assert idrac_username
  63. assert:
  64. that:
  65. - idrac_username | length >= min_username_length
  66. - idrac_username | length < max_length
  67. - '"-" not in idrac_username '
  68. - '"\\" not in idrac_username '
  69. - '"\"" not in idrac_username '
  70. - " \"'\" not in idrac_username "
  71. success_msg: "{{ success_idrac_username }}"
  72. fail_msg: "{{ fail_idrac_username }}"
  73. - name: Assert idrac_password
  74. assert:
  75. that:
  76. - idrac_password | length > min_username_length | int - 1
  77. - idrac_password | length < max_length | int + 1
  78. - '"-" not in idrac_password '
  79. - '"\\" not in idrac_password '
  80. - '"\"" not in idrac_password '
  81. - " \"'\" not in idrac_password "
  82. success_msg: "{{ success_msg_idrac_password }}"
  83. fail_msg: "{{ fail_msg_idrac_password }}"
  84. register: idrac_password_check
  85. - name: Verify ethernet_switch_username and ethernet_switch_password are not empty
  86. assert:
  87. that:
  88. - ethernet_switch_username | length > 0
  89. - ethernet_switch_password | length > 0
  90. success_msg: "{{ ethernet_params_success_msg }}"
  91. fail_msg: "{{ ethernet_params_empty_fail_msg }}"
  92. when: ethernet_switch_support
  93. - name: Assert ethernet_switch_username
  94. assert:
  95. that:
  96. - ethernet_switch_username | length >= min_username_length
  97. - ethernet_switch_username | length < max_length
  98. - '"-" not in ethernet_switch_username '
  99. - '"\\" not in ethernet_switch_username '
  100. - '"\"" not in ethernet_switch_username '
  101. - " \"'\" not in ethernet_switch_username "
  102. success_msg: "{{ success_ethernet_switch_username }}"
  103. fail_msg: "{{ fail_ethernet_switch_username }}"
  104. when: ethernet_switch_support
  105. - name: Assert ethernet_switch_password
  106. assert:
  107. that:
  108. - ethernet_switch_password | length > min_username_length | int - 1
  109. - ethernet_switch_password | length < max_length | int + 1
  110. - '"-" not in ethernet_switch_password '
  111. - '"\\" not in ethernet_switch_password '
  112. - '"\"" not in ethernet_switch_password '
  113. - " \"'\" not in ethernet_switch_password "
  114. success_msg: "{{ success_msg_ethernet_switch_password }}"
  115. fail_msg: "{{ fail_msg_ethernet_switch_password }}"
  116. when: ethernet_switch_support
  117. - name: Verify ib_username and ib_password are not empty
  118. assert:
  119. that:
  120. - ib_username | length > 0
  121. - ib_password | length > 0
  122. success_msg: "{{ ib_params_success_msg }}"
  123. fail_msg: "{{ ib_params_empty_fail_msg }}"
  124. when: ib_switch_support
  125. - name: Assert ib_username
  126. assert:
  127. that:
  128. - ib_username | length >= min_username_length
  129. - ib_username | length < max_length
  130. - '"-" not in ib_username '
  131. - '"\\" not in ib_username '
  132. - '"\"" not in ib_username '
  133. - " \"'\" not in ib_username "
  134. success_msg: "{{ success_ib_username }}"
  135. fail_msg: "{{ fail_ib_username }}"
  136. when: ib_switch_support
  137. - name: Assert ib_password
  138. assert:
  139. that:
  140. - ib_password | length > min_username_length | int - 1
  141. - ib_password | length < max_length | int + 1
  142. - '"-" not in ib_password '
  143. - '"\\" not in ib_password '
  144. - '"\"" not in ib_password '
  145. - " \"'\" not in ib_password "
  146. success_msg: "{{ success_msg_ib_password }}"
  147. fail_msg: "{{ fail_msg_ib_password }}"
  148. when: ib_switch_support
  149. - name: Verify powervault_me4_username and powervault_me4_password are not empty
  150. assert:
  151. that:
  152. - powervault_me4_username | length > 0
  153. - powervault_me4_password | length > 0
  154. success_msg: "{{ pv_params_success_msg }}"
  155. fail_msg: "{{ pv_params_empty_fail_msg }}"
  156. when: powervault_support
  157. - name: Assert powervault_me4_username
  158. assert:
  159. that:
  160. - powervault_me4_username | length >= min_username_length
  161. - powervault_me4_username | length < max_length
  162. - '"-" not in powervault_me4_username '
  163. - '"\\" not in powervault_me4_username '
  164. - '"\"" not in powervault_me4_username '
  165. - " \"'\" not in powervault_me4_username "
  166. success_msg: "{{ success_powervault_me4_username }}"
  167. fail_msg: "{{ fail_powervault_me4_username }}"
  168. when: powervault_support
  169. - name: Assert powervault_me4_password
  170. assert:
  171. that:
  172. - powervault_me4_password | length > min_length | int - 1
  173. - powervault_me4_password | length < max_length | int + 1
  174. - '"-" not in powervault_me4_password '
  175. - '"," not in powervault_me4_password '
  176. - '"." not in powervault_me4_password '
  177. - '"<" not in powervault_me4_password '
  178. - '"\\" not in powervault_me4_password '
  179. - '"\"" not in powervault_me4_password '
  180. - " \"'\" not in powervault_me4_password "
  181. - powervault_me4_password | regex_search('^(?=.*[a-z]).+$')
  182. - powervault_me4_password | regex_search('^(?=.*[A-Z]).+$')
  183. - powervault_me4_password | regex_search('^(?=.*\\d).+$')
  184. - powervault_me4_password | regex_search('^(?=.*[!#$%&()*+/:;=>?@^_`{} ~]).+$')
  185. success_msg: "{{ success_msg_powervault_me4_password }}"
  186. fail_msg: "{{ fail_msg_powervault_me4_password }}"
  187. when: powervault_support
  188. - name: Create ansible vault key
  189. set_fact:
  190. vault_key: "{{ lookup('password', '/dev/null chars=ascii_letters') }}"
  191. when: "'$ANSIBLE_VAULT;' not in config_content.stdout"
  192. - name: Save vault key
  193. copy:
  194. dest: "{{ vault_filename }}"
  195. content: |
  196. {{ vault_key }}
  197. owner: root
  198. force: yes
  199. mode: "{{ vault_file_perm }}"
  200. when: "'$ANSIBLE_VAULT;' not in config_content.stdout"
  201. - name: Encrypt input config file
  202. command: >-
  203. ansible-vault encrypt {{ login_vars_filename }}
  204. --vault-password-file {{ vault_filename }}
  205. changed_when: false
  206. - name: Update login_vars.yml permission
  207. file:
  208. path: "{{ login_vars_filename }}"
  209. mode: "{{ vault_file_perm }}"