是否将库存文件中的参数传递给Ansible命令



我正试图对清单文件中列出的组运行Ansible命令,目标是运行单个命令,该命令将在所有组实例上运行;ansible_ssh_host",并将其用作命令中的参数。

命令是:

ansible worker -i inventory -m command -a "start-worker.sh -h <ansible_ssh_host> spark://ec2-35-173-XX-XX.compute-1.amazonaws.com:7077"

库存文件示例:

[master]
spark-master ansible_ssh_host=ec2-3-225-47-10.compute-1.amazonaws.com
[worker]
spark-worker-6 ansible_ssh_host=ec2-23-20.compute-1.amazonaws.com
spark-worker-7 ansible_ssh_host=ec2-52-6.compute-1.amazonaws.com
spark-worker-8 ansible_ssh_host=ec2-18-209.compute-1.amazonaws.com
spark-worker-9 ansible_ssh_host=ec2-54-147.compute-1.amazonaws.com
spark-worker-10 ansible_ssh_host=ec2-3-234.compute-1.amazonaws.com
spark-worker-11 ansible_ssh_host=ec2-52-205.compute-1.amazonaws.com
spark-worker-12 ansible_ssh_host=ec2-3-213.compute-1.amazonaws.com
spark-worker-13 ansible_ssh_host=ec2-34-199.compute-1.amazonaws.com
spark-worker-14 ansible_ssh_host=ec2-52-70.compute-1.amazonaws.com
spark-worker-15 ansible_ssh_host=ec2-52-72.compute-1.amazonaws.com
spark-worker-16 ansible_ssh_host=ec2-3-231.compute-1.amazonaws.com
[spark_cluster:children]
master
worker

首先使用调试模块进行测试

shell> ansible worker -i inventory -m debug -a "msg='start-worker.sh -h {{ ansible_ssh_host }}'"
spark-worker-6 | SUCCESS => {
"msg": "start-worker.sh -h ec2-23-20.compute-1.amazonaws.com"
}
spark-worker-7 | SUCCESS => {
"msg": "start-worker.sh -h ec2-52-6.compute-1.amazonaws.com"
}
spark-worker-8 | SUCCESS => {
"msg": "start-worker.sh -h ec2-18-209.compute-1.amazonaws.com"
}
...

可选地,将任务放入行动手册中,例如

shell> cat playbook.yml
- hosts: worker
gather_facts: false
tasks:
- debug:
msg: "start-worker.sh -h {{ ansible_ssh_host }}"

给出

shell> ansible-playbook -i inventory playbook.yml
PLAY [worker] ******************************************************
TASK [debug] *******************************************************
ok: [spark-worker-6] => 
msg: start-worker.sh -h ec2-23-20.compute-1.amazonaws.com
ok: [spark-worker-7] => 
msg: start-worker.sh -h ec2-52-6.compute-1.amazonaws.com
ok: [spark-worker-8] => 
msg: start-worker.sh -h ec2-18-209.compute-1.amazonaws.com
...

最新更新