2016-04-14 10 views
0

私は4つのプレイブックを持っています。 2人がターゲットマシンにサービスを展開しており、2人がターゲットマシンにサービスを展開しています。 今私はそれらを役割に入れたいと思います。しかし、ベストプラクティスが何であるか分かりません。
2つのデプロイメントプレイブックは、異なる変数とテンプレートのみで全く同じことを行っています。削除するプレイブックにも同じことが適用されます。アシスタント:ロールのタスク構造

気圧私の構造は次のようになります。

ansible.cfg 
ssh_key 
inventoryfile 
group_vars 
    .... 
roles 
    deployservicegroupA 
     vars 
      ... 
     templates 
      ... 
     tasks 
      main.yml (this file simply includes the two tasks right below) 
      copy-service-templates.yml 
      start-services.yml 
    deployservicegroupB 
     vars 
      ... 
     templates 
      ... 
     tasks 
      main.yml (this file simply includes the two tasks right below) 
      copy-service-templates.yml 
      start-services.yml 
    removeservicegroupA 
     vars 
      ... 
     templates 
      ... 
     tasks 
      main.yml (this file simply includes the two tasks right below) 
      remove-services.yml 
      cleanup.yml 
    removeservicegroupB 
     vars 
      ... 
     templates 
      ... 
     tasks 
      main.yml (this file simply includes the two tasks right below) 
      remove-services.yml 
      cleanup.yml 

は、彼らは道それがユーザーによって行われることを意図していた、このですか?
私は、まったく同じことをする私の仕事については特に疑問がありますが、異なる役割で見つけることができます。また、main.ymlタスクファイルに自分のタスクを含める必要がある場合もあります。

+0

異なるグループまたは単一のグループ(展開または削除)でロールを実行していますか? – shaps

+0

すべてのサービスが、どのマシンにデプロイする必要があるかを指定するグループがあります。 – Forivin

答えて

2

コメントごとにサービスごとにグループを使用していますので、group_varsを使用して、使用する変数を指定することができます。

次に、ロールを結合することができます。実行するグ​​ループに基づいて特定のテンプレートを読み込むだけです。

+0

サービスはお互いに何の関係もないにもかかわらず、複数のロールではなく1つのロールを使用することをお勧めしますか? – Forivin

+0

私がここで意味するのは、これがオプションであるということです。私はスタンドアローンエンティティ(あなたが望むならばサービス)としての役割を見ているので、(たとえあなたが同じことをしていても)異なるサービスに異なる役割を持たせるのは理にかなっています。あなたが2倍の役割を維持しなければならないという事実が気になるなら、両方のサービスに対応できるより一般的な役割を1つ使用することを止めるものはありません – shaps

+0

まあ、私はちょうどもっとタスクを定義する方法があると思っています複数のロールがそれを利用できるようにグローバルに(プログラミングのライブラリのように)それが "ベストプラクティス"に収まるかどうかは分かりません。 – Forivin