如何在Ansible块内执行角色
我写了一本ansible剧本,在远程机器上进行部署如何在Ansible块内执行角色,ansible,ansible-2.x,Ansible,Ansible 2.x,我写了一本ansible剧本,在远程机器上进行部署 - name: Deployment part of the script vars: hostName: build_num: hosts: "{{hostName}}" become: true serial: 1 tasks: this does deployment 在这之后,我想执行util,它位于本地主机上,这个剧本将从那里执行 现在我已经写了一个角色,如
- name: Deployment part of the script
vars:
hostName:
build_num:
hosts: "{{hostName}}"
become: true
serial: 1
tasks: this does deployment
在这之后,我想执行util,它位于本地主机上,这个剧本将从那里执行
现在我已经写了一个角色,如果我把它们作为剧本单独执行的话,它会帮我做到这一点
- name: Roles Demo
hosts: 127.0.0.1
connection: local
vars:
var1: "sometextvalue"
var2: "sometextvalue"
var3: "someurl"
roles:
- demorole #role which I created
现在我想把这个角色整合到我的主要剧本中,上面提到过,但是我得到了更多
ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path.
虽然它与单独运行时工作正常的代码片段相同
我还想使用“Ansible blocks”执行此操作,比如当某个条件匹配时,执行某个角色,但为此,我也得到了相同的上述错误,只是为了总结我想使用这些块实现的功能,如下所示
- name: Deployment part of the script
vars:
hostName:
build_num:
hosts: "{{hostName}}"
become: true
serial: 1
tasks: this does deployment complete
- name: Task for Doing some check
hosts: 127.0.0.1
connection: local
vars:
var1: "dakdkadadakdhkahdkahkdh
var2: "jdjaldjlaj"
var3: "djasjdlajdlajdljadljaldjlaj"
block:
- name: Doing Check for some1
roles:
- role1
when: x == "somevalue1"
- block:
- name: Doing check for some2
roles:
- role2
when: x == "somevalue2"
.
.
.
assuming the vars value are same
因此,我不确定是否可以使用任务部分之外的块来实现这一点是无效的 但是,您可以从tasks部分中执行角色,这将允许您在条件选择时使用块和
例如:
- name: Task for Doing some check
hosts: 127.0.0.1
connection: local
vars:
var1: "dakdkadadakdhkahdkahkdh
var2: "jdjaldjlaj"
var3: "djasjdlajdlajdljadljaldjlaj"
tasks:
- name: Doing Check for some1
import_role:
name: role1
when: x == "somevalue1"
您需要决定是使用import\u role
还是include\u role
。请看一看以了解差异的解释