【问题标题】:Warning while constructing a mapping in Ansible在 Ansible 中构建映射时出现警告
【发布时间】:2016-03-11 16:56:59
【问题描述】:

每当我运行我的剧本时,都会出现以下警告:

[警告]:从 /etc/ansible/roles/foo/tasks/main.yml 构建映射时,发现第 17 行第 3 列 一个重复的字典键(文件)。仅使用最后定义的值。

我在tasks文件夹中main.yml的相关部分是这样的:

(第 17 行是清理文件的任务,这似乎有点不对劲,所以我猜问题出在前面的“脚本”行)

- name: Run script to format output
  script: foo.py {{ taskname }} /tmp/fcpout.log
- name: Clean temp files
  file: path=/tmp/fcpout.log state=absent

还有我的 vars 文件:

---
my_dict: {SLM: "114", Regular: "255", Production: "1"}
taskid: "{{my_dict[taskname]}}"

要运行我的剧本,我会这样做:

ansible-playbook playbooks/foo.yml --extra-vars "server=bar taskname=SLM"

我要做的是获取命令行参数,设置主机:使用“服务器”参数,获取任务名称并从中找出 id 所指的。此 id 用作远程运行的 python 脚本的第一个输入。

剧本运行良好,但我不明白为什么会收到警告。谁能解释这里出了什么问题?

【问题讨论】:

    标签: command-line-arguments ansible jinja2 ansible-playbook ansible-2.x


    【解决方案1】:

    您确定 17 号线附近没有更多内容吗?当任务中有两个相同的键(或通常在字典中的任何位置)时会触发此警告。

    警告声称有两个 file 键,表明任务如下所示:

    - name: Clean temp files
      file: ...
      file: ...
    

    一个常见的错误是人们忘记为下一个任务开始一个新的列表项。以下是有效的,而上述不是:

    - name: Clean temp files
      file: ...
    - file: ...
    

    我注意到 Ansible 有时会在错误消息中获取错误的行甚至文件。我看到它抱怨tasks/main.yml,而问题实际上出在handlers/main.yml。如果在该行附近找不到具有重复 file 键的此类任务,请搜索整个文件甚至其他文件。如果在任何地方都找不到这样的东西,那么您似乎在 Ansible 中发现了一个错误。在这种情况下,您应该repot it on github

    【讨论】:

    • 你是对的。还有第二个file: 任务。我不熟悉ansible的措辞,所以我没有得到“找到重复的dict键(文件)”它指的是文件模块。用“钥匙”这个词,我认为它与我的字典有关......感谢您的帮助。
    • 如果你也有两个“task:”键,你可以得到这个:) 场景:剧本中有一个任务,你复制了它,但也错误地复制了任务标题。也可以备份@udondan 关于错误行号的内容 - 我已经看到了几行警告。
    【解决方案2】:

    由于在模块中使用了重复的选项,我遇到了这个警告。例如,我不小心在模块定义中使用了“主机”选项 2 次,如下所示:

     name: Create NEW DB User
     mysql_user:
       name: NEW USER NAME
       login_user: root
       login_password: Root Passwd
       password: NEW USER'S PASSWD
       host: localhost
       priv: 'DB NAME.*:ALL,GRANT'
       state: present
       host: localhost
    

    通过省略主机选项之一,警告已消失。

    【讨论】:

      猜你喜欢
      • 2021-10-06
      • 2021-01-19
      • 2021-06-17
      • 2013-09-22
      • 1970-01-01
      • 1970-01-01
      • 2017-12-09
      • 2018-03-07
      • 2016-09-27
      相关资源
      最近更新 更多