2017-03-28 12 views
0

私は可能なコールバックで遊んでいて、v2_playbook_on_start(self, playbook)メソッド内で実行されているプレイブックの名前(例えば "ansible-test")を使用したいと考えています。可能なコールバック:実行中のプレイブッブの名前を取得

はこれまでのところ、ここで私は

class CallbackModule(CallbackBase): 

    CALLBACK_VERSION = 2.0 
    CALLBACK_TYPE = 'notification' 
    CALLBACK_NAME = 'XXXX' 
    CALLBACK_NEEDS_WHITELIST = True 

    def __init__(self, display=None): 
     super(CallbackModule, self).__init__(display=display) 

    def v2_playbook_on_start(self, playbook): 
     # How to get the playbook name? 

    def v2_playbook_on_stats(self, stats): 
     # ... 

私のカスタムコールバックをコーディングする方法である私はすでにいくつかのことを試してみましたが、何も今のところ機能しません: playbook._load_playbook_dataplaybook.__module__

そして私はに何かを見つけることができませんdocs

この名前はどのように取得できますか?

注:私の場合、私は私のポイントを明確にするplaybook._basedir

EDIT

いくつかの詳細を使用することはできません。

はこれまでのところ、私の構造は、次のようなものです:

ここ
- ansible-deploy-apache 
    - defaults 
     - main.yml 
    - tasks 
     - main.yml 
    - vars 
    - ... 

は、脚本が実行タスクはtasks/main.ymlで定義されています。

playbook._file_nameは、tasksからmain.yml(内容ではなく、名前のみ)です。私がコールバックメソッドansible-deploy-apacheから持っていたいのは、ansible-deploy-apacheです。

+0

'ansible-deploy-apache'がロールである場合、' main.yml'はタスクのリストでなければなりません。時間をかけてMCVEを作って、他の人が問題の行動を再現できるようにしてください。フォルダ構造、ファイル名、 'ansible-playbook'コマンドライン。 –

答えて

0

あなたは_file_nameを試してみたいことがあります。

def v2_playbook_on_start(self, playbook): 
    display.warning('Current playbook: {}'.format(playbook._file_name)) 

書き込みプラグインはいくつかのリバースエンジニアリング:) v2_playbook_on_startため
Contextが必要です。

+0

残念ながら、 '_file_name'は実行されている' .yml'ファイルの名前を表示します(例えば 'main.yml'など)。しかし、この 'main.yml'は、私が手を差し伸べようとしている名前であるansible-role(' ansible-deploy-apache'と言う)内で起動されます。ですから、私の構造体は 'ansible-deploy-apache/tasks/main.yml'のようなものです。 – Mornor

+0

**私は、**プレイブック**が役割によってトリガーされる可能性があるとは思っていません。 [MCVE](https://stackoverflow.com/help/mcve)でオリジナルの質問に詳細を追加してください。 –

+0

私は自分のカスタムコールバックを公開することが許可されていないのでMCVEを行うことはできません。ここでは関係ありません。私はいくつかの詳細を追加しました。 – Mornor

関連する問題