2016-02-12 26 views
6

Tôi đang cố gắng viết một tập lệnh python sẽ gọi các Playbook Ansible hiện có khi nó đi (vì tôi muốn lặp qua danh sách các lượt phát trong khi lặp qua danh sách các biến).Làm thế nào để sử dụng Ansible 2.0 Python API để chạy một Playbook?

bài này giải thích nó rất tốt, cho ansible pre-2.0: Running ansible-playbook using Python API

doc này giải thích nó rất tốt nếu bạn đang viết một cuốn mới trong kịch bản của bạn: http://docs.ansible.com/ansible/developing_api.html

Nhưng tôi không xem cách gọi một playbook hiện có bằng cách sử dụng Python API 2.0, và ansible.runner không còn hoạt động nữa.

Giúp tôi, Stackoverflow-Wan Kenobi. Bạn là hy vọng duy nhất của tôi.

Trả lời

13

Các tài liệu đáng ngạc nhiên là thiếu và bạn sẽ phải bắt đầu here

đó đang được nói, đây là một kịch bản nhanh chóng tôi bị tấn cùng quản lý để chạy một playbook.

#!/usr/bin/env python 

import os 
import sys 
from collections import namedtuple 

from ansible.parsing.dataloader import DataLoader 
from ansible.vars import VariableManager 
from ansible.inventory import Inventory 
from ansible.executor.playbook_executor import PlaybookExecutor 

variable_manager = VariableManager() 
loader = DataLoader() 

inventory = Inventory(loader=loader, variable_manager=variable_manager, host_list='/home/slotlocker/hosts2') 
playbook_path = '/home/slotlocker/ls.yml' 

if not os.path.exists(playbook_path): 
    print '[INFO] The playbook does not exist' 
    sys.exit() 

Options = namedtuple('Options', ['listtags', 'listtasks', 'listhosts', 'syntax', 'connection','module_path', 'forks', 'remote_user', 'private_key_file', 'ssh_common_args', 'ssh_extra_args', 'sftp_extra_args', 'scp_extra_args', 'become', 'become_method', 'become_user', 'verbosity', 'check']) 
options = Options(listtags=False, listtasks=False, listhosts=False, syntax=False, connection='ssh', module_path=None, forks=100, remote_user='slotlocker', private_key_file=None, ssh_common_args=None, ssh_extra_args=None, sftp_extra_args=None, scp_extra_args=None, become=True, become_method=None, become_user='root', verbosity=None, check=False) 

variable_manager.extra_vars = {'hosts': 'mywebserver'} # This can accomodate various other command line arguments.` 

passwords = {} 

pbex = PlaybookExecutor(playbooks=[playbook_path], inventory=inventory, variable_manager=variable_manager, loader=loader, options=options, passwords=passwords) 

results = pbex.run() 
+0

Cảm ơn Phani! Tối nay tôi sẽ thử cái này. – ddro

+0

@Phani - Tôi bị kẹt ở đây - "Hết thời gian chờ (3 giây) chờ lời nhắc leo thang đặc quyền:" – mannoj

Các vấn đề liên quan