構成管理ツールと配備ツールは初めてのことです。私は今までに手に入れたことのない最も興味深いプロジェクトの1つとして、Continuous Delivery/Continuous Deploymentツールを実装する必要があります。Continuous Delivery/Continuous Deploymentを実装するためにDockerとAnsibleがどのように適合するか
まず、個別に、私はAWS
で快適で、私はAnsible
が何であるか、その背後にある論理とその目的を知っています。私はDocker
の理解のレベルが同じではありませんが、私はその考えを持っていました。私は多くのインターネットリソースを使いましたが、大きなイメージを得ることはできません。
私が苦労してきたのは、彼らがどのように一緒にフィットするかです。 Ansible
を使用して、自分のインフラストラクチャをコードとして管理できます。ビルドEC2
インスタンス、パッケージをインストール...私は、コードを引っ張って、設定ファイルを修正し、Webサーバーを起動することによって、完全なアプリケーションを配備することさえできます。 Docker
は、それ自体、アプリケーションをパッケージ化し、どこに配置してもアプリケーションを実行できるツールです。
私の問題は、次のとおりです。
はどのようにドッカー(またはAnsibleとドッカー)は、継続的インテグレーションプロセスを拡張しません!?
ソースコードリポジトリがあると仮定すると、チームメンバーは機能の作業を終了し、作業を進めます。 Jenkinsはこれを検出し、すべての受入れ/ユニット/統合テストスイートを実行し、すべてが合格した場合は安定したビルドとして宣言します。ドッカーがここにいかにフィットするか?私はチームが自分の仕事をプッシュしたとき、ジェンキンスはアプリケーション内でコード化されたDockerファイルソースを取得し、アプリケーションのイメージを構築し、コンテナを起動し、それに対してすべてのテストを実行しなければならないか、すべてがうまくいけば、DockerファイルからDockerイメージを作成し、それを私有の場所に保存しますか? ジェンキンスは、例えばx.y.zを使って最終画像にタグを付けるべきですか?
ドッカーコンテナの構成:
は異なる環境に同じ画像を展開処理する方法を、我々はどこかに格納されJenkins
によって構築された画像があると仮定し、さらに、異なる構成パラメータ(バーチャルホストの設定、DBホスト、キューURL、S3エンドポイントなど)Docker
の原則を破ることなくこの問題に対処する最も柔軟な方法は何ですか?これらの設定は、ビルドを開始したとき、またはそれに基づくコンテナが開始されたときに画像に反映されますか?
Ansibleとドッカー:
Ansible
はDocker
コンテナを管理するDocker
モジュールを提供します。私が上記の問題を解決したと仮定すると、新しいバージョンのx.t.zを自分のアプリケーションに配備したいときに、Ansible
に保存されている場所から画像を取得してアプリのコンテナを起動するよう指示します。 AnsibleはDockerイメージを実行する前にDockerイメージにログインする必要があります(これは私にとっては狂ったようです)。そして、Jinja2テンプレートを古典的なホストと同じ方法で使用しますか?そうでない場合は、どうやって処理するのですか?
長い質問だった場合や、何か間違えている場合は、私の考えを大声でお知らせします。私は過去2週間ブロックされており、正しいワークフローを把握することができません。今後の読者の参考にしたいと思っています。
これは一般的なワークフローのように見えるので、経験とソリューションを読むことは非常に役立ちます。 ありがとうございます。どんな助けも大歓迎です。
Ansible + Docker ==マジック!ここにはすばらしいブログ記事があります:https://developer.rackspace.com/blog/ansible-and-docker/そして、Anagers + Docker専用サイトもあります。http://www.ansiblefordevops.com/ – Homer6