Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible剧本-包括角色和授权,以便共同工作_Ansible - Fatal编程技术网

Ansible剧本-包括角色和授权,以便共同工作

Ansible剧本-包括角色和授权,以便共同工作,ansible,Ansible,在Ansible 2.9中是否包含角色和委托,以便在我试图通过运行角色并将其委托给host 2来执行以下剧本时一起工作(代码如下) Ansible剧本 - name: top level playbook hosts: ["host1", "host2"] connection: local gather_facts: true ignore_errors: no tasks: - set_fact: playb

在Ansible 2.9中是否包含角色和委托,以便在我试图通过运行角色并将其委托给host 2来执行以下剧本时一起工作(代码如下)

Ansible剧本

- name: top level playbook
  hosts: ["host1", "host2"]
  connection: local
  gather_facts: true
  ignore_errors: no
  tasks:
    - set_fact:
        playbook_dir: /Users/OneDrive 
        validation_overall: 'pass'
        result: {}
        all_hosts: "{{ ansible_play_hosts }}"

    - name: import hostvars
      include_vars:
        dir: '{{ playbook_dir }}/test_env_vars/hostvars'
        files_matching: '{{ inventory_hostname }}.*'

    - name: initialise required input variables
      set_fact:
        input_interfaces: "{{ e_input_interfaces }}"  

    # delegate role to host2
    - name: "call validate_rtr_state role with host '{{ansible_hostname}}' for hosts in '{{ansible_play_hosts}}'"
      include_role:
        name: validate_rtr_state
        tasks_from: cisco-ios-xr_ping.yml
      apply:
        delegate_to: "{{all_hosts[1]}}"
      loop: "{{ansible_play_hosts}}"
      loop_control:
        loop_var: all_hosts[1]
我收到的错误消息如下:

ERROR! conflicting action statements: apply, include_role

The error appears to be in '/home/bbann/Ansible-Networking/ha_failover_top_level_reload.yml': line 46, column 7, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

    # delegate role to tusredrweca908
    - name: "call validate_rtr_state role with host '{{ansible_hostname}}' for hosts in '{{ansible_play_hosts}}'"
      ^ here
我们可能错了,但这一个看起来可能是一个问题 缺少引号。当模板表达式使用括号时,请始终引用括号 开始一个值。例如:

with_items:
  - {{ foo }}
应写为:

with_items:
  - "{{ foo }}"
你知道为什么会失败吗

错误!冲突的操作语句:应用,包含角色

apply
的缩进错误。它是任务的一个参数
include\u角色

#将角色委派给主机2
-名称:“{ansible\u play\u hosts}”中的主机用主机“{{ansible\u hostname}”调用validate\u rtr\u state角色”
包括以下角色:
名称:验证\u rtr\u状态
任务来自:cisco-ios-xr_ping.yml
适用于:
委托给:“{{all_hosts[1]}”
循环:{{ansible\u play\u hosts}}”
回路控制:
循环\u变量:所有\u主机[1]
未经测试

还有其他怪人:

  • loop\u var
    是第二台主机的名称吗?i、 e.角色是否真的将第二个主机的名称作为变量实现

  • 游戏中有两台主机,都使用
    连接:local

  • 为什么
    将委托应用于:xy
    而不是
    将委托应用于:xy
    任务


  • 感谢Vladimir,我试图实现的是在剧中重新启动主机1,然后包括角色验证状态和委托给主机2,但即使我使用委托给:主机2而不是应用委托给,也会失败。这太复杂了。将每个问题分成一个问题,然后完成!请尽量简化,抽象问题,尽可能简单!(例如,设置
    输入接口的事实与问题无关。)帮助我们帮助您!谢谢Vladimir,我已经尽可能简单地将剧本剥离并粘贴在下面。基本上,我正在尝试运行一个任务来包含一个名为validate\u rtr\u state的角色,并从该角色运行ping任务,并将该任务委托给只在host2上运行的角色。下面是简化的重头戏--名称:顶级playbook主机:[“主机1”,“主机2”]连接:本地聚集\u事实:错误忽略\u错误:无任务:-设置\u事实:所有\u主机:“{{ansible\u play\u hosts}”-name:call validate_rtr_state role并委托给主机2 include_role:name:validate_rtr_state tasks_from:cisco-ios-xr_ping.yml delegate_to:“{{all_hosts[1]}”