taler-deployment

Deployment scripts and configuration files
Log | Files | Refs | README

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"