Skip to content

Instantly share code, notes, and snippets.

@rm-you
Last active November 17, 2016 19:31
Show Gist options
  • Save rm-you/fd32b39fe4b3574cd76862b67d330116 to your computer and use it in GitHub Desktop.
Save rm-you/fd32b39fe4b3574cd76862b67d330116 to your computer and use it in GitHub Desktop.
Ansible Playbook hello_world using Ansible 2.0 API
from ansible.cli import CLI
from ansible.executor import playbook_executor
from ansible import inventory
from ansible.parsing import dataloader
from ansible import vars
HOSTS = ['127.0.0.1']
PLAYBOOK = "/tmp/hello.yml"
REMOTE_USER = "user"
SSH_KEY = "/home/user/.ssh/id_rsa"
loader = dataloader.DataLoader()
var_manager = vars.VariableManager()
inv = inventory.Inventory(
loader=loader,
variable_manager=var_manager,
host_list=HOSTS
)
# Need to generate some random huge options structure? Not sure how else to do this
parser = CLI.base_parser(
connect_opts=True,
meta_opts=True,
runas_opts=True,
subset_opts=True,
check_opts=True,
inventory_opts=True,
runtask_opts=True,
vault_opts=True,
fork_opts=True,
module_opts=True,
)
# This is all copied from playbook.py and slightly simplified
parser.add_option('--list-tasks', dest='listtasks', action='store_true')
parser.add_option('--list-tags', dest='listtags', action='store_true')
parser.add_option('--step', dest='step', action='store_true')
parser.add_option('--start-at-task', dest='start_at_task')
options, _ = parser.parse_args([]) # We literally just need a blank default
options.inventory = inv
# Set remote user and ssh key
options.remote_user = REMOTE_USER
options.private_key_file = SSH_KEY
pbex = playbook_executor.PlaybookExecutor(
playbooks=[PLAYBOOK],
inventory=inv,
variable_manager=var_manager,
loader=loader,
options=options,
passwords=None
)
pbex.run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment