概要
例えばデプロイするファイルを動的に切り替えたい場合に毎回 playbook を変更するのは面倒です
また group_vars
などで変数で定義してもいいですがそれも毎回変更するのは面倒です
そんなときは環境変数で playbook を実行するたびに別の値を設定しそれを参照するようにできます
環境
- macOS 10.15.7
- ansible 2.9.10
サンプルコード
HOGE という環境変数を設定することを想定しています
copy のファイル名や when の条件にも使えます
環境変数の設定を必須にしたい場合は playbook の冒頭で変数のチェックをして空であれば fail にするような処理を入れたほうが良いかなと思います
---
- hosts: localhost
gather_facts: no
vars_files:
- vault.yml
tasks:
- name: Check HOGE env
fail:
msg: The HOGE variable is an empty or None.
when: lookup('env', 'HOGE') == ""
- name: Print HOGE env
debug:
msg: "HOGE = {{ lookup('env', 'HOGE') }}"
- name: Put a file
copy:
src: files/test_{{ lookup('env', 'HOGE') }}.txt
dest: ~/Downloads/test.txt
owner: hawksnowlog
group: staff
mode: '0644'
実行する場合はコマンドの前に環境変数をセットしてから実行しましょう
HOGE=fuga ansible-playbook -i hosts site.yml
特定の値が環境変数に設定されているか確認する場合は
サンプルコードは空の場合にエラーにしました
特定の値が入っていない場合はエラーにしたい場合は when を以下のように変更しましょう
when: lookup('env', 'HOGE') not in ["hoge", "fuga", "foo"]
0 件のコメント:
コメントを投稿