こちらの記事は Ansible lint Advent Calendar 2022 カレンダー2 6日目の記事になります。
今回はルール inline-env-var について説明します。
inline-env-var
inline-env-var は ansible.builtin.command モジュールで環境変数が定義されていないか検証します。
Ansible ではコマンドを実行する処理で環境変数を定義する必要がある場合は ansible.builtin.shell を利用します。
問題のあるコード
---
- name: Example playbook
hosts: all
tasks:
- name: Set environment variable
ansible.builtin.command: MY_ENV_VAR=my_value # <- command モジュールで環境変数が定義されている
修正されたコードその1
環境変数を定義してコマンドを実行する
---
- name: Example playbook
hosts: all
tasks:
- name: Set environment variable
ansible.builtin.shell: echo $MY_ENV_VAR
environment:
MY_ENV_VAR: my_value # <- 環境変数を environment キーで定義する
修正されたコードその2
環境変数を定義する処理のみ実行する
---
- name: Example playbook
hosts: all
tasks:
- name: Set environment variable
ansible.builtin.shell: MY_ENV_VAR=my_value # <- shell モジュールで環境変数を定義する