【发布时间】:2016-01-18 16:59:16
【问题描述】:
Ansible 版本:2.0.0.1
我现在已经四处寻找,发现的大多数文档要么不完整,要么已弃用 (this post is for version 1.8.4, ie)
我正在尝试通过 Python API 启动 Ansible 剧本。 Ansible 的文档似乎在展示如何生成和播放任务,而不是如何加载和运行 playbook yml 文件。我一直在深入研究代码以尝试了解如何启动它,我认为我已经取得了一些进展,但我真的碰壁了。这是我到目前为止所拥有的:
def createcluster(region, environment, cluster):
Options = namedtuple('Options', ['region','env', 'cluster'])
# initialize needed objects
variable_manager = VariableManager()
loader = DataLoader()
options = Options(region=region, env=environment, cluster=cluster)
options.listhosts = False
vault_password = getpass.getpass('Enter vault password :')
passwords = dict(vault_pass=vault_password)
#Getting hosts
hostsread = open('provisioning/inventory/hosts','r')
hosts = hostsread.read()
inventory = Inventory(loader=loader, variable_manager=variable_manager, host_list=hosts)
variable_manager.set_inventory(inventory)
#Create and load the playbook file
playbook = Playbook(loader)
playbook.load('provisioning/cluster.yml', variable_manager,loader)
#Create an executor to launch the playbook ?
executor = None
executor = PlaybookExecutor(playbook,inventory,variable_manager,loader,options,passwords)
try:
result = executor.run()
finally:
if executor is not None:
executor.cleanup()
我完全不确定执行器部分,当我尝试启动代码时,我不断收到“AttributeError: 'Options' object has no attribute 'listhosts'”错误(很奇怪,因为它应该忽略它的缺席,我认为(line 60))
我应该如何加载 YML 文件并通过 Python API 启动它?我是走上正轨还是迷失了自己?为什么 Ansible 没有更好的文档记录?为什么 42 会是 7*7 的答案?
【问题讨论】:
-
用完了?您的意思是已弃用?
-
啊,是的。更正:)
标签: python api ansible ansible-playbook