From 7497e1c91e73cc62a2086b607333070c484e1880 Mon Sep 17 00:00:00 2001 From: ionutboangiu Date: Wed, 19 Mar 2025 20:33:52 +0200 Subject: [PATCH] extract reprepro logic to dedicated role --- .../ansible/roles/reprepro/defaults/main.yaml | 2 + data/ansible/roles/reprepro/tasks/main.yaml | 54 ++++++++++++++++++ .../reprepro/templates/distributions.conf.j2 | 55 +++++++++++++++++++ .../roles/reprepro/templates/options.conf.j2 | 3 + 4 files changed, 114 insertions(+) create mode 100644 data/ansible/roles/reprepro/defaults/main.yaml create mode 100644 data/ansible/roles/reprepro/tasks/main.yaml create mode 100644 data/ansible/roles/reprepro/templates/distributions.conf.j2 create mode 100644 data/ansible/roles/reprepro/templates/options.conf.j2 diff --git a/data/ansible/roles/reprepro/defaults/main.yaml b/data/ansible/roles/reprepro/defaults/main.yaml new file mode 100644 index 000000000..c7432ba1f --- /dev/null +++ b/data/ansible/roles/reprepro/defaults/main.yaml @@ -0,0 +1,2 @@ +--- +reprepro_basedir: /var/packages/debian diff --git a/data/ansible/roles/reprepro/tasks/main.yaml b/data/ansible/roles/reprepro/tasks/main.yaml new file mode 100644 index 000000000..f95200049 --- /dev/null +++ b/data/ansible/roles/reprepro/tasks/main.yaml @@ -0,0 +1,54 @@ +--- +- name: Validate distributions variable + ansible.builtin.fail: + msg: "The 'distributions' variable must be defined and contain at least one distribution with codename and version properties." + when: not distributions | default(false) + +- name: Ensure reprepro is installed + become: true + ansible.builtin.apt: + name: reprepro + state: present + +- name: Create debian repository base directory + become: true + ansible.builtin.file: + path: "{{ reprepro_basedir }}" + state: directory + +- name: Create reprepro configuration directory + become: true + ansible.builtin.file: + path: "{{ reprepro_basedir }}/conf" + state: directory + +- name: Create reprepro incoming packages directory + become: true + ansible.builtin.file: + path: "{{ reprepro_basedir }}/incoming" + state: directory + +- name: Configure reprepro distribution settings + become: true + ansible.builtin.template: + src: distributions.conf.j2 + dest: "{{ reprepro_basedir }}/conf/distributions" + mode: "0600" + owner: root + +- name: Configure reprepro general options + become: true + ansible.builtin.template: + src: options.conf.j2 + dest: "{{ reprepro_basedir }}/conf/options" + mode: "0600" + owner: root + +- name: Initialize empty override file for testing distribution + become: true + ansible.builtin.copy: + content: "" + dest: "{{ reprepro_basedir }}/conf/override.testing" + force: false + group: root + owner: root diff --git a/data/ansible/roles/reprepro/templates/distributions.conf.j2 b/data/ansible/roles/reprepro/templates/distributions.conf.j2 new file mode 100644 index 000000000..adf149cc3 --- /dev/null +++ b/data/ansible/roles/reprepro/templates/distributions.conf.j2 @@ -0,0 +1,55 @@ +{{ ansible_managed | comment }} +Origin: apt.cgrates.org +Label: apt.cgrates.org +Suite: stable +Codename: v0.10 +Architectures: amd64 +Components: main +Description: CGRateS v0.10 APT repository +SignWith: yes +DebOverride: override.testing +DscOverride: override.testing + +Origin: apt.cgrates.org +Label: apt.cgrates.org +Suite: master +Codename: master +Architectures: amd64 +Components: main +Description: CGRateS master APT repository +SignWith: yes +DebOverride: override.testing +DscOverride: override.testing + +{% for distribution in distributions %} +Origin: apt.cgrates.org +Label: apt.cgrates.org +Suite: stable-{{ distribution['codename'] }} +Codename: v0.10-{{ distribution['codename'] }} +Architectures: amd64 source +Components: main +Description: CGRateS v0.10 APT repository for {{ distribution['codename'] }} +DebIndices: Packages Release . .gz +Contents: . .gz +ContentsArchitectures: amd64 source +ContentsComponents: main +SignWith: yes +DebOverride: override.testing +DscOverride: override.testing + +Origin: apt.cgrates.org +Label: apt.cgrates.org +Suite: master-{{ distribution['codename'] }} +Codename: master-{{ distribution['codename'] }} +Architectures: amd64 source +Components: main +Description: CGRateS master APT repository for {{ distribution['codename'] }} +DebIndices: Packages Release . .gz +Contents: . .gz +ContentsArchitectures: amd64 source +ContentsComponents: main +SignWith: yes +DebOverride: override.testing +DscOverride: override.testing + +{% endfor %} diff --git a/data/ansible/roles/reprepro/templates/options.conf.j2 b/data/ansible/roles/reprepro/templates/options.conf.j2 new file mode 100644 index 000000000..6187384eb --- /dev/null +++ b/data/ansible/roles/reprepro/templates/options.conf.j2 @@ -0,0 +1,3 @@ +{{ ansible_managed | comment }} +verbose +basedir /var/packages/debian