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.

Reply via email to