Ansible指定库存文件不起作用

时间:2015-12-17 07:20:55

标签: python ansible

我正在尝试在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)
  .......

我在这里缺少什么?

2 个答案:

答案 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

然后就可以了!