私はこれが本当にまっすぐなはずだと思っていますが、私は危険な文書やその他の答えをここに注いできました。作曲者のルーピングが不可能な仕事を必要とする
私がしたいのは、可能なコンポーザーオブジェクトを使用してcomposer require
ステートメントで使用するコンポーザーパッケージの配列またはリストをセットアップすることです。
だから、私はモジュールを定義するので、のようなset fact
を持っている:
- name: Define modules to be required
set_fact:
modules:
- vendor1/package1
- vendor2/package2
- vendorN/packageN
それは(それは甘いだろう簡単にアクセスして編集可能ですので、私は私のansibleプロジェクトのトップでこれを入れていますyamlファイルのパッケージをvarsとして単純に定義する方法を理解してから、set_fact
を使用してください)
これを念頭に置いて、私はプロジェクトで役割を持っています私がこれらのそれぞれを必要としたい作曲家の仕事で:
- name: "Require packages"
composer:
command: require
arguments: {{ modules_to_be_required }}
working_dir: "{{ app['directory'] }}"
もともと、私はこれがそうのようwith_items
を使用していた:
- name: "Require packages"
composer:
command: require
arguments: "{{ item }}"
working_dir: "{{ app['directory'] }}"
with_items
- vendor1/package1
- vendor2/package2
- vendorN/packageN
これは動作しません。ただし、with_items
の各反復が実行されるまでには、composer update
が実行されますが、時間がかかりすぎます。私にとっては、必要なパッケージのリストを空白で区切られた文字列に変換し、それを引数として渡す方が理にかなっています。私の研究では
私はjoin
フィルタを文字列にリストを変換できることがわかったので、私はこれを試してみました:
- name: "Require packages"
composer:
command: require
arguments: {{ modules | join(" ") }}
working_dir: "{{ app['directory'] }}"
しかし、これは私のYAML構文エラーを与える:
The offending line appears to be:
command: require
arguments: {{ modules | join(" ") }}
^here
私は"{{ modules | join(" ") }}"
をラップしようとしましたが、かっこ内の引用符については怒鳴ります。
私は正しい方法でこのアイデアに近づいていますか、または答えに到達するためにどのような質問をする必要がありますか?どんな指導も高く評価されます。
これは素晴らしいです、詳細な説明に感謝します。 –