首页 文章

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

提问于
浏览
0

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

  • 1

    没有主机匹配的原因是主机 test1 (在playbook中硬编码)不存在于从命令行指定的库存文件中 . 问题是 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
    

相关问题