2024-07-19 21:31:41 +00:00
|
|
|
---
|
|
|
|
# task/install file for hashicorp_vault
|
|
|
|
- name: "Vault | Get latest release of vault"
|
|
|
|
when: vault_version == 'latest'
|
|
|
|
block:
|
|
|
|
- name: "Vault | Get latest vault release from github api"
|
|
|
|
ansible.builtin.uri:
|
|
|
|
url: "{{ vault_github_api }}/hashicorp/vault/releases/latest"
|
|
|
|
return_content: true
|
|
|
|
register: _vault_latest_release
|
|
|
|
|
|
|
|
- name: "Vault | Set wanted vault version to latest tag"
|
|
|
|
ansible.builtin.set_fact:
|
|
|
|
_vault_wanted_version: "{{ _vault_latest_release.json['tag_name']|regex_replace('v', '') }}"
|
|
|
|
|
|
|
|
- name: "Vault | Set wanted vault version to {{ vault_version }}"
|
|
|
|
ansible.builtin.set_fact:
|
|
|
|
_vault_wanted_version: "{{ vault_version|regex_replace('v', '') }}"
|
|
|
|
when: vault_version != 'latest'
|
|
|
|
|
|
|
|
- name: "Vault | Get current vault version"
|
|
|
|
block:
|
|
|
|
- name: "Vault | Stat vault version file"
|
|
|
|
ansible.builtin.stat:
|
|
|
|
path: "{{ vault_config_dir }}/.version"
|
|
|
|
changed_when: false
|
|
|
|
check_mode: false
|
|
|
|
register: _vault_version_file
|
|
|
|
|
|
|
|
- name: "Vault | Get current vault version"
|
|
|
|
ansible.builtin.slurp:
|
|
|
|
src: "{{ _vault_version_file.stat.path }}"
|
|
|
|
when:
|
|
|
|
- _vault_version_file.stat.exists
|
|
|
|
- _vault_version_file.stat.isreg
|
|
|
|
register: _vault_current_version
|
|
|
|
|
|
|
|
- name: "Vault | Download and install vault binary"
|
2024-09-02 20:24:58 +00:00
|
|
|
when:
|
|
|
|
- _vault_current_version is not defined
|
|
|
|
or _vault_wanted_version != (_vault_current_version.content|default('')|b64decode)
|
|
|
|
- not ansible_check_mode
|
2024-07-19 21:31:41 +00:00
|
|
|
block:
|
|
|
|
- name: "Vault | Set vault package name to download"
|
|
|
|
ansible.builtin.set_fact:
|
|
|
|
_vault_package_name: >-
|
|
|
|
vault_{{ _vault_wanted_version }}_linux_{{ vault_deb_architecture_map[ansible_architecture] }}.zip
|
|
|
|
_vault_shasum_file_name: >-
|
|
|
|
vault_{{ _vault_wanted_version }}_SHA256SUMS
|
|
|
|
|
|
|
|
- name: "Vault | Download checksum file for vault archive"
|
|
|
|
ansible.builtin.get_url:
|
|
|
|
url: "{{ vault_repository_url }}/{{ _vault_wanted_version }}/{{ _vault_shasum_file_name }}"
|
|
|
|
dest: "/tmp/{{ _vault_shasum_file_name }}"
|
|
|
|
mode: "0644"
|
|
|
|
register: _vault_checksum_file
|
|
|
|
until: _vault_checksum_file is succeeded
|
|
|
|
retries: 5
|
|
|
|
delay: 2
|
|
|
|
check_mode: false
|
|
|
|
|
|
|
|
- name: "Vault | Extract correct checksum from checksum file"
|
|
|
|
ansible.builtin.command:
|
|
|
|
cmd: 'grep "{{ _vault_package_name }}" /tmp/{{ _vault_shasum_file_name }}'
|
|
|
|
changed_when: false
|
|
|
|
register: _vault_expected_checksum_line
|
|
|
|
|
|
|
|
- name: "Vault | Parse the expected checksum"
|
|
|
|
ansible.builtin.set_fact:
|
|
|
|
_vault_expected_checksum: "{{ _vault_expected_checksum_line.stdout.split()[0] }}"
|
|
|
|
|
|
|
|
- name: "Vault | Download vault binary archive"
|
|
|
|
ansible.builtin.get_url:
|
|
|
|
url: "{{ vault_repository_url }}/{{ _vault_wanted_version }}/{{ _vault_package_name }}"
|
|
|
|
dest: "/tmp/{{ _vault_package_name }}"
|
|
|
|
mode: "0644"
|
|
|
|
checksum: "sha256:{{ _vault_expected_checksum }}"
|
|
|
|
register: _vault_binary_archive
|
|
|
|
until: _vault_binary_archive is succeeded
|
|
|
|
retries: 5
|
|
|
|
delay: 2
|
|
|
|
|
|
|
|
- name: "Vault | Create temporary directory for archive decompression"
|
|
|
|
ansible.builtin.file:
|
|
|
|
path: /tmp/vault
|
|
|
|
state: directory
|
|
|
|
mode: "0755"
|
|
|
|
|
|
|
|
- name: "Vault | Unpack vault archive"
|
|
|
|
ansible.builtin.unarchive:
|
|
|
|
src: "/tmp/{{ _vault_package_name }}"
|
|
|
|
dest: "/tmp/vault"
|
|
|
|
owner: "{{ vault_user }}"
|
|
|
|
group: "{{ vault_group }}"
|
|
|
|
mode: "0755"
|
|
|
|
remote_src: true
|
|
|
|
|
|
|
|
- name: "Vault | Copy vault binary to {{ vault_binary_path }}"
|
|
|
|
ansible.builtin.copy:
|
|
|
|
src: /tmp/vault/vault
|
|
|
|
dest: "{{ vault_binary_path }}"
|
|
|
|
owner: root
|
|
|
|
group: root
|
|
|
|
mode: "0755"
|
|
|
|
remote_src: true
|
|
|
|
force: true
|
|
|
|
|
|
|
|
- name: "Vault | Update vault version file"
|
|
|
|
ansible.builtin.copy:
|
|
|
|
content: "{{ _vault_wanted_version }}"
|
|
|
|
dest: "{{ vault_config_dir }}/.version"
|
|
|
|
owner: "{{ vault_user }}"
|
|
|
|
group: "{{ vault_group }}"
|
|
|
|
mode: "0600"
|
|
|
|
|
|
|
|
- name: "Vault | Set restart-check variable"
|
|
|
|
ansible.builtin.set_fact:
|
|
|
|
_vault_service_need_restart: true
|
|
|
|
|
|
|
|
- name: "Vault | Cleanup temporary directory"
|
|
|
|
ansible.builtin.file:
|
|
|
|
path: "{{ item }}"
|
|
|
|
state: absent
|
|
|
|
loop:
|
|
|
|
- /tmp/vault
|
|
|
|
- /tmp/{{ _vault_package_name }}
|
|
|
|
- /tmp/{{ _vault_shasum_file_name }}
|
|
|
|
|
|
|
|
- name: "Vault | Copy systemd service file for vault"
|
|
|
|
ansible.builtin.template:
|
|
|
|
src: "vault.service.j2"
|
|
|
|
dest: "/etc/systemd/system/{{ vault_service_name }}.service"
|
|
|
|
owner: root
|
|
|
|
group: root
|
|
|
|
mode: "0644"
|
|
|
|
register: _vault_unit_file
|
|
|
|
|
|
|
|
- name: "Vault | Set reload-check & restart-check variable"
|
|
|
|
ansible.builtin.set_fact:
|
|
|
|
_vault_service_need_reload: true
|
|
|
|
_vault_service_need_restart: true
|
|
|
|
when: _vault_unit_file.changed # noqa: no-handler
|
|
|
|
|
|
|
|
- name: "Vault | Copy systemd service file for vault"
|
|
|
|
ansible.builtin.template:
|
|
|
|
src: "vault.service.j2"
|
|
|
|
dest: "/etc/systemd/system/vault.service"
|
|
|
|
owner: root
|
|
|
|
group: root
|
|
|
|
mode: "0644"
|
|
|
|
notify:
|
|
|
|
- "systemctl-daemon-reload"
|