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 <ohara.rich...@gmail.com>
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 ansible-project+unsubscr...@googlegroups.com.
> To post to this group, send email to ansible-project@googlegroups.com.
> 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 ansible-project+unsubscr...@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
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