编写Ansible库存文件以进行一次性ansible游戏

时间:2016-07-20 23:18:34

标签: ansible ansible-playbook ansible-2.x

我正在编写一个一次性的游戏来更新我的弹性搜索框上的一些grok规则(我可以手动执行,但我预计会做很多这样的任务,所以我想让它工作)。 / p>

我只想在8台主机上运行lineinfile:

#!/usr/bin/ansible-playbook -i /home/myself/workingdir/hosts
- name: update those lines
  user: myself
  hosts: elasticsearch_hosts
  sudo: true
  tasks:
    - lineinfile:
        dest: /opt/logstash/patterns/stuff
        regexp: STUFF_AND_THINGS
        line: STUFF_AND_THINGS [%{GREEDYDATA:big_h0nking_regex}\] ?.%{37_RANDOM_CHARACTERS:bologna} %{URIPATHPARAM:} %{*#&%$%@&@^$@:expletive}/%{NUMBER:some_more_crap}  %{NUMBER:minutes_wasted} %{[idk,lol]1776}
    - service: name=elasticsearch state=restarted

这是我的主人档案

192.168.1.98
192.168.2.76
192.168.3.54
192.168.4.32
192.168.5.10
192.168.6.123

[elasticsearch-hosts]
es-1 ansible_host=192.168.1.98
es-2 ansible_host=192.168.2.76
es-3 ansible_host=192.168.3.54
es-4 ansible_host=192.168.4.32
es-5 ansible_host=192.168.5.10
es-6 ansible_host=192.168.6.123

当这个运行时,我得到:

PLAY [update them lines] ***************************************************
skipping: no hosts matched

我知道我在库存文件中没有正确执行某些操作,但我不确定自从我曾经使用过什么,例如,机架空间rax模块在运行游戏时构建库存清单。

注意es-1,,6是我在dns上定义的短名称也是有用的,所以我可以这样做,例如ssh es-1,这是有效的。它似乎不喜欢文件的先前迭代中的那些名称。

1 个答案:

答案 0 :(得分:0)

问题在于我如何调用ansible-playbook。

#!/usr/bin/ansible-playbook -i /home/myself/workingdir/hosts

这显然不是通过shebang传递参数的正确方法,因此ansible-playbook默认为/ etc / ansible / hosts,这是空的。