packages.yml (4332B)
1 --- 2 - name: Create the APT keyring directory 3 ansible.builtin.file: 4 path: /etc/apt/keyrings 5 state: directory 6 owner: root 7 group: root 8 mode: "0755" 9 10 - name: Install the GNU Taler archive signing key 11 ansible.builtin.get_url: 12 url: https://taler.net/taler-systems.gpg 13 dest: /etc/apt/keyrings/taler-systems.gpg 14 owner: root 15 group: root 16 mode: "0644" 17 18 - name: Remove the legacy one-line GNU Taler repository 19 ansible.builtin.file: 20 path: /etc/apt/sources.list.d/taler.list 21 state: absent 22 23 - name: Configure the GNU Taler APT repository on Debian 24 ansible.builtin.deb822_repository: 25 name: Taler 26 types: 27 - deb 28 uris: 29 - https://deb.taler.net/apt/debian 30 suites: 31 - >- 32 {{ ansible_facts["distribution_release"] }}{{ '-testing' if regional_currency_apt_testing else '' }} 33 components: 34 - main 35 architectures: 36 - "{{ regional_currency_apt_architecture }}" 37 signed_by: /etc/apt/keyrings/taler-systems.gpg 38 state: present 39 install_python_debian: true 40 when: ansible_facts["distribution"] == "Debian" 41 42 - name: Configure the GNU Taler APT repository on Ubuntu 43 ansible.builtin.deb822_repository: 44 name: Taler 45 types: 46 - deb 47 uris: 48 - https://deb.taler.net/apt/ubuntu 49 suites: 50 - "{{ ansible_facts['distribution_release'] }}" 51 components: 52 - main 53 architectures: 54 - "{{ regional_currency_apt_architecture }}" 55 signed_by: /etc/apt/keyrings/taler-systems.gpg 56 state: present 57 install_python_debian: true 58 when: ansible_facts["distribution"] == "Ubuntu" 59 60 - name: Refresh the APT package index 61 # Always refresh after Taler repo setup; cache_valid_time can hide Taler pkgs. 62 ansible.builtin.apt: 63 update_cache: true 64 65 - name: Check for managed package changes 66 ansible.builtin.apt: 67 name: "{{ regional_currency_managed_packages }}" 68 state: latest # noqa package-latest 69 check_mode: true 70 register: regional_currency_package_plan 71 72 - name: Read service state before package changes 73 ansible.builtin.service_facts: 74 75 - name: Record whether Nexus was active before package changes 76 ansible.builtin.set_fact: 77 regional_currency_nexus_was_active: >- 78 {{ ansible_facts.services['libeufin-nexus.target'].state == 'active' 79 if 'libeufin-nexus.target' in ansible_facts.services 80 else false }} 81 82 - name: Stop running application services before package changes 83 ansible.builtin.service: 84 name: "{{ item }}" 85 state: stopped 86 loop: "{{ regional_currency_managed_services }}" 87 when: 88 - regional_currency_package_plan.changed 89 - item in ansible_facts.services 90 - ansible_facts.services[item].state == "active" 91 92 - name: Install or upgrade operating-system and GNU Taler packages 93 ansible.builtin.apt: 94 name: "{{ regional_currency_managed_packages }}" 95 state: latest # noqa package-latest 96 register: regional_currency_package_changes 97 98 - name: Refresh service state after package changes 99 ansible.builtin.service_facts: 100 101 - name: Stop services started by package installation 102 ansible.builtin.service: 103 name: "{{ item }}" 104 state: stopped 105 loop: "{{ regional_currency_managed_services }}" 106 when: 107 - regional_currency_package_changes.changed 108 - item in ansible_facts.services 109 - ansible_facts.services[item].state == "active" 110 111 - name: Read the installed PostgreSQL client version 112 ansible.builtin.command: psql --version 113 register: regional_currency_psql_version 114 changed_when: false 115 116 - name: Require PostgreSQL 15 or newer 117 ansible.builtin.assert: 118 that: 119 - regional_currency_psql_version.stdout | regex_search('[0-9]+') | int >= 15 120 fail_msg: "PostgreSQL 15 or newer is required (found: {{ regional_currency_psql_version.stdout }})." 121 122 - name: Install Python support used by the terms generator 123 ansible.builtin.pip: 124 name: sphinx-markdown-builder 125 extra_args: --break-system-packages 126 127 - name: Create persistent deployment state directory 128 ansible.builtin.file: 129 path: "{{ regional_currency_state_directory }}" 130 state: directory 131 owner: root 132 group: root 133 mode: "0700" 134 135 - name: Configure the regional currency for LibEuFin 136 ansible.builtin.template: 137 src: currency.conf.j2 138 dest: /usr/share/libeufin/config.d/regional-currency.conf 139 owner: root 140 group: root 141 mode: "0644"