【问题标题】:Run Ansible playbook programmatically?以编程方式运行 Ansible 剧本?
【发布时间】:2018-11-05 02:40:51
【问题描述】:

我有一个 python 应用程序,它调用下面的代码,并计划通过 Ansible API 以编程方式运行 Ansible playbook,而不是使用子进程之类的东西。

下面的代码运行,但实际上似乎没有执行任何操作。抓取结果的输出只会给我一个看起来像这样的字典:

[{'plays': [localhost], 'playbook': 'playbooks/asg_elb_example.yml'}]

我不确定我哪里出错了或者我错过了什么。这是我正在运行的代码。

import os
import sys
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
ROOT_DIR = os.path.dirname(SCRIPT_DIR)

import json
from collections import namedtuple
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 ansible_part():
    playbook_path = "playbooks/asg_elb_example.yml"
    inventory_path = "hosts"

    Options = namedtuple('Options', ['connection', 'module_path', 'forks', 'become', 'become_method', 'become_user', 'check', 'diff', 'listhosts', 'listtasks', 'listtags', 'syntax'])
    loader = DataLoader()
    options = Options(connection='local', module_path='%s/' % (ROOT_DIR), forks=100, become=None, become_method=None, become_user=None, check=False,
                    diff=False, listhosts=True, listtasks=False, listtags=False, syntax=False)
    passwords = dict(vault_pass='secret')

    inventory = InventoryManager(loader=loader, sources=[inventory_path])
    variable_manager = VariableManager(loader=loader, inventory=inventory)
    executor = PlaybookExecutor(  
                playbooks=[playbook_path], inventory=inventory, variable_manager=variable_manager, loader=loader,  
                options=options, passwords=passwords)  
    results = executor.run()  
    print results

def main():
    ansible_part()

sys.exit(main())

【问题讨论】:

    标签: python ansible ansible-2.x


    【解决方案1】:

    您告诉 Ansible 使用 listhosts=True 列出主机,它正在正常工作。

    执行剧本更改为listhosts=False

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多