2016-02-12 24 views
6

Mevcut Ansible playbook'ları çağrılırken çalacak bir python betiği yazmaya çalışıyorum (çünkü bir değişkenler listesi üzerinde döngü yaparken bir oyun listesi üzerinde döngü yapmak istiyorum). Eğer komut yeni bir taktik kitabı yazıyorsanız Running ansible-playbook using Python APIBir Playbook'u çalıştırmak için Ansible 2.0 Python API nasıl kullanılır?

Bu doküman çok iyi açıklıyor:

Bu mesaj yanıtlayıcı 'pre-2.0'da için çok iyi açıklıyor http://docs.ansible.com/ansible/developing_api.html

Ama yok Python API 2.0 kullanarak mevcut bir oyun defterini nasıl arayacağınızı görün ve ansible.runner artık çalışmıyor.

Yardım et, Stackoverflow-Wan Kenobi. Sen benim tek umudumsun. dokümantasyon şaşırtıcı eksik ve söyleniyor

here Başlamak gerekecek

cevap

13

, burada bir taktik kitabı çalıştırmak için yönetir ben birlikte kesmek hızlı bir komut dosyasıdır.

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

Teşekkür Phani! Bunu bu gece daha sonra deneyeceğim. – ddro

+0

@Phani - Burada sıkışıp kaldım - "Zaman aşımı (3s) ayrıcalık yükselme istemi için bekliyor:" – mannoj