|
| 1 | +--- |
| 2 | +- name: 'Make directories for {{ prometheus_software_name_version }} build' |
| 3 | + become: true |
| 4 | + file: |
| 5 | + owner: '{{ prometheus_user }}' |
| 6 | + group: '{{ prometheus_group }}' |
| 7 | + mode: 0750 |
| 8 | + path: '{{ prometheus_build_directory }}' |
| 9 | + state: directory |
| 10 | + with_items: |
| 11 | + - '{{ prometheus_software_src_dir }}' |
| 12 | + - '{{ prometheus_software_build_dir }}' |
| 13 | + loop_control: |
| 14 | + loop_var: prometheus_build_directory |
| 15 | + |
| 16 | +- name: 'Download and extract the {{ prometheus_software_name_version }} project source to {{ prometheus_software_build_dir }}' |
| 17 | + become: true |
| 18 | + # Certain versions of ansible break 'become_user' for 'archive' and 'get_url', supposedly fixed in 2.6.3: |
| 19 | + # become_user: '{% if ansible_version.full is version_compare("2.6.0", ">=") and ansible_version.full is version_compare("2.6.2", "<") %}root{% else %}{{ prometheus_user }}{% endif %}' |
| 20 | + # become_user: '{{ prometheus_user }}' |
| 21 | + unarchive: |
| 22 | + extra_opts: ['--strip-components=1'] |
| 23 | + creates: '{{ prometheus_software_src_dir }}/*' |
| 24 | + dest: '{{ prometheus_software_src_dir }}' |
| 25 | + owner: '{{ prometheus_user }}' |
| 26 | + group: '{{ prometheus_group }}' |
| 27 | + src: '{{ prometheus_software_src_url }}' |
| 28 | + remote_src: true |
| 29 | + when: prometheus_software_src_url is match('.*(tar.gz|zip)$') |
| 30 | + |
| 31 | +- name: 'Clone the {{ prometheus_software_name_version }} project source from {{ prometheus_software_src_url }} to {{ prometheus_software_src_dir }}' |
| 32 | + become: true |
| 33 | + become_user: '{{ prometheus_user }}' |
| 34 | + git: |
| 35 | + repo: '{{ prometheus_software_src_url }}' |
| 36 | + dest: '{{ prometheus_software_src_dir }}' |
| 37 | + version: '{% if prometheus_software_src_version is defined and prometheus_software_src_version %}{{ prometheus_software_src_version }}{% else %}{{ prometheus_software_version }}{% endif %}' |
| 38 | + when: prometheus_software_src_url is not match('.*(tar.gz|zip)$') |
| 39 | + |
| 40 | +- name: 'Gather statistics on the file {{ prometheus_software_src_dir }}/Makefile' |
| 41 | + become: true |
| 42 | + # become_user: '{{ prometheus_user }}' |
| 43 | + stat: |
| 44 | + path: '{{ prometheus_software_src_dir }}/Makefile' |
| 45 | + register: makefile |
| 46 | + |
| 47 | +- name: 'Build {{ prometheus_software_name_version }} source code with Makefile' |
| 48 | + become: true |
| 49 | + # become_user: '{{ prometheus_user }}' |
| 50 | + shell: '{{ prometheus_software_makefile_make_command }}' |
| 51 | + args: |
| 52 | + chdir: '{{ prometheus_software_src_dir }}' |
| 53 | + creates: '{{ prometheus_software_name }}' |
| 54 | + environment: |
| 55 | + GOPATH: '{{ prometheus_software_build_dir }}' |
| 56 | + GOROOT: '{{ prometheus_go_dir }}/{{ prometheus_go_version }}' |
| 57 | + PATH: '{{ ansible_env.PATH }}:{{ prometheus_go_dir }}/{{ prometheus_go_version }}/bin:{{ prometheus_software_build_dir }}/bin' |
| 58 | + when: makefile.stat.exists == True |
| 59 | + |
| 60 | +- name: 'Build {{ prometheus_software_name_version }} source code without Makefile' |
| 61 | + become: true |
| 62 | + # become_user: '{{ prometheus_user }}' |
| 63 | + shell: '{{ prometheus_software_make_command }}' |
| 64 | + args: |
| 65 | + chdir: '{{ prometheus_software_src_dir }}' |
| 66 | + creates: '{{ prometheus_software_name }}' |
| 67 | + environment: |
| 68 | + GOPATH: '{{ prometheus_software_build_dir }}' |
| 69 | + GOROOT: '{{ prometheus_go_dir }}/{{ prometheus_go_version }}' |
| 70 | + PATH: '{{ ansible_env.PATH }}:{{ prometheus_go_dir }}/{{ prometheus_go_version }}/bin:{{ prometheus_software_build_dir }}/bin' |
| 71 | + when: makefile.stat.exists == False |
| 72 | + |
| 73 | +- name: 'Copy {{ prometheus_software_name_version }} to {{ prometheus_software_install_dir }}' |
| 74 | + become: true |
| 75 | + copy: |
| 76 | + remote_src: true |
| 77 | + src: '{{ prometheus_software_src_dir }}/{{ prometheus_built_file }}' |
| 78 | + dest: '{{ prometheus_software_install_dir }}' |
| 79 | + mode: 0555 |
| 80 | + with_items: '{% if prometheus_software_files is defined and prometheus_software_files %}{{ prometheus_software_files }}{% else %}{% set binaries = [prometheus_software_name] %}{{ binaries }}{% endif %}' |
| 81 | + loop_control: |
| 82 | + loop_var: prometheus_built_file |
| 83 | + register: prometheus_software_installation |
| 84 | + |
| 85 | +- name: 'Cleanup {{ prometheus_software_build_dir }} directory from {{ prometheus_software_name_version }} build' |
| 86 | + become: true |
| 87 | + file: |
| 88 | + path: '{{ prometheus_software_build_dir }}' |
| 89 | + state: absent |
0 commit comments