Memo/Ansible/Filters

https://dexlab.net:443/pukiwiki/index.php?Memo/Ansible/Filters
 

Filters


type_debug: 型の表示

registerの結果の型が不明な時等に便利

  • 例:以下の結果は「AnsibleUnsafeText」
    - debug:
      msg: "{{ result.stdout | type_debug }}"

json_query(): jmespathの書式でjsonを検索

  • jp jmespathのcliツール
    • 似たようなツールにMemo/JavaScript/jqがあるが書式が異なる
    • インストール
      JP_VER=0.1.3
      wget https://github.com/jmespath/jp/releases/download/$JP_VER/jp-linux-amd64
      sudo mv jp-linux-amd64 /usr/local/bin/jp
      sudo chmod +x /usr/local/bin/jp
    • サンプル
      echo '[{ "key":"value1" },{ "key":"value2" }]' | jp '[]'
      [
        {
          "key": "value1"
        },
        {
          "key": "value2"
        }
      ]
      
      echo '[{ "key":"value1" },{ "key":"value2" }]' | jp '[].key'
      [
        "value1",
        "value2"
      ]
      
      echo '[{ "key":"value1" },{ "key":"value2" }]' | jp "[?key=='value1']"
      [
        {
          "key": "value1"
        }
      ]

product():

  • loopに使う。list1はitem.0.name, dict1は、item.1.nameのように参照できる。
    loop: "{{ list1 | product(dict1) | list }}"

random(): ランダム値の取得

  • cronを実行する分をランダム指定。seedを指定する事で、冪等性を担保。同じ時刻に同時に動くと負荷が上がるため、分散させたい場合に有効
    "{{ 60 | random(seed=inventory_hostname) }} 0 * * * root /script/from/cron"

combine(): ハッシュ/辞書型のマージ


default(): 変数未定義時のエラーを回避

# var1が必須ではないパラメータの場合、省略できる
item.var1 | default(omit)

# var1が未定義時に空の配列を返す
item.var1 | default([])
  • 「when: item.var1 is defined and item.var1 == "foo"」 のような書き方を短縮できる。
    when: (item.var1 | default("")) == "foo"

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-08-20 (木) 18:35:37 (38d)