ansible2 python api

import yaml
from collections import namedtuple
from ansible.parsing.dataloader import DataLoader
from ansible.vars.manager import VariableManager
from ansible.inventory.manager import InventoryManager
from ansible.executor.task_queue_manager import TaskQueueManager
from ansible.playbook.play import Play


Options = namedtuple('Options', [
    'connection',
    'module_path',
    'forks',
    'become',
    'become_method',
    'become_user',
    'check',
    'diff'])

loader = DataLoader()
play = Play()
options = Options(
    connection='smart',
    module_path=["/usr/local/bin/ansible"],
    forks=10,
    become=None,
    become_method=None,
    become_user=None,
    check=False,
    diff=False)

inventory = InventoryManager(loader=loader)
variable_manager = VariableManager(loader=loader, inventory=inventory)

inventory.add_host("192.168.1.1")
host = inventory.get_host("192.168.1.1")
variable_manager.set_host_variable(host, "ansible_ssh_pass", "1")
with open("vars.yml") as f:
    for k, v in yaml.load(f).items():
        variable_manager.set_host_variable(host, k, v)

_play = dict(hosts="192.168.1.1", gather_facts='no', tasks=[
    dict(action=dict(module="shell", args="ls /home")),
    yaml.load(open("tasks.yml")),
])

tqm = None
try:
    tqm = TaskQueueManager(
        inventory=inventory,
        variable_manager=variable_manager,
        loader=loader,
        options=options,
        passwords={},
    )

    tqm.run(play.load(_play, variable_manager=variable_manager, loader=loader))
finally:
    if tqm is not None:
        tqm.cleanup()

provenance

smart
"Default connection plugin to use, the 'smart' option will toggle between 'ssh' and 'paramiko' depending on controller OS and ssh versions"

猜你喜欢

转载自blog.csdn.net/taoxb_csdn/article/details/79560713