main.yml 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. ---
  2. # Variables affecting this role:
  3. #
  4. # tools:
  5. # - final_name: the path to the tool to check for
  6. # completion: generate bash_completion or no
  7. # completion_file: the name of the bash completion file
  8. # download: if no, just skip it
  9. # download_filename: the name of the remote file to download
  10. # archive_filename: the name of the file inside the archive to extract
  11. #
  12. # NOTE: Tools are downloaded from:
  13. # - mirror.openshift.com for a specific ocp_z version, if only download_filename is set
  14. # - arbitrary location, download_url + download_filename if both are set
  15. #
  16. - name: Check whether the tool archive is there
  17. stat:
  18. path: "{{ ansible_facts['user_dir'] }}/Downloads/{{ tools[item].download_filename }}"
  19. when: tools[item].download_filename is defined
  20. register: tool_exists
  21. loop: "{{ tools.keys() | list }}"
  22. - name: Download the (OpenShift) tool if necessary
  23. get_url:
  24. dest: "{{ ansible_facts['user_dir'] }}/Downloads/{{ tools[item].download_filename }}"
  25. url: "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/{{ ocp_z }}/{{ tools[item].download_filename }}"
  26. when:
  27. - tools[item].download_url is not defined
  28. - tools[item].download_filename is defined
  29. - not tool_exists.results[offset].stat.exists
  30. register: tool_downloaded
  31. loop: "{{ tools.keys() | list }}"
  32. loop_control:
  33. index_var: offset
  34. - name: Extract the (OpenShift) tool if downloaded
  35. become: yes
  36. unarchive:
  37. src: "{{ ansible_facts['user_dir'] }}/Downloads/{{ tools[item].download_filename }}"
  38. remote_src: yes
  39. include: "{{ tools[item].archive_filename }}"
  40. dest: "{{ tools[item].final_name | dirname }}"
  41. owner: root
  42. group: root
  43. mode: 0755
  44. when:
  45. - tools[item].download_filename is defined
  46. - tools[item].archive_filename is defined
  47. - tools[item].final_name is defined
  48. - tool_downloaded.results[offset].changed
  49. register: tool_extracted
  50. loop: "{{ tools.keys() | list }}"
  51. loop_control:
  52. index_var: offset
  53. - name: Download the (arbitrary) tool if necessary
  54. get_url:
  55. dest: "{{ ansible_facts['user_dir'] }}/Downloads/{{ tools[item].download_filename }}"
  56. url: "{{ tools[item].download_url }}/{{ tools[item].download_filename }}"
  57. when:
  58. - tools[item].download_url is defined
  59. - tools[item].download_filename is defined
  60. - not tool_exists.results[offset].stat.exists
  61. register: tool_downloaded
  62. loop: "{{ tools.keys() | list }}"
  63. loop_control:
  64. index_var: offset
  65. - name: Extract the (arbitrary) tool if downloaded
  66. become: yes
  67. unarchive:
  68. src: "{{ ansible_facts['user_dir'] }}/Downloads/{{ tools[item].download_filename }}"
  69. remote_src: yes
  70. include: "{{ tools[item].archive_filename }}"
  71. dest: "{{ tools[item].final_name | dirname }}"
  72. owner: root
  73. group: root
  74. mode: 0755
  75. when:
  76. - tools[item].download_filename is defined
  77. - tools[item].archive_filename is defined
  78. - tools[item].final_name is defined
  79. - tool_downloaded.results[offset].changed
  80. register: tool_extracted
  81. loop: "{{ tools.keys() | list }}"
  82. loop_control:
  83. index_var: offset
  84. - name: Generate completion if necessary
  85. become: yes
  86. shell:
  87. cmd: "{{ tools[item].final_name }} completion bash > /etc/bash_completion.d/{{ tools[item].completion_file }}"
  88. when:
  89. - tools[item].completion
  90. - tools[item].completion_file is defined
  91. - tools[item].final_name is defined
  92. - tool_extracted.results[offset].changed
  93. loop: "{{ tools.keys() | list }}"
  94. loop_control:
  95. index_var: offset
  96. ...