sequence.yml 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. ---
  2. - name: Inform what is going on
  3. pause:
  4. prompt: |-
  5. *************************************************************************************
  6. Checking if {{ item.name }} needs to be processed...
  7. *************************************************************************************
  8. seconds: 0
  9. - name: Get download confirmation code from Google Drive
  10. uri:
  11. url: "https://drive.google.com/uc?export=download&id={{ item.file_id }}"
  12. creates: "{{ ansible_facts['user_dir'] }}/Downloads/{{ item.name }}"
  13. return_content: yes
  14. status_code: 200
  15. register: dl_cc
  16. when:
  17. - item.file_id is defined
  18. - not (item.direct_download | default(true))
  19. - name: Store conf code as a fact
  20. set_fact:
  21. src_url: "{{ dl_cc.content | regex_replace('^.*action=\"', '') | regex_replace('\".*$', '') | regex_replace('amp;', '') }}"
  22. when: dl_cc.content is defined
  23. - name: Store direct URL as a fact
  24. set_fact:
  25. src_url: "https://drive.google.com/uc?export=download&id={{ item.file_id }}"
  26. when:
  27. - item.file_id is defined
  28. - dl_cc.content is not defined
  29. - item.direct_download | default(true)
  30. - name: Use dict url field as src_url
  31. set_fact:
  32. src_url: "{{ item.url }}"
  33. when:
  34. - item.url is defined
  35. - name: Check if the target is already there
  36. ansible.builtin.stat:
  37. path: "{{ item.target_path }}"
  38. register: target_stat
  39. when: item.target_path is defined
  40. - name: Download the file
  41. get_url:
  42. url: "{{ src_url }}"
  43. dest: "{{ ansible_facts['user_dir'] }}/Downloads/{{ item.name }}"
  44. mode: 0664
  45. timeout: 30
  46. checksum: "{{ item.checksum | default('') }}"
  47. when:
  48. - (src_url | default(None)) != None
  49. - item.target_path is not defined or (target_stat.stat is defined and not target_stat.stat.exists)
  50. register: downloaded
  51. # TODO: fix permissions on target dir (s2i /usr/local/bin)
  52. - name: Extract if so required
  53. become: yes
  54. unarchive:
  55. src: "{{ ansible_facts['user_dir'] }}/Downloads/{{ item.name }}"
  56. remote_src: yes
  57. creates: "{{ item.extracted_dir | default(item.target_path) }}"
  58. dest: "{{ item.extract_to | default('/') }}"
  59. register: extract_action
  60. when:
  61. - item.extract_to is defined
  62. - downloaded.changed
  63. - name: reset permissions if needed
  64. become: yes
  65. file:
  66. path: "{{ item.extract_to }}"
  67. mode: "{{ item.extract_fix_perms }}"
  68. when:
  69. - item.extract_fix_perms is defined
  70. - item.extract_to is defined
  71. - name: Rename wherever the archive extracted to whatever new name is required, if so
  72. become: yes
  73. command: mv {{ item.extracted_dir }} {{ item.target_path }}
  74. when:
  75. - item.extracted_dir is defined
  76. - item.target_path is defined
  77. - extract_action is defined
  78. - extract_action.changed
  79. - name: Make sure bin is in PATH
  80. lineinfile:
  81. path: "{{ ansible_facts['user_dir'] }}/.bashrc"
  82. line: 'PATH="${PATH}:{{ item.target_path | default(item.extracted_dir) }}/bin"'
  83. regexp: '^PATH=.*{{ item.target_path | default(item.extracted_dir) }}/bin'
  84. insertafter: "^# User specific environment$"
  85. state: present
  86. when:
  87. - item.add_to_path is defined
  88. - item.add_to_path
  89. - item.extracted_dir is defined
  90. - name: Remove after finished if so required
  91. file:
  92. path: "{{ ansible_facts['user_dir'] }}/Downloads/{{ item.name }}"
  93. state: absent
  94. when:
  95. - item.remove_after is defined
  96. - item.remove_after
  97. - name: reset facts
  98. set_fact:
  99. dl_cc: !!null
  100. src_url: !!null
  101. target_stat: !!null
  102. downloaded: !!null
  103. extract_action: !!null
  104. ...