我正在使用下面的动态清单文件(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 [全部] ****************************************************** ****************************************************** **********
正在跳过:没有主机匹配
答案 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>