diff --git a/roles/packages/tasks/centos-dracut.yml b/roles/packages/tasks/centos-dracut.yml new file mode 100644 index 0000000..d78ff53 --- /dev/null +++ b/roles/packages/tasks/centos-dracut.yml @@ -0,0 +1,65 @@ +--- +# The dracut patch is an issue uniquely bound to the fact that I'm using several +# old-as-shit hardware RAID cards. Specifically the Dell PERC H200 and the Dell PERC +# H310, both of which had their hardware drivers dropped in Cent8 (despite the drivers +# being included in the upstream fedora kernel, but whatever). OS installation and the +# process in this set of tasks is based off of this blog post: +# https://www.centos.org/forums/viewtopic.php?t=71862#p302447 +# +# TODO: Host the RPMs locally. The internet may never forget, but it's also never there +# when you need it + +- name: Determine dracut version + shell: + cmd: rpm -qa | grep dracut-[0-9] + warn: false + register: dracut_version_check + +- name: Install patched version of dracut + when: dracut_version_check.stdout != "dracut-049-13.git20190614.p1.el8_0.elrepo.x86_64" + block: + - name: Create temporary download directory + file: + path: /tmp/dracut-patch + state: directory + + - name: Download patched dracut tool RPMs + get_url: + url: "{{ item.source }}" + dest: /tmp/dracut-patch/{{ item.dest }} + loop: + - source: http://elrepo.org/people/akemi/testing/el8/dracut/dracut-049-13.git20190614.p1.el8_0.elrepo.x86_64.rpm + dest: dracut.rpm + - source: http://elrepo.org/people/akemi/testing/el8/dracut/dracut-caps-049-13.git20190614.p1.el8_0.elrepo.x86_64.rpm + dest: dracut-caps.rpm + - source: http://elrepo.org/people/akemi/testing/el8/dracut/dracut-config-generic-049-13.git20190614.p1.el8_0.elrepo.x86_64.rpm + dest: dracut-config-generic.rpm + - source: http://elrepo.org/people/akemi/testing/el8/dracut/dracut-config-rescue-049-13.git20190614.p1.el8_0.elrepo.x86_64.rpm + dest: dracut-config-rescue.rpm + - source: http://elrepo.org/people/akemi/testing/el8/dracut/dracut-live-049-13.git20190614.p1.el8_0.elrepo.x86_64.rpm + dest: dracut-live.rpm + - source: http://elrepo.org/people/akemi/testing/el8/dracut/dracut-network-049-13.git20190614.p1.el8_0.elrepo.x86_64.rpm + dest: dracut-network.rpm + - source: http://elrepo.org/people/akemi/testing/el8/dracut/dracut-squash-049-13.git20190614.p1.el8_0.elrepo.x86_64.rpm + dest: dracut-squash.rpm + - source: http://elrepo.org/people/akemi/testing/el8/dracut/dracut-tools-049-13.git20190614.p1.el8_0.elrepo.x86_64.rpm + dest: dracut-tools.rpm + + - name: Install patched dracut toolchain + become: true + dnf: + state: latest + name: + - /tmp/dracut-patch/dracut.rpm + - /tmp/dracut-patch/dracut-caps.rpm + - /tmp/dracut-patch/dracut-config-generic.rpm + - /tmp/dracut-patch/dracut-config-rescue.rpm + - /tmp/dracut-patch/dracut-live.rpm + - /tmp/dracut-patch/dracut-network.rpm + - /tmp/dracut-patch/dracut-squash.rpm + - /tmp/dracut-patch/dracut-tools.rpm + + - name: Remove temporary download directory + file: + path: /tmp/dracut-patch + state: absent diff --git a/roles/packages/tasks/centos-repos.yml b/roles/packages/tasks/centos-repos.yml new file mode 100644 index 0000000..5f95996 --- /dev/null +++ b/roles/packages/tasks/centos-repos.yml @@ -0,0 +1,13 @@ +--- +- name: Enable Extra Packages for Enterprise Linux + become: true + dnf: + state: latest + name: https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm + +- name: Enable the power tools repository + become: true + lineinfile: + path: /etc/yum.repos.d/CentOS-PowerTools.repo + regexp: "enabled=(0|1)" + line: "enabled=1" diff --git a/roles/packages/tasks/clean.yml b/roles/packages/tasks/clean.yml new file mode 100644 index 0000000..934f71a --- /dev/null +++ b/roles/packages/tasks/clean.yml @@ -0,0 +1,7 @@ +--- +- name: Clean DNF cache + become: true + when: ansible_distribution == "Fedora" or ansible_distribution == "CentOS" + shell: + cmd: dnf clean all + warn: false diff --git a/roles/packages/tasks/main.yml b/roles/packages/tasks/main.yml new file mode 100644 index 0000000..72478c0 --- /dev/null +++ b/roles/packages/tasks/main.yml @@ -0,0 +1,23 @@ +--- +- import_tasks: centos-repos.yml + when: ansible_distribution == "CentOS" + +- import_tasks: clean.yml + when: clean | default(false) == true + +- import_tasks: update.yml + when: update | default(false) == true + +- name: Install packages on Fedora + become: true + when: ansible_distribution == "Fedora" + dnf: + state: latest + name: "{{ packages_global + packages_fedora }}" + +- name: Install packages on CentOS + become: true + when: ansible_distribution == "CentOS" + dnf: + state: latest + name: "{{ packages_global + packages_centos }}" diff --git a/roles/packages/tasks/update.yml b/roles/packages/tasks/update.yml new file mode 100644 index 0000000..7315789 --- /dev/null +++ b/roles/packages/tasks/update.yml @@ -0,0 +1,16 @@ +--- +- import_tasks: centos-dracut.yml + when: ansible_distribution == "CentOS" + +- name: Upgrade Fedora and CentOS packages + when: ansible_distribution == "CentOS" or ansible_distribution == "Fedora" + become: true + dnf: + state: latest + name: "*" + exclude: "{{ ','.join(exclude | default(['kernel*'])) }}" + +# - name: Upgrade APT packages +# when: ansible_distribution == "Debian" or ansible_distribution == "Ubuntu" +# become: true +# apt: diff --git a/roles/packages/vars/main.yml b/roles/packages/vars/main.yml new file mode 100644 index 0000000..9750b4f --- /dev/null +++ b/roles/packages/vars/main.yml @@ -0,0 +1,35 @@ +--- +packages_global: + - automake + - cmake + - curl + - gcc + - gcc-c++ + - git + - make + - nano + - openssl-devel + - systemd-devel + - unzip + - vim + - vim-minimal + +packages_fedora: + - libselinux-python + - git-lfs + - readline-devel + - policycoreutils-python + - python-devel + - python-virtualenv + - python3-devel + +packages_centos: + - bind-utils + - bash-completion + - nc + - nfs-utils + - python3 + - python3-pip + - python3-setuptools + - python3-virtualenv + - wget