在Ansible中为每个服务器运行带有个别参数的任务,可以使用Ansible的动态主机和主机变量功能来实现。下面是一个示例的解决方法:
my_dynamic_inventory.py
:#!/usr/bin/env python
import json
inventory = {
"group1": {
"hosts": {
"host1": {
"param1": "value1",
"param2": "value2"
},
"host2": {
"param1": "value3",
"param2": "value4"
}
}
}
}
print(json.dumps(inventory))
chmod +x my_dynamic_inventory.py
ansible.cfg
中,指定动态主机脚本文件的路径:[defaults]
inventory = /path/to/my_dynamic_inventory.py
my_playbook.yml
:---
- name: Run task with individual parameters for each server
hosts: group1
tasks:
- name: Task 1
debug:
msg: "Host: {{ inventory_hostname }}, Param1: {{ hostvars[inventory_hostname]['param1'] }}, Param2: {{ hostvars[inventory_hostname]['param2'] }}"
ansible-playbook my_playbook.yml
这样,Ansible会根据动态主机脚本生成的主机清单,为每个服务器运行任务,并根据主机变量的值打印相应的参数。