我正在尝试在Ansible中指定库存文件。
帮助命令输出:
-i INVENTORY, --inventory-file=INVENTORY
specify inventory host file
(default=/usr/local/etc/ansible/hosts)
我试着这样做:
ansible -i /Users/liu/personal/test_ansible/hosts
但它不起作用,而是再次输出帮助内容:
➜ test_ansible ansible -i /Users/liu/personal/test_ansible/hosts
Usage: ansible <host-pattern> [options]
Options:
-a MODULE_ARGS, --args=MODULE_ARGS
module arguments
--ask-become-pass ask for privilege escalation password
-k, --ask-pass ask for SSH password
--ask-su-pass ask for su password (deprecated, use become)
-K, --ask-sudo-pass ask for sudo password (deprecated, use become)
--ask-vault-pass ask for vault password
-B SECONDS, --background=SECONDS
run asynchronously, failing after X seconds
(default=N/A)
.......
我在这里缺少什么?
答案 0 :(得分:1)
当你使用'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
命令时,它将运行ad-hoc Ansible模块,而不是更典型的Ansible playbooks(由ansible
可执行文件运行)。
ansible-playbook
可执行文件需要“主机模式”,它将匹配清单中定义的一组远程节点。
因此,如果我们提供了一个清单文件(在此示例中名为ansible
),如下所示:
inventory.ini
我们可以使用[web]
web-1.example.org
web-2.example.org
[app]
app-1.example.org
app-2.example.org
app-3.example.org
[database:children]
database-master
database-slave
[database-master]
database-master.example.org
[database-child]
database-slave1.example.org
database-slave2.example.org
来定位Web节点,以使Ansible对web-1.example.org和web-2.example.org使用ping模块。
或者,我们可以使用ansible web -i /path/to/inventory.ini -m ping
来定位所有数据库节点,包括主服务器和2个从服务器。
最后,我们还可以使用涵盖清单文件中所有组的“神奇”ansible database -i /path/to/inventory.ini -m ping
组,使用all
来定位广告资源中的所有服务器。
答案 1 :(得分:0)
我找到了解决方案:
export ANSIBLE_INVENTORY=/Users/liu/personal/test_ansible/hosts
然后就可以了!