-
Notifications
You must be signed in to change notification settings - Fork 0
/
source_install.yml
98 lines (88 loc) · 3.5 KB
/
source_install.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
---
- name: Install which
ansible.builtin.package:
name: "{{ pass_which_package }}"
- name: Check if Pass is present
environment:
PATH: "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
register: _pass_presence
changed_when: false
failed_when: false
ansible.builtin.command:
cmd: which pass
- name: Download Pass source files
# This conditional instructs Ansible to only download source files when state
# is present or if state is absent *and Pass is currently installed*. The latter
# ensures that `pass_state == "present"` *and* `pass_state == "absent"` are idempotent.
when: (pass_state == "present") or
(pass_state == "absent" and _pass_presence.rc == 0)
block:
- name: Install build dependencies
ansible.builtin.package:
name: "{{ pass_src_build_deps }}"
- name: Determine latest pass_version, if necessary
when: pass_version == "latest"
block:
- name: Determine latest pass_version | Retrieve tags from Github
register: _pass_tags
ansible.builtin.uri:
url: "https://api.github.com/repos/zx2c4/password-store/tags"
- name: Determine latest pass_version | Set pass_version
ansible.builtin.set_fact:
pass_version: "{{ _pass_tags['json'][0]['name'] }}"
- name: Create pass_download_path directory
ansible.builtin.file:
path: "{{ pass_download_path }}"
state: directory
mode: "0755"
- name: Unarchive source tarball
register: _pass_ua_tarball
ansible.builtin.unarchive:
remote_src: true
src: "{{ pass_src_tarball_url }}"
dest: "{{ pass_download_path }}"
# This should not be required; Ansible should be able to figure out
# whether this task resulted in a change by itself. For some reason,
# Ansible does not report the status correctly on EL 8 and OpenSUSE Leap 15.3.
# Adding this line fixes the issue.
creates: "{{ pass_src_dir }}"
- name: "make {{ pass_make_target }}"
# This conditional is similar to the one above. The only difference is that
# when `pass_state == present`, this task will only run if the source files
# have changed.
when: (pass_make_target == "uninstall" and _pass_presence.rc == 0) or
(pass_make_target == "install" and _pass_ua_tarball.changed | bool)
community.general.make:
chdir: "{{ pass_src_dir }}"
params: "{{ pass_make_params }}"
target: "{{ pass_make_target }}"
- name: "Install run dependencies"
when: pass_state == "present"
ansible.builtin.package:
name: "{{ pass_src_run_deps }}"
state: present
-
when: pass_state == "present"
block:
- name: Clean up old versions in pass_download_path | Find old directories
register: pass_src_old_dirs
ansible.builtin.find:
path: "{{ pass_download_path }}"
patterns: "password-store-*"
excludes: "{{ pass_src_name }}"
file_type: directory
- name: Clean up old versions in pass_download_path | Remove directories if needed
when: pass_src_old_dirs.files != []
block:
- name: Clean up old versions in pass_download_path | Remove directories if needed
loop: "{{ pass_src_old_dirs.files }}"
loop_control:
label: "{{ item.path }}"
ansible.builtin.file:
path: "{{ item.path }}"
state: absent
- name: Clean up after uninstalling Pass
when: pass_state == "absent"
ansible.builtin.file:
path: "{{ pass_download_path }}"
state: absent