2016-02-12 3 views
6

मैं एक पायथन लिपि लिखने की कोशिश कर रहा हूं जो मौजूदा उत्तरदायी प्लेबुक को कॉल करता है (क्योंकि मैं चर की सूची में लूप करते समय नाटकों की सूची में लूप करना चाहता हूं)।Playbook चलाने के लिए Ansible 2.0 Python API का उपयोग कैसे करें?

इस पोस्ट में, बहुत अच्छी तरह से यह बताते हैं के लिए ansible पूर्व 2.0: Running ansible-playbook using Python API

यह दस्तावेज़ बहुत अच्छी तरह से यह बताते हैं कि अगर आप अपनी स्क्रिप्ट में एक नया प्लेबुक लिख रहे हैं: http://docs.ansible.com/ansible/developing_api.html

लेकिन मुझे नहीं पता देखें कि पाइथन एपीआई 2.0 का उपयोग करके मौजूदा प्लेबुक को कैसे कॉल करें, और ansible.runner अब काम नहीं करता है।

मेरी सहायता करें, स्टैक ओवरफ्लो-वान केनोबी। तुम मेरे ही उम्मीद कर रहे हैं।

उत्तर

13

प्रलेखन आश्चर्यजनक रूप से कमी है और आप here

कहा जा रहा है आरंभ करने के लिए होगा, यहाँ एक त्वरित स्क्रिप्ट मैं एक साथ काट दिया है कि एक प्लेबुक को चलाने के लिए प्रबंधन करता है।

#!/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

धन्यवाद फ़ानी! मैं आज रात बाद कोशिश करूँगा। – ddro

+0

@ पानी - मैं यहां फंस गया हूं - "टाइमआउट (3 एस) विशेषाधिकार वृद्धि के लिए इंतजार कर रहा है:" – mannoj

संबंधित मुद्दे