zaki work log

作業ログやら生活ログやらなんやら

playbook内にAnsible実行時に使用する環境変数を定義する

※ 1/29: コピペミスで記述位置が同じになってたので修正しました

environmentを使う。
PYTHONPATH = /usr/lib/python3.6/site-packagesという環境変数を定義するのであれば、

1. playに書く場合

- hosts: localhost
  gather_facts: False
  environment:
    PYTHONPATH: /usr/lib/python3.6/site-packages
  tasks:
    [...]

2. taskに書く場合

- hosts: localhost
  gather_facts: False
  tasks:
  - expect:
      [...]
    environment:
      PYTHONPATH: /usr/lib/python3.6/site-packages

書いてて思ったけど、環境変数って環境によって異なる値を取りうるものを定義するものだから、playbookにハードコーディングしちゃったら微妙かな。。。
あ、インベントリに変数定義してそれを参照すれば良さげかな?

playbookには以下のように変数参照する環境変数(ややこしい表現だ)

  environment:
    PYTHONPATH: "{{ python_path }}"

inventoryのvarsのグループ変数など使って変数定義

[all:vars]
python_path=/usr/lib/python3.6/site-packages

zaki-hmkc.hatenablog.com

zaki-hmkc.hatenablog.com

この前Python3 + 追加モジュールが実行に必要なplaybookを書いて、環境変数PYTHONPATHが定義されていないといけないのに、うっかりこれ無しで実行してしまったので、playbookの定義に埋め込めたらミスが減るよねーと思った次第。