使用动态清单文件(JSON)运行剧本

时间:2018-08-31 09:31:22

标签: ansible

我正在使用下面的动态清单文件(JSON)和Playbook YML。我无法执行它。遇到错误。需要您的输入。

my_dynamic_inventory --list
{
    "_meta": {
        "hostvars": {
            Node_001": {
                "model_name":"router1",
                "ansible_user":"xxx",
                "ansible_password":"xxx",
                "ansible_port":"20",
                "ansible_host":"172.xx.xx.xx",
                "snmp_version":"2c",
                "snmp_community":"public",
                "snmp_port":"yyyy",
                "stack_node_num":"5"
                "ansible_network_os":"moduleA"
            }
        },
    },
    "all": {
        "hosts": ["Node_001"]
    }
}

YML文件:

---
- hosts: all
  gather_facts: off
  connection: local
  tasks:
    - name: create vlan entry
      necqx_vlan:
        vlan_id: 194
        name: VLAN1
        state: present
        model: router1

当我使用动态清单文件执行剧本时,我遇到了错误

  

[警告]:*解析失败   / ini插件的/ Path_to_dynamic_inventory / dynamic_inventory:   / Path_to_dynamic_inventory / dynamic_inventory:1:期望键=值   主机变量分配,得到:--list

     

文件   “ /usr/lib/python2.7/site-packages/ansible/plugins/inventory/ini.py”,   解析中的第132行       self._parse(路径,数据)文件“ /usr/lib/python2.7/site-packages/ansible/plugins/inventory/ini.py”,   _parse中的第210行       主机,端口,变量= self._parse_host_definition(line)文件“ /usr/lib/python2.7/site-packages/ansible/plugins/inventory/ini.py”,   _parse_host_definition中的第308行       self._raise_error(“期望的键=值主机变量分配,得到:%s”%(t))文件   “ /usr/lib/python2.7/site-packages/ansible/plugins/inventory/ini.py”,   _raise_error中的第137行       引发AnsibleError(“%s:%d:”%(self._filename,self.lineno)+消息)

     

[警告]:无法解析   / Path_to_dynamic_inventory / dynamic_inventory作为库存来源

     

[警告]:没有解析清单,只有隐式本地主机被解析   可用

     

[警告]:提供的主机列表为空,只有localhost可用。   请注意,隐式本地主机与“ all”不匹配

     

.... ...

     

PLAY [全部]   ****************************************************** ****************************************************** **********

     

正在跳过:没有主机匹配

3 个答案:

答案 0 :(得分:0)

在生成的json中似乎有一些错别字。像其他错误消息一样,给出的消息也很神秘。我会在这种情况下验证我的json。尝试jsonlint cli或在线json验证器。

缺少逗号:

"stack_node_num":"5"
"ansible_network_os":"moduleA"

缺少左括号:

 Node_001": {

答案 1 :(得分:0)

这是路径问题。找不到错误中显示的动态清单。

顺便说一句:

您需要更改:

Node_001": { ... }

"Node_001": { ... }

基本上,您忘记了"。然后,由于要引用该名称,因此需要获取其价值。 (如变量)。

答案 2 :(得分:-1)

您不需要使用json文件,Ansible支持YAML语法,并且可以将您的主机分块存储,然后可以通过请求YAML来完全拥有所需的主机,请在此处查看https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html < / p>