Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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 v2.2与在1.7中运行良好的_子元素一起使用时出错_Ansible - Fatal编程技术网

Ansible v2.2与在1.7中运行良好的_子元素一起使用时出错

Ansible v2.2与在1.7中运行良好的_子元素一起使用时出错,ansible,Ansible,运行ansible playbook时出现以下错误 任务[基础:Rsyslog yapilandiliyor] ****************************************致命:[gkts.ahtapot]:失败!=>{“failed”:true,“msg”:“条件检查” 'ansible_fqdn=={{item.1}}'失败。错误为:错误为 计算条件(ansible_fqdn=={{item.1}}):'item'为 未定义\n\n该错误似乎已被忽略 “/etc/ansi

运行ansible playbook时出现以下错误

任务[基础:Rsyslog yapilandiliyor] ****************************************致命:[gkts.ahtapot]:失败!=>{“failed”:true,“msg”:“条件检查” 'ansible_fqdn=={{item.1}}'失败。错误为:错误为 计算条件(ansible_fqdn=={{item.1}}):'item'为 未定义\n\n该错误似乎已被忽略 “/etc/ansible/roles/base/tasks/rsyslog.yml”:第2行第3列,但 根据确切的语法,可能\n出现在文件的其他位置 问题。\n\n出现问题的行是:\n\n---\n-名称:Rsyslog YapilandiLiyor。\n^此处\n“}

这在ansible 1.7中运行良好,但在ansible 2.2.1中不起作用

- name: Rsyslog yapilandiriliyor.
  template:
        src: "{{ rsyslog['conf']['source'] }}"
        dest: "{{ rsyslog['conf']['destination'] }}"
        owner: "{{ rsyslog['conf']['owner'] }}"
        group: "{{ rsyslog['conf']['group'] }}"
        mode: "{{ rsyslog['conf']['mode'] }}"
# when: "ansible_fqdn == item.1"
  when: "ansible_fqdn == {{item.1}}"
  with_subelements:
    - "{{ossimciks}}"
    - "{{clients}}"
  notify:
    - rsyslog servisini yeniden baslat
  sudo: yes
  tags: rsyslog
OSSIMCIK和客户端在我的vars文件中定义:

ossimciks:
   server01:
      fqdn: "OSSIMCIK_FQDN"
      port: "20514"
      clients:
        - "LOG_KAYNAGI_FQDN"
        - "LOG_KAYNAGI_FQDN"
我错过了什么

with_subelements:
  - "{{ossimciks}}"
  - "{{clients}}"
语法 我不知道Ansible在哪里/如何/何时会发生变化,但我认为

  • 带有子元素的
    中的第一个元素是变量,并且
  • 带有子元素的
    中的第二个元素是键
这在我编写的剧本中起作用,并且匹配(从2.5开始,文档中没有
with.*
循环[1],因为它们始终是查找[2]):

资料 我不清楚您试图在您的剧本中使用
{{item.1}
瞄准哪个项目,但是如果允许对数据进行微小更改,您可以对其进行结构调整,以便在
和_subelements
循环中访问显示的任何信息(我还对数据进行了一些扩展和重组,以澄清循环正在做什么):

这将产生:

skipping: [localhost] => (item=None)  => {"skip_reason": "Conditional result was False"}
skipping: [localhost] => (item=None)  => {"skip_reason": "Conditional result was False"}
ok: [localhost] => (item=None) => {
    "msg": "server02 client: LOG_KAYNAGI_FQDN_1"
}
ok: [localhost] => (item=None) => {
    "msg": "server02 client: LOG_KAYNAGI_FQDN_2"
}

  • [1]
  • [2]


编辑添加:我使用上述语法的剧本肯定在2.x发行版系列中——我认为~2.1.

我仍然会遇到同样的错误。它似乎无法解决.1是什么项目。但我不明白为什么。我用一个可能有用的示例更新了我的答案。
---
- hosts: localhost
  gather_facts: false
  vars:
    fqdn_var: "OSSIMCIK_FQDN_2"
    ossimciks:
      - server: "server01"
        fqdn: "OSSIMCIK_FQDN_1"
        port: "20514"
        clients:
          - "LOG_KAYNAGI_FQDN_1"
          - "LOG_KAYNAGI_FQDN_2"
      - server: "server02"
        fqdn: "OSSIMCIK_FQDN_2"
        port: "20514"
        clients:
          - "LOG_KAYNAGI_FQDN_1"
          - "LOG_KAYNAGI_FQDN_2"

  tasks:
    - name: Output ossimciks contents.
      debug:
        msg: "{{ item.0.server }} client: {{ item.1 }}"
      with_subelements:
        - "{{ ossimciks }}"
        - clients
      when: item.0.fqdn == fqdn_var
skipping: [localhost] => (item=None)  => {"skip_reason": "Conditional result was False"}
skipping: [localhost] => (item=None)  => {"skip_reason": "Conditional result was False"}
ok: [localhost] => (item=None) => {
    "msg": "server02 client: LOG_KAYNAGI_FQDN_1"
}
ok: [localhost] => (item=None) => {
    "msg": "server02 client: LOG_KAYNAGI_FQDN_2"
}