この記事は1年以上前の古い記事です。現状に即していない記述の場合があります。あらかじめご了承ください。

ansible.builtin.pipe lookupでコマンド実行結果だけもらう

nogajun
最近、AnsibleのPlaybookやRoleをゴリゴリ書いてますが、ansible.builtin.pipe lookup
で検索かけても日本語情報が1件ぐらいしかないので書いておきます。
- 参考: ansible.builtin.pipe lookup – read output from a command — Ansible Community Documentation: https://docs.ansible.com/ansible/latest/collections/ansible/builtin/pipe_lookup.html
ナイトリービルドを日付のディレクトリで公開していて、かつ3日分しか保存してくれないので常にURLが変わってしまう場所からファイルを取ってくる必要がありました。しかも、公開の日付は日本時間の当日ではなく時差で前日の日付が最新でした。
そこからどうやってダウンロードしようかと考えてたけれど、ansible.builtin.pipe lookup
を使うとコマンドを実行して結果だけ返してくれます。date
コマンドを使って前日の日付を生成するとこんな感じ。
- name: 前日の日付を生成する
ansible.builtin.debug:
msg: "{{ lookup('ansible.builtin.pipe', 'date +%Y%m%d --date yesterday') }}"
これはメッセージで出力してるだけだけど変数に入れたりもできます。Playbookを書いてて「シェルスクリプトなら一発でできるのに!」と思うことがpipe lookupならできるので使うといいんじゃないでしょうか。