腐女子エンジニアの日記

創作と技術と時々音楽

Ansibleのコールバックプラグインの設定〜使用

背景

  • Playbook実行中に必要なタスクだけ表示させたいという要件がありました。
  • Twitterでつぶやいたところ、callbackプラグインが内容に合いそうだという指摘を受けたので調べてみることにしました。

目的

コールバックプラグインとは

  • Ansibleジョブ実行時の表示を変化させたり、別ツールと連携させたりできるプラグインのこと。
  • ansible.cfgから容易に設定が可能。
  • 今回はselective pluginを使用します。

docs.ansible.com

手順

コールバックプラグインを設定する

  • ansible.cfgに[defaults]セクションに下記の通り記述します。
[defaults]
stdout_callback = selective

Playbookを書く

  • localhostに対してジョブを実行するPlaybookを書きます。
  • 表示させたいタスクにtags:[print_action]を追加します。
---
- name: callback plugin テスト用
  hosts: localhost
  connection: local
  tasks: 
    - name: debug
      debug: 
        msg: "tagなしだから表示されない"

    - name: debug msg
      debug: 
        msg: "メッセージが表示される"
      tags: [print_action]
    
    - name: debug list
      debug: 
        var: item
      loop: 
        - "msg1"
        - "msg2"
        - "msg3"
      tags: [print_action]

実行結果

hogehogenoiMac:study user$ ansible-playbook main.yml 
..
# debug msg ***************************************************************************************************************
  * localhost                  - changed=False -- メッセージが表示される ---------------------------------
# debug list **************************************************************************************************************
  * localhost                  - changed=False -- All items completed -------------------------
      * msg1                        - FAILED!!! --  ------------------------------------------------
      * msg2                        - FAILED!!! --  ------------------------------------------------
      * msg3                        - FAILED!!! --  ------------------------------------------------

# STATS *******************************************************************************************************************
localhost    : ok=4     changed=0       failed=0        unreachable=0

実際は色付きで表示されます。カラフル! f:id:dcn_f:20200106224429p:plain

メモ

なんでloopを使用した際はFAILEDになるんだろう。。。と思ってたらissueにあがってた。 アップデートで解決することを祈ります。

github.com