|
@@ -0,0 +1,182 @@
|
|
|
+---
|
|
|
+- name: Enable crb on CentOS 9
|
|
|
+ shell:
|
|
|
+ cmd: dnf config-manager --set-enabled crb
|
|
|
+ warn: false # I know shell module is bad...
|
|
|
+ changed_when: false
|
|
|
+ when:
|
|
|
+ - ansible_distribution == "CentOS"
|
|
|
+ - ansible_distribution_major_version == "9"
|
|
|
+
|
|
|
+- name: Enable EPEL Repo on CentOS 7/8
|
|
|
+ package:
|
|
|
+ name: epel-release
|
|
|
+ state: present
|
|
|
+ when:
|
|
|
+ - ansible_distribution == "CentOS"
|
|
|
+ - ansible_distribution_major_version|int > 9
|
|
|
+
|
|
|
+- name: Check for EPEL Repo on CentOS 9
|
|
|
+ shell:
|
|
|
+ cmd: rpm -q epel-release
|
|
|
+ warn: false
|
|
|
+ changed_when: false
|
|
|
+ failed_when: false
|
|
|
+ register: epel_check
|
|
|
+ when:
|
|
|
+ - ansible_distribution == "CentOS"
|
|
|
+ - ansible_distribution_major_version == "9"
|
|
|
+
|
|
|
+- name: Enable EPEL Repo on CentOS 9
|
|
|
+ dnf:
|
|
|
+ name:
|
|
|
+ - https://dl.fedoraproject.org/pub/epel/9/Everything/x86_64/Packages/e/epel-release-9-2.el9.noarch.rpm
|
|
|
+ - https://dl.fedoraproject.org/pub/epel/9/Everything/x86_64/Packages/e/epel-next-release-9-2.el9.noarch.rpm
|
|
|
+ state: present
|
|
|
+ disable_gpg_check: yes
|
|
|
+ when:
|
|
|
+ - ansible_distribution == "CentOS"
|
|
|
+ - ansible_distribution_major_version == "9"
|
|
|
+ - epel_check.rc|int == 1
|
|
|
+
|
|
|
+- name: Enable PowerTools on CentOS 8
|
|
|
+ lineinfile:
|
|
|
+ path: /etc/yum.repos.d/CentOS-{% if ansible_lsb.id == 'CentOSStream' %}Stream-{% endif %}PowerTools.repo
|
|
|
+ regexp: '^enabled='
|
|
|
+ line: 'enabled=1'
|
|
|
+ when:
|
|
|
+ - ansible_distribution == 'CentOS'
|
|
|
+ - ansible_distribution_major_version == "8"
|
|
|
+
|
|
|
+- name: Download RPMFusion .rpms
|
|
|
+ get_url:
|
|
|
+ url: "{{ item }}"
|
|
|
+ dest: /home/ansible/{{ item | basename }}
|
|
|
+ owner: ansible
|
|
|
+ group: ansible
|
|
|
+ mode: '0644'
|
|
|
+ loop:
|
|
|
+ - https://download1.rpmfusion.org/free/{{ 'el' if ansible_distribution == 'CentOS' else 'fedora' }}/rpmfusion-free-release-{{ ansible_distribution_major_version }}.noarch.rpm
|
|
|
+ - https://download1.rpmfusion.org/nonfree/{{ 'el' if ansible_distribution == 'CentOS' else 'fedora' }}/rpmfusion-nonfree-release-{{ ansible_distribution_major_version }}.noarch.rpm
|
|
|
+ loop_control:
|
|
|
+ label: "{{ item | basename }}"
|
|
|
+ register: rpmfusion_repos
|
|
|
+ when:
|
|
|
+ - ansible_distribution == 'CentOS' or ansible_distribution == 'Fedora'
|
|
|
+ - ansible_distribution_major_version != "9" # no RPMFusion yet for CentOS Stream 9
|
|
|
+ - '"rpmfusion" not in ansible_facts.packages|list'
|
|
|
+
|
|
|
+
|
|
|
+- name: Install RPMFusion .rpms
|
|
|
+ yum:
|
|
|
+ name:
|
|
|
+ - /home/ansible/rpmfusion-free-release-{{ ansible_distribution_major_version }}.noarch.rpm
|
|
|
+ - /home/ansible/rpmfusion-nonfree-release-{{ ansible_distribution_major_version }}.noarch.rpm
|
|
|
+ disable_gpg_check: yes
|
|
|
+ state: present
|
|
|
+ when:
|
|
|
+ - rpmfusion_repos is defined
|
|
|
+ - rpmfusion_repos.changed
|
|
|
+ - ansible_distribution == 'CentOS' or ansible_distribution == 'Fedora'
|
|
|
+ - ansible_distribution_major_version != "9" # no RPMFusion yet for CentOS Stream 9
|
|
|
+
|
|
|
+
|
|
|
+- name: Combine Packages (RPM)
|
|
|
+ set_fact:
|
|
|
+ all_pkgs: "{{ all_pkgs | default([]) | union(item) }}"
|
|
|
+ loop:
|
|
|
+ - "{{ common_pkgs }}"
|
|
|
+ - "{{ common_pkgs_rpm }}"
|
|
|
+ - "{{ host_pkgs | default([]) }}"
|
|
|
+ loop_control:
|
|
|
+ label: "{{ all_pkgs | default([]) | length }} Packages"
|
|
|
+ when:
|
|
|
+ - ansible_distribution == 'CentOS' or ansible_distribution == 'Fedora'
|
|
|
+
|
|
|
+- name: Combine Packages (DEB)
|
|
|
+ set_fact:
|
|
|
+ all_pkgs: "{{ all_pkgs | default([]) | union(item) }}"
|
|
|
+ loop:
|
|
|
+ - "{{ common_pkgs }}"
|
|
|
+ - "{{ common_pkgs_deb }}"
|
|
|
+ - "{{ host_pkgs | default([]) }}"
|
|
|
+ when:
|
|
|
+ - ansible_distribution == 'Ubuntu' or ansible_distribution == 'Debian'
|
|
|
+
|
|
|
+- name: Install packages
|
|
|
+ package:
|
|
|
+ name: "{{ all_pkgs }}"
|
|
|
+ state: present
|
|
|
+ when:
|
|
|
+ - all_pkgs is defined
|
|
|
+
|
|
|
+- name: Install ansible SSH keys
|
|
|
+ authorized_key:
|
|
|
+ user: ansible
|
|
|
+ state: present
|
|
|
+ exclusive: yes
|
|
|
+ key: "{{ ssh_ansible_keys | join('\n') }}"
|
|
|
+ when:
|
|
|
+ - ansible_os_family != 'LibreELEC'
|
|
|
+ tags: ssh
|
|
|
+
|
|
|
+
|
|
|
+- name: Install root SSH keys
|
|
|
+ authorized_key:
|
|
|
+ user: root
|
|
|
+ state: present
|
|
|
+ exclusive: yes
|
|
|
+ key: "{{ ssh_root_keys | union(host_ssh_root_keys) | join('\n') }}"
|
|
|
+ tags: ssh
|
|
|
+
|
|
|
+
|
|
|
+- name: Install pi SSH keys
|
|
|
+ authorized_key:
|
|
|
+ user: pi
|
|
|
+ state: present
|
|
|
+ exclusive: yes
|
|
|
+ key: "{{ ssh_root_keys | join('\n') }}"
|
|
|
+ when:
|
|
|
+ - '"libreelec" in group_names'
|
|
|
+ tags: ssh
|
|
|
+
|
|
|
+
|
|
|
+- name: Add Bash aliases for root user
|
|
|
+ lineinfile:
|
|
|
+ dest: /root/.bashrc
|
|
|
+ create: yes
|
|
|
+ mode: '0644'
|
|
|
+ line: "alias {{ item.alias }}='{{ item.command }}'"
|
|
|
+ regexp: "^alias {{ item.alias }}="
|
|
|
+ with_items:
|
|
|
+ - "{{ common_bash_aliases | default('') }}"
|
|
|
+ - "{{ host_bash_aliases | default('') }}"
|
|
|
+ when:
|
|
|
+ - (item.user is not defined or item.user == 'root')
|
|
|
+ - item.alias is defined
|
|
|
+ - item.command is defined
|
|
|
+ - ansible_os_family != 'LibreELEC'
|
|
|
+ tags: aliases
|
|
|
+
|
|
|
+
|
|
|
+- name: Add bash aliases for non-root users
|
|
|
+ lineinfile:
|
|
|
+ dest: /home/{{ item.user }}/.bashrc
|
|
|
+ create: no
|
|
|
+ mode: '0644'
|
|
|
+ line: "alias {{ item.alias }}='{{ item.command }}'"
|
|
|
+ regexp: "^alias {{ item.alias }}="
|
|
|
+ register: create_alias
|
|
|
+ failed_when:
|
|
|
+ - create_alias.rc is defined
|
|
|
+ - create_alias.rc != 257
|
|
|
+ with_items:
|
|
|
+ - "{{ common_bash_aliases | default('') }}"
|
|
|
+ - "{{ host_bash_aliases | default('') }}"
|
|
|
+ when:
|
|
|
+ - item.user is defined
|
|
|
+ - item.user != 'root'
|
|
|
+ - item.alias is defined
|
|
|
+ - item.command is defined
|
|
|
+ - ansible_os_family != 'LibreELEC'
|
|
|
+ tags: aliases
|