137 lines
5.1 KiB
YAML
137 lines
5.1 KiB
YAML
---
|
|
- 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([])) }}" |