We do not recommend interfacing directly with the ansible playbook python API. It is not a public interface and is not guaranteed to be stable.
Instead, I'd recommend looking at the ansible-runner project, which provides a python API for executing playbooks: https://github.com/ansible/ansible-runner On Fri, May 25, 2018 at 11:56 AM, Richard O'Hara <[email protected]> wrote: > I have a python application that calls the code below with the plan to run > an Ansible playbook programmatically via the Ansible API versus using > something like subprocess. > > The code below runs but nothing actually seems to get executed. Grabbing > the output of results just gives me a dictionary that looks like: > > [{'plays': [localhost], 'playbook': 'playbooks/asg_elb_example.yml'}] > > > > I am not sure where I am going wrong or what I am missing. Here is the > code I am running. > > 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()) > > -- > You received this message because you are subscribed to the Google Groups > "Ansible Project" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/ansible-project/809aebf4-79ae-4554-812e-2148d08aa806%40googlegroups. > com > <https://groups.google.com/d/msgid/ansible-project/809aebf4-79ae-4554-812e-2148d08aa806%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- Matt Martz @sivel sivel.net -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/CAD8N0v9vHZWoNG_UDNwe%2BYWkZCEwCPfF-%2BM%3DFSV_%3D-4fmh-1XQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
