【问题标题】:ansible error conflicting hosts, tasks when I include playbooks in role当我在角色中包含剧本时,ansible错误冲突主机,任务
【发布时间】:2020-11-05 10:44:29
【问题描述】:

我的剧本目录结构。

/ansible_repo/
└── playbooks/
    ├──playbooks1.yml
    ├──playbooks2.yml
├── somerole.yml  --> main playbook with roles
└── roles/
    └── somerole
        ├── default
        │   └── main.yml
        ├── handler
        │   └── main.yml
        ├── tasks
        │   └── main.yml
        └── vars
            └── main.yml

playbooks1.yml:

---
- hosts: all
  tasks:
    - pause:
        minutes: 3
    - name: ping host
      win_ping:

somerole.yml:

---
- hosts: ci_host
  roles:
    - somerole

somerole\tasks\main.yml :

---
- include: playbooks/playbooks1.yml

当我在某个主机上运行角色时:

ansible-playbook role-test.yml -vv --limit somehost

我收到此错误:

fatal: [somehost]: FAILED! =>
  reason: |-
    conflicting action statements: hosts, tasks

如果我改变它通过的类似:

- pause:
  minutes: 3
- name: ping host
  win_ping:

我尝试了解如何在 role-tasks-main 和 playbook.yml 中设置主机和任务 并将剧本包含在角色任务中。

如果我遇到冲突,我可以配置层次结构主机吗?

【问题讨论】:

  • 你为什么在 yml 而不是在 host.ini 中使用主机配置?您的 ping 检查也有效吗?
  • 我也有托管库存,我在这里向我的仓库展示示例
  • 那么 ansible all -m ping 是怎么说的?
  • playbook 在库存中的所有主机上运行并逐个运行 win_ping 模型(它的示例 playbook,可以是 linux 模型、shell 模型或其他),我想要运行角色,其中有很多任务任务目录,并在主要所有任务中运行,并从剧本目录中再添加一本剧本
  • 很难理解你到底想要什么。通常您会创建一个剧本并对其进行测试,直到与您的一台一次性主机一起使用。这样就很难隔离问题。抱歉,我帮不上忙

标签: ansible


【解决方案1】:

该错误表明您在角色中包含剧本,并且对于角色 hoststasks 是不允许的。

由于somerole.yml 是您的主要剧本,您可以根据需要调用其他剧本和角色。

例子:

- name: run playbook playbook1
  import_playbook: playbooks/playbooks1.yml

- hosts: ci_host
  roles:
    - somerole

- name: run playbook playbook2
  import_playbook: playbooks/playbooks2.yml

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 2015-07-31
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多