Ansible: невозможно запустить службу httpd после установки пакета - PullRequest
1 голос
/ 14 апреля 2020

Я тестирую playbooks

Следующая playbook может установить apache и запустить службу:

- hosts: apacheweb
  user: ansibleuser
  become: yes
  gather_facts: no
  tasks:
  - name: Install the apache web server
    yum: pkg=httpd state=latest
    notify: Start HTTPD
  handlers:
  - name: Start HTTPD
    systemd: name=httpd state=started enabled=yes

Но не следующую, так как она устанавливает пакет httpd но не запускает службу и не включает ее.

- hosts: apacheweb
  user: ansibleuser
  become: yes
  gather_facts: no
  tasks:
  - name: Install the apache web server
    yum: pkg=httpd state=latest
    notify: Start HTTPD
  - name: verify that the web service is running
    command: systemctl status httpd
    register: result
  - debug: var=result
  handlers:
  - name: Start HTTPD
    systemd: name=httpd state=started enabled=yes

Вывод ошибки:

PLAY [apacheweb] ******************************************************************************************************************

TASK [Install the apache web server] **********************************************************************************************
changed: [host.learn.com]

TASK [verify that the web service is running] *************************************************************************************
fatal: [host.learn.com]: FAILED! => {"changed": true, "cmd": ["systemctl", "status", "httpd"], "delta": "0:00:00.032030", "end": "2020-04-14 17:59:18.295428", "msg": "non-zero return code", "rc": 3, "start": "2020-04-14 17:59:18.263398", "stderr": "", "stderr_lines": [], "stdout": "● httpd.service - The Apache HTTP Server\n   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)\n   Active: inactive (dead)\n     Docs: man:httpd(8)\n           man:apachectl(8)\n\nApr 14 14:50:31 host.learn.com systemd[1]: Starting The Apache HTTP Server...\nApr 14 14:50:31 host.learn.com systemd[1]: Started The Apache HTTP Server.\nApr 14 14:53:45 host.learn.com systemd[1]: Stopping The Apache HTTP Server...\nApr 14 14:53:46 host.learn.com systemd[1]: Stopped The Apache HTTP Server.\nApr 14 17:56:51 host.learn.com systemd[1]: Starting The Apache HTTP Server...\nApr 14 17:56:51 host.learn.com systemd[1]: Started The Apache HTTP Server.\nApr 14 17:57:32 host.learn.com systemd[1]: Stopping The Apache HTTP Server...\nApr 14 17:57:33 host.learn.com systemd[1]: Stopped The Apache HTTP Server.", "stdout_lines": ["● httpd.service - The Apache HTTP Server", "   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)", "   Active: inactive (dead)", "     Docs: man:httpd(8)", "           man:apachectl(8)", "", "Apr 14 14:50:31 host.learn.com systemd[1]: Starting The Apache HTTP Server...", "Apr 14 14:50:31 host.learn.com systemd[1]: Started The Apache HTTP Server.", "Apr 14 14:53:45 host.learn.com systemd[1]: Stopping The Apache HTTP Server...", "Apr 14 14:53:46 host.learn.com systemd[1]: Stopped The Apache HTTP Server.", "Apr 14 17:56:51 host.learn.com systemd[1]: Starting The Apache HTTP Server...", "Apr 14 17:56:51 host.learn.com systemd[1]: Started The Apache HTTP Server.", "Apr 14 17:57:32 host.learn.com systemd[1]: Stopping The Apache HTTP Server...", "Apr 14 17:57:33 host.learn.com systemd[1]: Stopped The Apache HTTP Server."]}

RUNNING HANDLER [Start HTTPD] *****************************************************************************************************

PLAY RECAP ************************************************************************************************************************
host.learn.com : ok=1    changed=1    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0

Что может быть не так во второй созданной мной пьесе ?.

1 Ответ

1 голос
/ 14 апреля 2020

Обработчик Start HTTPD для запуска службы не запущен, поскольку задача verify that the web service is running не выполнена.

На каждом хосте обработчики запускаются только один раз после завершения всех задач в игре.

В вашей книге игр есть три задачи. Даже если обработчик был уведомлен первой задачей Install the apache web server, ansible запускает обработчик только после завершения всех трех задач в этой игре.

При сбое задачи на хосте ранее уведомленные обработчики не будут запускаться на этом хосте.

А сбой второй задачи остановил обработчик выполняется на этом хосте, поэтому служба не была запущена.

Если вы хотите запустить обработчик sh независимо от сбоя задачи, вы можете установить в своей игре force_handlers: True.

Чтение подробнее: Обработчики , Неисправности обработчика

...