2

ファイルが存在する場合、ファイルを条件付きで Ansible play に含める方法を探しています。ファイルが存在しない場合、残念ながら「include」を使用すると致命的なエラーがスローされます。一連のパッケージをループしてインストールしていますが、各パッケージのオプションの構成ファイルを確認したいと考えています。以下の簡単な例を参照してください。

---
- name: Basic setup of an Ubuntu box
  hosts: all
  vars:
    packages:
      - ack-grep
      - vim
      - zsh
      - htop
      - openssh-server
      - cowsay
  tasks:
    - name: Run package configuration
      action: apt name=$item
      include: "packages/${item}.yml"
      with_items: $packages

スクリプトが存在しないファイルをインクルードしようとすると、すぐにエラーで停止します。私は間違った方法で何かをしようとしているだけだと確信していますが、何時間もこれに取り組んでいて、考えられることはすべて試しましたが、結果はありません.

4

4 に答える 4

5

https://github.com/ansible/ansible/issues/2726で説明されているように、これを行うべきではありません。このコメントを特に見てください。

そう include + with_items は人々が使うべきものではありません。

文書化すべきではありませんでした。

変数に特定の構造があることは理解していますが、タスク内で with_items を使用することをお勧めします。

インベントリ変数では機能しないため、代わりにタスク/ロールにループを配置する必要があります。

Ansible 1.5 でもサポートされていません。実行しようとすると、次のエラーが発生します。

エラー: [非推奨]: include + with_items は削除された非推奨の機能です。プレイブックを更新してください。Ansible は正常に完了できませんでした。エラー出力は上に表示されます。これらのエラーを修正して、もう一度お試しください。

プレイブックに他の変数とタスクを含める最良の方法は、ロールを使用することです。http://docs.ansible.com/playbooks_roles.html#task-include-files-and-encouraging-reuseをご覧ください

于 2014-03-13T01:54:04.350 に答える