【问题标题】:Ansible Handlers not working unless I include: them in my play?除非我包括以下内容,否则 Ansible 处理程序不起作用:它们在我的游戏中?
【发布时间】:2021-03-02 17:59:01
【问题描述】:

我全新安装了 Ansible 2.9.17,除了处理程序之外,一切都运行良好:-/ 出于某种原因,我的 ~roles/myservice/handlers/main.yml 没有加载,除非我包括:处理程序:在每个主机之后:我的 main.yml 文件中的行。
示例:

handlers:
- import_tasks: ../handlers/main.yml

我可以这样做,但我发现每个主机一次又一次地指定“相同的处理程序”:条目烦人。这不能是 ansible 这样做的最佳实践。其他人以前遇到过这个问题吗?一定有我遗漏的配置...

我的文件夹结构:

~/roles/myservice/
                 ├── handlers
                 │   └── main.yml
                 ├── tasks
                 └── main.yml

我的角色/myservice/handlers/main.yml 是:

- name: restart myservice
  service:
    name: myservice
    state: restarted
  become: yes
  listen: restart myservice

roles/myservice/tasks/main.yml 是:

- name: Installing myservice
  become: yes
  become_user: root
  yum:
    name: myservice.rpm
  notify:
    - restart myservice

但是当我运行游戏时:

$  ansible-playbook -i hosts roles/myservice/tasks/main.yml --limit myservice

播放 [myservice] ******************************************* ****************************************************** ****************************************************** ************************

任务[收集事实] ****************************************** ****************************************************** ****************************************************** *********************************************** 好的:[我的服务]

任务 [安装我的服务。] ***************************************** ****************************************************** ****************************************************** ***************************************** 好的:[我的服务]

任务[收集事实] ****************************************** ****************************************************** ****************************************************** *********************************************** 好的:[我的服务]

任务 [安装我的服务] ****************************************** ****************************************************** ************************************ 错误!在主处理程序列表和侦听处理程序列表中都找不到请求的处理程序“restart myservice”

【问题讨论】:

    标签: ansible ansible-2.x ansible-inventory ansible-facts ansible-template


    【解决方案1】:

    您正在将main.yml 文件作为剧本执行,您需要创建一个执行该角色的剧本

    - name: Playbook
      gather_facts: false
      hosts: all
    
      roles:
        - myservice
    

    【讨论】:

    • 那行得通,我未经编辑的剧本中有多个主机,所以不想这样做,但最好在我深入研究我的代码之前将其转移到一个角色。谢谢加里!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 2018-08-17
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多