回答:
ドキュメントを読んで、このサンプルを提供するセクション「コマンドラインで変数を渡す」を見つけます:
ansible-playbook release.yml --extra-vars "version=1.23.45 other_variable=foo"
他の例は、JSON文字列(≥ 1.2
)またはファイル(≥ 1.3
)からロードする方法を示しています
key=value
構文を使用して渡された値は、文字列として解釈されます。文字列であってはならないもの(ブール値、整数、浮動小数点数、リストなど)を渡す必要がある場合は、JSON形式を使用します。例:--extra-vars '{"i_wasted_30_mins_debugging_a_boolean_string":true}'
他の回答では、コマンドライン変数を渡す方法は記載されていますが、それらにアクセスする方法は記載されていません。
--extra-vars "version=1.23.45 other_variable=foo"
ymlファイルで、これらをスコープ付きのansible変数に割り当てるには、次のようにします。
vars:
my_version: "{{ version }}"
my_other_variable: {{ other_variable }}
コマンドライン引数を使用する代わりに、セッション内ですでに定義されている環境変数を利用することもできます。次のように、これらをansible ymlファイル内で参照できます。
vars:
my_version: "{{ lookup('env', 'version') }}"
my_other_variable: {{ lookup('env', 'other_variable') }}
lookup('env', SOMETHING)
12要素に一致します。
version: {{ version }}
定義するように、間違っversion
ています。
ansible-playbook release.yml -e "version=1.23.45 other_variable=foo"
-e
フラグの短縮形である--extra-vars
--extra-vars "@some_file.json"
--extra-vars
変数を渡す場合、ファイルにない変数を渡すには2番目のフラグが必要であることに注意してください。例--extra-vars "@some_file.json" --extra-vars "other_variable=foo"
何らかの理由で、上記の回答のどれも私にとってうまくいきませんでした。Ansbile 2.2.0のプレイブックにいくつかの追加の変数を渡す必要があるので、これは私がそれを機能させる方法です(各変数の前の-eオプションに注意してください)。
ansible-playbook site.yaml -i hostinv -e firstvar=false -e second_var=value2
-e
の短縮形です--extra-vars
-e
フラグで追加の変数を指定できることを示すための@LXCdev KohaLappi +1
-e "firstvar=false second_var=value2"
s3_sync:
bucket: ansible-harshika
file_root: "{{ pathoftsfiles }}"
validate_certs: false
mode: push
key_prefix: "{{ folder }}"
ここでは、変数は「pathoftsfiles」および「folder」という名前で使用されています。この変数の値は、以下のコマンドで指定できます
sudo ansible-playbook multiadd.yml --extra-vars "pathoftsfiles=/opt/lampp/htdocs/video/uploads/tsfiles/$2 folder=nitesh"
注:シェルコマンドで変数に値を渡すときに、逆コンマを使用しないでください
これは、シェル環境変数を使用する場合にも機能しました。
ansible-playbook -i "localhost," ldap.yaml --extra-vars="LDAP_HOST={{ lookup('env', 'LDAP_HOST') }} clustername=mycluster env=dev LDAP_USERNAME={{ lookup('env', 'LDAP_USERNAME') }} LDAP_PASSWORD={{ lookup('env', 'LDAP_PASSWORD') }}"
ansible-playbok -i <inventory> <playbook-name> -e "proc_name=sshd"
上記のコマンドは、以下のプレイブックで使用できます。
---
- name: Service Status
gather_facts: False
tasks:
- name: Check Service Status (Linux)
shell: pgrep "{{ proc_name }}"
register: service_status
ignore_errors: yes
debug: var=service_status.rc`
--extra-vars
た変数は、プレイブック内で定義された変数をオーバーライドすることにも注意してください。