--- - name: Load per-app configuration files ansible.builtin.include_vars: file: "{{ role_path }}/{{ item }}.yml" name: "app_{{ item }}" loop: "{{ ((apps | default([])) + (apps_group | default([]))) | select | list }}" failed_when: false - name: Merge app configuration ansible.builtin.set_fact: apps_copr: "{{ apps_copr | default([]) + (lookup('vars', 'app_' + item, default={}).copr | default([])) }}" apps_repos: "{{ apps_repos | default([]) + (lookup('vars', 'app_' + item, default={}).repos | default([])) }}" apps_repofiles: "{{ apps_repofiles | default([]) + (lookup('vars', 'app_' + item, default={}).repofiles | default([])) }}" apps_packages: "{{ apps_packages | default([]) + (lookup('vars', 'app_' + item, default={}).packages | default([])) }}" apps_cargo: "{{ apps_cargo | default([]) + (lookup('vars', 'app_' + item, default={}).cargo | default([])) }}" apps_system_services: "{{ apps_system_services | default([]) + (lookup('vars', 'app_' + item, default={}).system_services | default([])) }}" apps_user_services: "{{ apps_user_services | default([]) + (lookup('vars', 'app_' + item, default={}).user_services | default([])) }}" loop: "{{ ((apps | default([])) + (apps_group | default([]))) | select | list }}" - name: Enable COPR repositories community.general.copr: name: "{{ item.repo | default(item) }}" state: enabled loop: "{{ apps_copr | default([]) }}" become: true - name: Add DNF repositories ansible.builtin.yum_repository: name: "{{ item.name }}" description: "{{ item.description | default(omit) }}" baseurl: "{{ item.baseurl | default(omit) }}" metalink: "{{ item.metalink | default(omit) }}" enabled: "{{ item.enabled | default(true) }}" metadata_expire: "{{ item.metadata_expire | default(omit) }}" gpgcheck: "{{ item.gpgcheck | default(true) }}" repo_gpgcheck: "{{ item.repo_gpgcheck | default(omit) }}" gpgkey: "{{ item.gpgkey | default(omit) }}" loop: "{{ (dnf_add_repos | default([])) + (apps_repos | default([])) }}" become: true - name: Add DNF repository files ansible.builtin.get_url: url: "{{ item.url }}" dest: "/etc/yum.repos.d/{{ item.url | basename }}" owner: root group: root mode: '0644' loop: "{{ apps_repofiles | default([]) }}" become: true - name: Remove DNF repositories ansible.builtin.yum_repository: name: "{{ item }}" state: absent loop: "{{ (dnf_remove_repos | default([])) + (dnf_remove_repos_group | default([])) }}" become: true - name: Remove unwanted packages ansible.builtin.dnf: name: "{{ item }}" state: absent autoremove: true loop: "{{ (dnf_remove | default([])) + (dnf_remove_group | default([])) }}" become: true failed_when: false - name: Install remote RPM packages (from URLs) ansible.builtin.dnf: name: "{{ apps_packages | default([]) | select('match', '^https?://') | list }}" state: present disable_gpg_check: true become: true when: (apps_packages | default([]) | select('match', '^https?://') | list) | length > 0 - name: Install DNF packages ansible.builtin.dnf: name: "{{ ((apps | default([])) + (apps_group | default([])) + (apps_packages | default([]) | reject('match', '^https?://') | list)) | select | list }}" state: present skip_broken: true become: true - name: Update all DNF packages ansible.builtin.dnf: name: "*" state: latest # noqa package-latest skip_broken: true become: true - name: Install cargo packages ansible.builtin.command: cmd: "cargo install {{ item }}" loop: "{{ apps_cargo | default([]) }}" register: apps_cargo_install_result changed_when: "'Installing' in apps_cargo_install_result.stderr or 'Compiling' in apps_cargo_install_result.stderr" failed_when: apps_cargo_install_result.rc != 0 and 'already exists' not in apps_cargo_install_result.stderr - name: Clone git repositories ansible.builtin.git: repo: "{{ item.repo }}" dest: "{{ item.dest }}" version: "{{ item.version }}" update: true loop: "{{ (git_add_repos | default([])) + (git_add_repos_group | default([])) }}" - name: Enable and start system services ansible.builtin.systemd: name: "{{ item }}" enabled: true state: started scope: system loop: "{{ (services_system_enabled | default([])) + (services_system_enabled_group | default([])) + (apps_system_services | default([])) }}" become: true - name: Disable and stop system services ansible.builtin.systemd: name: "{{ item }}" enabled: false state: stopped scope: system loop: "{{ (services_system_disabled | default([])) + (services_system_disabled_group | default([])) }}" become: true - name: Enable and start user services ansible.builtin.systemd: name: "{{ item }}" enabled: true state: started scope: user loop: "{{ (services_user_enabled | default([])) + (services_user_enabled_group | default([])) + (apps_user_services | default([])) }}" - name: Disable and stop user services ansible.builtin.systemd: name: "{{ item }}" enabled: false state: stopped scope: user loop: "{{ (services_user_disabled | default([])) + (services_user_disabled_group | default([])) }}"