--- - block: - name: gather package facts package_facts: manager: auto - name: check if atomic stat: path: /run/ostree-booted register: ostree - name: check for cloud.cfg stat: path: /etc/cloud/cloud.cfg register: cloudcfg - name: set fact (atomic state) set_fact: is_atomic: "{{ ostree.stat.exists }}" - name: set fact (cloud.cfg state) set_fact: is_cloudy: "{{ cloudcfg.stat.exists }}" - name: include dnf tasks include_tasks: dnf.yml when: (ansible_distribution in ["Fedora"] and not is_atomic) or (ansible_distribution in ["RedHat", "Red Hat Enterprise Linux", "CentOS"] and ansible_distribution_major_version is version('8', '>=')) - name: install prereqs package: name: "{{ DEFAULT_PKGS | difference(ansible_facts.packages) }}" state: installed when: (ansible_distribution in ["CentOS", "Red Hat Enterprise Linux", "RedHat", "Fedora"] and not is_atomic) - name: disable fastestmirror (fedora - non-atomic) lineinfile: path: /etc/dnf/dnf.conf regexp: "^fastestmirror=" line: "fastestmirror=False" when: ansible_distribution in ["Fedora"] and not is_atomic - name: remove update_etc_hosts from cloud.cfg lineinfile: line: ' - update_etc_hosts' path: /etc/cloud/cloud.cfg state: absent when: is_cloudy|bool - name: add all hosts to /etc/hosts lineinfile: path: /etc/hosts state: present line: "{{ hostvars[item].ip | default('127.0.0.1') }} {{ hostvars[item].ansible_hostname }}" regexp: "^{{ hostvars[item].ip | default('127.0.0.1') }}.*{{ hostvars[item].ansible_hostname }}$" with_items: "{{ groups.all }}" - name: set hostname to match inventory hostname: name: "{{ inventory_hostname }}" register: hostname_change - name: remove requiretty lineinfile: regexp: '^\w+\s+requiretty' path: /etc/sudoers state: absent - name: import epel GPG key rpm_key: state: present key: https://getfedora.org/static/fedora.gpg when: ansible_distribution in ['Red Hat Enterprise Linux', 'RedHat'] and not is_atomic - name: install epel (dist pkg) package: name: epel-release state: latest when: ansible_distribution in ['CentOS'] and not is_atomic - name: install epel (upstream pkg) package: name: "https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ansible_distribution_major_version}}.noarch.rpm" state: present when: ansible_distribution in ['Red Hat Enterprise Linux', 'RedHat'] and not is_atomic - name: remove unwanted packages package: name: "{{ item }}" state: absent when: "(item in ansible_facts.packages)" with_items: "{{ UNWANTED_PKGS }}" # see roles/bootstrap/defaults/main.yml - name: disable NetworkManager phoning home on Fedora file: path: /etc/NetworkManager/conf.d/20-connectivity-fedora.conf access_time: preserve # make this properly idempotent, register no change when file exists modification_time: preserve # ^ state: touch mode: 0644 when: (ansible_distribution in ['Fedora'] and not is_atomic) and ('NetworkManager' in ansible_facts.packages) tags: - bootstrap