sequence.yml 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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: not (item.direct_download | default(true))
  17. - name: Store conf code as a fact
  18. set_fact:
  19. src_url: "{{ dl_cc.content | regex_replace('^.*action=\"', '') | regex_replace('\".*$', '') | regex_replace('amp;', '') }}"
  20. when: dl_cc.content is defined
  21. - name: Store direct URL as a fact
  22. set_fact:
  23. src_url: "https://drive.google.com/uc?export=download&id={{ item.file_id }}"
  24. when:
  25. - dl_cc.content is not defined
  26. - item.direct_download | default(true)
  27. - name: Check if the target dir is already there
  28. ansible.builtin.stat:
  29. path: "{{ item.target_dir }}"
  30. register: targetdir
  31. when: item.target_dir is defined
  32. - name: Download the file
  33. get_url:
  34. url: "{{ src_url }}"
  35. dest: "{{ ansible_facts['user_dir'] }}/Downloads/{{ item.name }}"
  36. mode: 0664
  37. timeout: 30
  38. checksum: "{{ item.checksum | default('') }}"
  39. when:
  40. - (src_url | default(None)) != None
  41. - item.target_dir is not defined or (targetdir.stat is defined and not targetdir.stat.exists)
  42. register: downloaded
  43. - name: Extract if so required
  44. become: yes
  45. unarchive:
  46. src: "{{ ansible_facts['user_dir'] }}/Downloads/{{ item.name }}"
  47. remote_src: yes
  48. creates: "{{ item.extracted_dir }}"
  49. dest: "{{ item.extract_to | default('/') }}"
  50. register: extract_action
  51. when:
  52. - item.extracted_dir is defined
  53. - downloaded.changed
  54. - name: Rename wherever the archive extracted to whatever new name is required, if so
  55. become: yes
  56. command: mv {{ item.extracted_dir }} {{ item.target_dir }}
  57. when:
  58. - item.target_dir is defined
  59. - extract_action is defined
  60. - extract_action.changed
  61. - name: Make sure bin is in PATH
  62. lineinfile:
  63. path: "{{ ansible_facts['user_dir'] }}/.bashrc"
  64. line: 'PATH="${PATH}:{{ item.target_dir | default(item.extracted_dir) }}/bin"'
  65. regexp: '^PATH=.*{{ item.target_dir | default(item.extracted_dir) }}/bin'
  66. insertafter: "^# User specific environment$"
  67. state: present
  68. when:
  69. - item.add_to_path is defined
  70. - item.add_to_path
  71. - item.extracted_dir is defined
  72. - name: Remove after finished if so required
  73. file:
  74. path: "{{ ansible_facts['user_dir'] }}/Downloads/{{ item.name }}"
  75. state: absent
  76. when:
  77. - item.remove_after is defined
  78. - item.remove_after
  79. - name: reset facts
  80. set_fact:
  81. dl_cc: !!null
  82. src_url: !!null
  83. targetdir: !!null
  84. downloaded: !!null
  85. extract_action: !!null
  86. ...