Запуск задач в Ansible под конкретную версию операционки

Перевод: Run Ansible Tasks for Specific OS Release

RedHat Ansible RedHat Ansible

Я уже рассказывал как-то, что в Ansible довольно легко указать, что конкретная задача должна выполняться только в нужном нам дистрибутиве – Debian/Ubuntu или RedHat/Centos). Но недавно мне довелось решить вопрос поинтереснее: как запускать задачи в рамках дистрибутива, но для разных релизов – RHEL 7, но не RHEL 8, например.

Как запускать задачи Ansible только для RedHat или Debian

Для начала, вспомним как запускать задачи для разных дистрибутивов:

- name: Disable IPv6
 template:
 src: templates/disable-ipv6.conf.j2
 dest: /etc/sysctl.d/disable-ipv6.conf
 mode: 0660
 backup: yes
 notify:
 disable ipv6
 tags:
 fix
 sysctl
 noipv6
 when: ansible_os_family == 'RedHat'

 name: Debian | blacklist ipv6 in modprobe
 lineinfile: "dest=/etc/modprobe.d/blacklist.conf line='blacklist ipv6' create=yes"
 tags:
 fix
 sysctl
 noipv6
 when: ansible_os_family == 'Debian' 

В этом примере, первая задача (Disable IPv6) только сработает в системах семейства RedHat (CentOS, Fedora).

А вторая задача из примера будет запускаться только на системах Debian/Ubuntu.

Как запускать задачу в Ansible для конкретного релиза RedHat

А вот с какой задачей я столкнулся: IPv6 можно было выключить в RHEL 6 и RHEL 7, но теперь в RHEL 8/CentOS 8 модуль IPv6 является встроенным – и его нельзя отключить. Стало быть, и пытаться не стоит.

Вот как я изменил задачу Ansible из предыдущего примера, чтобы она выполнялась только на релизах RedHat/CentOS старше RHEL 8/CentOS 8:

 - name: Disable IPv6
 template:
 src: templates/disable-ipv6.conf.j2
 dest: /etc/sysctl.d/disable-ipv6.conf
 mode: 0660
 backup: yes
 notify:
 disable ipv6
 tags:
 fix
 sysctl
 noipv6
 when: ansible_os_family == 'RedHat' and ansible_distribution_major_version|int <= 7

Вот и всё на сегодня!

Ссылки




Давайте учиться вместе!

Заходите на страницу Facebook или присоединяйтесь к чату в Telegram:
Я использую браузер Brave
Попробуйте сами: Brave Browser
IT Консалтинг
У меня есть консалтинговая компания: Tech Stack Solutions. Я помогаю планировать и создавать облачные решения на базе AWS и помогаю с развёртыванием и поддержкой сервисов на Unix/Linux. Свяжитесь со мной тут.

Recent Tweets