Ansible playbook为列表中的服务器运行

时间:2015-10-22 04:36:07

标签: ansible ansible-playbook

Ansible Guru的快速提问。我想为一组特定的盒子运行一个ansible playbook,我将其复制到list.txt,忽略了ansible playbook中的库存和目标块:

---
- name: Ansible Runbook v.1.0
  hosts: test1
  gather_facts: yes
#  serial: "10%"

当我运行以下命令时,我没有匹配主机:

ansible-playbook playbook.yaml --tags "simplejson" -vvv -i /x/home/list.txt

PLAY [Ansible Runbook v.1.0] **************************************************
skipping: no hosts matched

$cat list.txt
hostname2b

有关解决方法的任何想法吗?

1 个答案:

答案 0 :(得分:1)

没有主机匹配的原因是在playbook中硬编码的主机test1不存在于您从命令行指定的库存文件中。问题是ansible-playbook命令不接受任何hosts参数。所以没有直接绕过硬编码主机test1的方法。

但是,正如here所解释的那样,有一种解决方法。您可以将变量用于hosts,并从命令行为该变量指定all。像这样:

---
- name: Ansible Runbook v.1.0
  hosts: "{{ host_param }}"
  gather_facts: yes

然后使用extra-vars传递该变量:

ansible-playbook playbook.yaml -i /x/home/list.txt --extra-vars="host_param=all" --tags "simplejson" -vvv