web-dev-qa-db-ja.com

Ansible:プレイブックで、コマンドラインを渡さずにタグでロールをフィルターします

Ansible 1.7では、コマンドラインから--tagsを使用して、そのPlaybookタスクのサブセットのみを実行できます。

しかし、タグに一致するタスクのみを使用して一連のロールを実行するために、プレイブックをベイクしたいと思っています。つまり、毎回同じになるので、コマンドライン経由でこれを渡す必要はありません。

最初はこのコマンドだと思っていましたが、これは逆です。これに基づいてタスクをフィルタリングするのではなく、これらのタグでタスクにタグ付けします。

roles:
  - { role: webserver, port: 5000, tags: [ 'web', 'foo' ] }

条件を使用してこれを実装することを想像できますが、タグはこれを達成するためのはるかにエレガントな方法です。

45
Mike Biglan

Ansibleの現在のバージョンでは、次のオプションしかありません。

  1. コマンドラインでタグを指定する
  2. タグの代わりに変数を使用して条件付きでタスクを実行する
  3. ウェブサーバーの役割を複数の役割に分割し、一般的なタスクに役割の依存関係を使用します

この機能リクエスト メーリングリストに数回掲載されています そして、新しい機能として追加されるという開発チームからの兆候は見ていません。

48
jarv

条件を使用すると、ニーズを満たすことができます。

他の人の同様の質問に対する私の答え here で詳細を見ることができます。

0
Ava