--- # Задачи для RHEL/CentOS/AlmaLinux/Rocky # Автор: Сергей Антропов # Сайт: https://devops.org.ru - name: Установить необходимые пакеты для работы с репозиториями (yum) ansible.builtin.package: name: yum-utils state: present when: ansible_pkg_mgr == 'yum' - name: Установить необходимые пакеты для работы с репозиториями (dnf) ansible.builtin.package: name: dnf-plugins-core state: present when: ansible_pkg_mgr == 'dnf' - name: Установить EPEL repository ansible.builtin.dnf: name: epel-release state: present when: ansible_distribution in ['RedHat', 'Rocky', 'CentOS', 'AlmaLinux'] - name: Определить корректный ключ для RHEL/CentOS 8 ansible.builtin.set_fact: rhel_key: "{{ rhel_repos['rhel8'] }}" when: ansible_distribution_major_version == "8" and os_version_id in ["redhat8", "rhel8", "centos8", "almalinux8"] - name: Определить корректный ключ для RHEL/CentOS 9 ansible.builtin.set_fact: rhel_key: "{{ rhel_repos['rhel9'] }}" when: ansible_distribution_major_version == "9" and os_version_id in ["redhat9", "rhel9", "centos9", "rocky9"] - name: Добавить репозиторий Docker ansible.builtin.yum_repository: name: docker-ce description: Docker CE Repository baseurl: "{{ rhel_key['docker_baseurl'] }}" gpgcheck: yes gpgkey: "{{ rhel_key['docker_gpgkey'] }}" enabled: yes when: rhel_key is defined notify: "update dnf cache" - name: Добавить репозиторий PostgreSQL ansible.builtin.yum_repository: name: postgresql description: PostgreSQL Official Repository baseurl: "{{ rhel_key['postgresql_baseurl'] }}" gpgcheck: yes gpgkey: "{{ rhel_key['postgresql_gpgkey'] }}" enabled: yes when: rhel_key is defined notify: "update dnf cache" - name: Добавить репозиторий Elasticsearch ansible.builtin.yum_repository: name: elasticsearch description: Elasticsearch Repository baseurl: "{{ rhel_key['elasticsearch_baseurl'] }}" gpgcheck: yes gpgkey: "{{ rhel_key['elasticsearch_gpgkey'] }}" enabled: yes when: rhel_key is defined notify: "update dnf cache" - name: Получить скрипт установки Patroni repository для RHEL/CentOS ansible.builtin.get_url: url: "https://packagecloud.io/install/repositories/patroni/patroni/script.rpm.sh" dest: /tmp/patroni-repo-install.sh mode: '0755' - name: Запустить скрипт установки Patroni repository ansible.builtin.command: bash /tmp/patroni-repo-install.sh args: creates: /etc/yum.repos.d/patroni_patroni.repo notify: "update dnf cache" - name: Очистить временный файл установки Patroni ansible.builtin.file: path: /tmp/patroni-repo-install.sh state: absent - name: Обновить кэш пакетов после добавления всех репозиториев ansible.builtin.command: "{{ ansible_pkg_mgr }} makecache" register: cache_result changed_when: "'Complete!' in cache_result.stdout or 'Metadata cache created.' in cache_result.stdout" - name: Выполнить обновление пакетов через dnf ansible.builtin.command: dnf upgrade -y register: dnf_upgrade changed_when: "'Complete!' in dnf_upgrade.stdout or 'Nothing to do.' not in dnf_upgrade.stdout" when: ansible_pkg_mgr == "dnf" - name: Выполнить обновление пакетов через yum ansible.builtin.command: yum upgrade -y register: yum_upgrade changed_when: "'Complete!' in yum_upgrade.stdout or 'Nothing to do.' not in yum_upgrade.stdout" when: ansible_pkg_mgr == "yum"