我正在编写一个一次性的游戏来更新我的弹性搜索框上的一些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
,这是有效的。它似乎不喜欢文件的先前迭代中的那些名称。
答案 0 :(得分:0)
问题在于我如何调用ansible-playbook。
#!/usr/bin/ansible-playbook -i /home/myself/workingdir/hosts
这显然不是通过shebang传递参数的正确方法,因此ansible-playbook默认为/ etc / ansible / hosts,这是空的。