2016-08-03 7 views
1

私は、機能に合った役割を果たし、使用するためのベストプラクティスに従いたいと考えています。可能:swarmの役割または2つの役割?

同じコモンを使用するが、使用方法が異なるロールを編成する方法は?ドッカーの群れを設置する例についてこれを説明しましょう。

Docker Swarmは、_master_または_node_としてインストールできます。現在私はswarmロールを持っています。 マスタとノードの両方のタスクを持つmain.ymlを持っています。変数によってのみ、タスクがマスター用であるかノード用であるかが決まります。

私はこれを好まない。変数を持つ代わりに、私はホストリストを使用して、何を言いたいのですか?

  • サーバAは
  • サーバB、サーバC swarm_masterです... swarm_node

ですこれは私が右の二つの異なる役割を、必要があることを意味? 1つはswarm_master、もう1つはswarm_nodeです。どのように私はこれらの2つの役割の間に集団の同じインストールを共有するつもりですか?

答えて

1

あなたが使用することができます。
ホスト:

[swarm-master] 
serverA 
[swarm-nodes] 
serverB 
serverC 

脚本:

--- 
- hosts: swarm-master, swarm-nodes 
    roles: 
    - role: swarm 
     is_master: "{{ 'swarm-master' in group_names }}" 

私はそれはあなたが役割パラメータ/変数の役割を適用割り当てると、脚本を理解することは簡単だと思います。
他の人の中のあなたの役割が、いくつかの変数をチェックしていると推測するのは難しいでしょう。

ロール内でタスクを論理的に構造化するには、条件付きインクルードを使用できます。 ./roles/swarm/task/main.yml:

- include: docker_common.yml 
- include: swarm_master.yml 
    when: is_master 
- include: swarm_node.yml 
    when: not is_master 
+0

私は@knowhyの提案を参照してくださいいけませんか? – igr

+0

彼は彼の答えを削除したと思います。私は私の例を更新しました。 –

+0

1つの質問 - ここにdocker-commonが含まれています。それでドッカーの設置は重要な役割を果たすのではないでしょうか? – igr