如何在 python3.5 中以编程方式运行 ansible-playbook 时设置额外的变量?(Ansible 版本 - 2.8)
Posted
技术标签:
【中文标题】如何在 python3.5 中以编程方式运行 ansible-playbook 时设置额外的变量?(Ansible 版本 - 2.8)【英文标题】:How to set extra_vars while running ansilbe-playbook programmatically in python3.5?(Ansible version - 2.8) 【发布时间】:2019-12-08 13:59:33 【问题描述】:import os
import json
from collections import namedtuple
from ansible import context
from ansible.module_utils.common.collections import ImmutableDict
from ansible.utils.vars import load_extra_vars
from ansible.parsing.dataloader import DataLoader
from ansible.vars.manager import VariableManager
from ansible.inventory.manager import InventoryManager
from ansible.playbook.play import Play
from ansible.executor.playbook_executor import PlaybookExecutor
def execute_ansible_playbook(CLOUD_TO_USE=None, PLAYBOOK=None):
playbook_path = PLAYBOOK
#inventory_path = "hosts"
#Options = namedtuple('Options', ['connection', 'module_path', 'forks', 'become', 'become_method', 'become_user', 'check', 'diff', 'listhosts', 'listtasks', 'listtags', 'syntax'])
loader = DataLoader()
passwords = dict(vault_pass='secret')
inventory = InventoryManager(loader=loader, sources='inventory/' + CLOUD_TO_USE)
#inventory = InventoryManager(loader=loader, sources='localhost')
variable_manager = VariableManager(loader=loader, inventory=inventory)
executor = PlaybookExecutor(
playbooks=[playbook_path],
inventory=inventory,
variable_manager=variable_manager,
loader=loader,
passwords=passwords
)
results = executor.run()
print (results)
我从Run Ansible playbook programmatically?得到这个代码
这对于其他 ansible-playbook 运行正常。但现在我想将 extra_vars 传递给 ansible-playbook。我找不到合适的答案。
我该怎么做?
【问题讨论】:
【参考方案1】:FWIW。使用ansible-runner。 documentation 不完整。所有参数都在source中描述。
【讨论】:
以上是关于如何在 python3.5 中以编程方式运行 ansible-playbook 时设置额外的变量?(Ansible 版本 - 2.8)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Linux Mint 中以编程方式发送密钥(模拟密钥输入)?
如何在 ubuntu 14.04 上运行的 ruby 中以编程方式解压缩 .tar.xz 文件(没有中间体)?