command
またはShell
モジュールで変数を使用できますか?次のコードがあり、変数ファイルを使用していくつかの構成を提供したいと思います。
変数ファイルからHadoopバージョンを読みたいです。 ansibleの他のモジュールでは、{{ansible_version}}
が、コマンドまたはシェルでは機能しません。
- name: start ZooKeeper HA
command: hadoop-2.7.1/bin/hdfs zkfc -formatZK -nonInteractive
- name: start zkfc
Shell: hadoop-2.7.1/sbin/hadoop-daemon.sh start zkfc
以下に変換したいと思います。
- name: Iniciar zkfc
command: {{ hadoop_version }}/sbin/hadoop-daemon.sh start zkfc
この構文でを実行すると、次のエラーがスローされるためです。
- name: inicializar estado ZooKeeper HA
command: {{hadoop_version}}/bin/hdfs zkfc -formatZK -nonInteractive
^ here
We could be wrong, but this one looks like it might be an issue with
missing quotes. Always quote template expression brackets when they
start a value. For instance:
with_items:
- {{ foo }}
Should be written as:
with_items:
- "{{ foo }}"
私は使用してみましたが、同じ問題:
- name: Iniciar zkfc
command: "{{ hadoop_version }}"/sbin/hadoop-daemon.sh start zkfc
正しい構文は何ですか?
command
引数の完全な文字列を引用します。
- name: Iniciar zkfc
command: "{{ hadoop_version }}/sbin/hadoop-daemon.sh start zkfc"
構文エラーは、{
で値を開始したためです。次のような変数で値を開始する場合:
command: {{ my_var }}
次に、whole行を引用する必要があります。
command: "{{ my_var }}"
これは、パーサーがYAMLの辞書構文と変数補間を区別できないためです。