2
Ansibleでデプロイメントを構築する3つのソリューション?
私は現在新製品を展開しており、プレイブックとロールを構成するためにいくつかの問題に遭遇しました。私は3つの異なる解決策を持っていますが、どのパスが最適であるかを入力してもらいたいと思っています。 製品は、Windowsサーバー上のWebアプリケーションです。展開するには、次の手順が必要です(高レベル)。 javajdkをインストールする Tomcatをインストールする win_serviceをインストールする Java regkesを構成する Tomcatを構成する webappをインストールする サービスを開始 私はprodとステージング、group_vars、ロール(ansible-galaxyで作成)に静的インベントリを使用しているため、何らかの構造があります。 解決策1 すべてを1つの巨大なハンドブックにまとめます。これはうまく聞こえませんが、以前のインストールからの変数を知っているという利点があります。たとえばtomcat、どこにあるかを知る必要がJAVA_HOMEあります...それは、javajdkインストールにあったのJAVA_HOMEです。 解決策2 すべてを小さな役割に分割します。良さそうですが、役割は互いに独立している必要があります。タスクを分離する方法は見つかりませんでした。それは感覚などのための単一の役割を持つことになるだろうinstall_tomcat、config_tomcatと順番に言及した役割を持って脚本を設定しますか? しかし、ある役割はどのようにして知るのでしょうか。たとえば、次の役割で必要とされるパス名などです。->インストールはパスを設定します、configは知る必要があります。私は役割を独立させることが本当にわかりません。 ソリューション3ソリューションの 種類2.役割のみを含み、できるだけ役割に分割したメインプレイブックを用意します。独立変数名を持っている./roles/vars/main.yml どういうわけか(?)は、必要varなすべての定義が適用される、プレイブックの変数の優先順位の高い場所を見つけます。内部的には、変数をロールにパスするか、単にロール変数を無効にします。 たとえば、製品にサービスがある場合、サービス名は通常、のパス名の一部ですtomcat。tomcat名前は、サービスに依存してはならないので、そこにあるべきtomcat_install_path役割でもservice_name製品と。したがって、製品のプレイブックがサービス名と呼ばれる場合、サービス名は名前の一部でtomcat_installある必要があります。これは、完全に異なる展開で呼び出され、サービス名をいじる必要はありません。 私はソリューション3を使用しますが、それを設定する方法をまだ見つけていません。専門家の意見は何ですか、ソリューション3は実行可能ですか、もう1つはより優れていますか、それとも4番目のソリューションがありますか?