2016-08-26 8 views
1

Ansible 1.9を使用していたコールバックプラグインを継承しました。私たちは2.1にアップグレードし、もう動作しません。Ansible 2.0コールバックによる変数へのアクセス

プレイリストオブジェクトにアクセスしようとしているようですが、「v2_playbook_on_stats」には渡されません。私のPythonは錆びているので、どのようにしてそのデータにアクセスできるか分かりません。私は、「エクストラvarsの」変数にアクセスするために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_varsplaybookアクセス:

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 

    ... 

あなたはv2_playbook_on_statsの後半playbookオブジェクトを使用する必要がある場合は、self.playbook = playbookときv2_playbook_on_start中を割り当てます。

+0

ああ、それは私の問題だと思います。私は 'v2_playbook_on_start'の代わりに' v2_playbook_on_stats'に 'self.playbook'を割り当てようとしました。私は後でそれをくそってあげるよ。私は 'v2_playbook_on_stats'で余分な車にアクセスしようとしています – luckytaxi

関連する問題