Назад | Перейти на главную страницу

Пропускается задача Ansible Playbook

У меня есть 3 экземпляра aws ec2, 2 - ubuntu и 1 - amazon linux 2. Я настроил настройку главного подчиненного устройства и работает нормально.

Главный экземпляр:

NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.3 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

Подчиненный 1 экземпляр:

NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.3 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

Подчиненный 2 экземпляр:

NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"

Я пытаюсь установить пакет HTTPD на оба ведомых устройства, используя приведенную ниже книгу.

---
- hosts: test
  become: true
  tasks:
     - name: Install the latest version of Apache on CentOS
       yum: name=httpd state=present
       when: ansible_os_family == "Amazon Linux"

     - name: install the latest version of Apache on Debian
       apt: name=httpd state=present
       when: ansible_os_family == "Ubuntu"

Задачи пропускаются. Результат ниже

PLAY [test] *********************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************
ok: [172.31.4.19]
ok: [172.31.38.171]

TASK [Install the latest version of Apache on CentOS] ***************************************************************
skipping: [172.31.38.171]
skipping: [172.31.4.19]

TASK [install the latest version of Apache on Debian] ***************************************************************
skipping: [172.31.38.171]
skipping: [172.31.4.19]

PLAY RECAP **********************************************************************************************************
172.31.38.171              : ok=1    changed=0    unreachable=0    failed=0
172.31.4.19                : ok=1    changed=0    unreachable=0    failed=0

Я не знаю, как еще написать эту пьесу. Я попытался использовать общий модуль «Пакет» вместо «YUM» и «APT», но это тоже не удалось, поэтому решил разделить его. Я понимаю, что могу разбить код на отдельные файлы, а затем сохранить их в каталоге Roles / Tasks, а затем использовать модуль «Включить». Но я хотел узнать, можно ли с помощью описанного выше метода установить пакет на несколько семейств ОС в одной книге. Спасибо!

Скорее всего, задачи пропускаются, потому что значение ansible_os_family ни то, ни другое Ubuntu ни Amazon Linux

Добавьте следующую задачу:

- name: show family
  debug:
    var: ansible_os_family

Это распечатает фактическое значение экземпляров, которые вам нужно использовать в своей книге.

Например, на моих машинах с Ubuntu значение ansible_os_family является Debian. На моих машинах с CentOS это RedHat.

Для более подробной информации о дистрибутиве Linux вы можете использовать ansible_facts.distribution, который установлен на Ubuntu на моих машинах с Ubuntu и CentOS на моих машинах CentOS.