2016-08-26 3 views
1

Я унаследовал плагин обратного вызова, который работал с Ansible 1.9. Мы повысились до 2.1 и больше не работаем.Доступ к переменным через обратный вызов Ansible 2.0

Похоже, что он пытается получить доступ к объекту playbook, но не переходит в «v2_playbook_on_stats». Мой Python ржавый, поэтому я не уверен, как я могу получить доступ к этим данным. Я tryijng, чтобы получить доступ к «экстра-ВАР» переменной, но это дает мне следующую ошибку:

[WARNING]: Failure using method (v2_playbook_on_stats) in callback plugin 
(</home/deployment/scripts/playbooks-2.0/callback/log_to_mongo.CallbackModule object at 0x2b8cf90>): 'NoneType'  object has no attribute 'extra_vars' 

код

class CallbackModule(object): 
    """ 
    An ansible callback module for saving Ansible output to a database log 
    """ 
    def __init__(self): 
     self.playbook = None 
     self.playbook_name = None 
     self.play = None 
     self.task = None 

def v2_playbook_on_stats(self, stats): 
    global jira_ticket 
    global deployed_modules 
    global ocd_job_id 
    global environment_id 

    deployed_modules = [] 
    jira_ticket = self.playbook.extra_vars['jira_ticket'] 
    ocd_job_id = self.playbook.extra_vars['ocd_job_id'] 
    environment_id = self.playbook.extra_vars['environment_id'] 

ответ

2

Трудно угадать, что вы пытаетесь достичь.
Но это также здорово, потому что вы всегда можете заглянуть в его исходный код.
Взгляните на slack.py плагин обратного вызова.

extra_vars и playbook доступ:

def __init__(self, display=None): 

    ... 

    if cli: 
     self._options = cli.options 

    ... 

def v2_playbook_on_start(self, playbook): 
    self.playbook_name = os.path.basename(playbook._file_name) 

    ... 

    extra_vars = self._options.extra_vars 

    ... 

Если вам нужно использовать playbook объект позже в v2_playbook_on_stats, назначать self.playbook = playbook когда в v2_playbook_on_start.

+0

А я думаю, что это моя проблема. Я попытался назначить 'self.playbook' в' v2_playbook_on_stats' вместо 'v2_playbook_on_start'. Я дам ему говно позже. Я пытаюсь получить доступ к дополнительным машинам в 'v2_playbook_on_stats' – luckytaxi