##脚本说明
project -- 操作的项目输入
playbook -- 远程服务器执行的规则定义
脚本
import ansible
from ansible.playbook import PlayBook
from ansible.inventory import Inventory
from ansible import callbacks
from ansible import utils
utils.VERBOSITY = 0
playbook_cb = callbacks.PlaybookCallbacks(verbose=utils.VERBOSITY)
stats = callbacks.AggregateStats()
runner_cb = callbacks.PlaybookRunnerCallbacks(stats, verbose=utils.VERBOSITY)
project = "test"
playbook = "/etc/ansible/test.yml"
# 通过ansible的get_hosts方法获取到本次操作的服务器列表
def get_invent(project):
invent = []
inv = ansible.inventory.Inventory()
invent_array = inv.get_hosts(pattern = project)
for i in invent_array:
invent.append(i.name)
return invent
# 将本次操作的服务器列表通过playbook的规则进行操作
def ansible_playbook(playbook,pro):
pb = PlayBook(
playbook=playbook,
inventory = Inventory(pro),
callbacks = playbook_cb,
runner_callbacks=runner_cb,
stats=stats
)
pb.run()
invent = get_invent(project)
ansible_playbook(playbook, invent)