Dockerと一緒にPuppetを使用する理由はありますか?


16

しばらく前にDevOpsのOpsの一部を試しましたが、とても楽しかったのですが、どのプロジェクトでも試してみる時間と理由がありません。しかし先週、私は新しい仕事を始めました。そこで上司は、会社のプロジェクトのステージング環境のようなものを作るためにサーバーを構成できるかどうか尋ねました。それと並行して、プロジェクトを移行することを、開発者だけでなく、より多くのDevOpsに移行することを考え始めました。

私はDockerを開発しました。これは私にとって非常に簡単で非常に簡単です。しかし、しばらく前に私はPuppetを試していたので、「DockerでPuppetを使用する理由はありますか?」Dockerは、Puppetが行うすべてのことを実行しているようですが、簡単な方法で実行しています。

PS しばらく前にHacker NewsにConsulがありました。これは素晴らしい設定とサービスの発見であり、設定でさえ解決できます(そして、私もこれを実装することを考えています)。

回答:


18

Puppetとdockerは多くの同じことを実行できますが、異なる方法でアプローチします。

Puppetはファイル+パッケージ+サービスを管理します。(三連と呼ばれる)。Dockerは、コンテナ内にバイナリと構成ファイルをカプセル化します。

この記事の執筆時点では、dockerはまだ不安定であり、実稼働環境では使用しないでください。APIの多くは、バージョン1.0がリリースされるまで変更される可能性があります。

Dockerが安定したとしても、すべてのプロセスと構成ファイルをdockerコンテナーに変換するのは大仕事です。

一方、Puppetは安定した製品であり、ツールのエコシステム全体(heira、mcollective、facter、razor)が付属しています。これらのツールは、破損を心配することなく、迅速に実装できます。

次のリソースを強くお勧めします。

パペットでアプリケーションスタックを管理する方法のビデオ
https://www.youtube.com/watch?v=KSo_mcJxFIA

ドッカーとパペットがどのように連携するかについてのポッドキャスト
http://devopscafe.org/show/2014/1/23/devops-cafe-episode-46.html

dockerとの統合方法に関するpuppetブログ記事
http://puppetlabs.com/blog/building-puppet-based-applications-inside-docker

http://puppetlabs.com/blog/can-containers-and-configuration-management-co-existが共存するパペットとドッカーに関する別のブログ記事

dockerと対話するためのpuppetモジュール
http://docs.docker.io/use/puppet/

devopsの用語に関する若干の修正。Devopsは、特定のツールよりも、開発者と運用が協力するソフトウェア開発手法です。

更新

現在、私の会社はパペットとドッカーの両方を使用しています。puppet conf 2014でパペットとdockerを使用する理由を説明した素晴らしいプレゼンテーションがあります。人形劇の元雇用主であり、ドッキングブックの著者であるジェームズターンブルによって与えられました。

https://puppetlabs.com/presentations/using-docker-puppet-james-turnbull-kickstarter

また、sysadmincasts.comから提供されたdockerに関する短いビデオチュートリアルもあります。

https://sysadmincasts.com/episodes/31-introduction-to-docker

Dockerの長所:

  • インスタンスをすばやくスピンアップできます
  • 人形よりも学びやすい
  • 簡単にダウンタイムなし

Dockerの短所:

  • devicemapperバックエンドを使用する場合、コンテナには10GBの制限があります
  • コンテナの再構築には、小さな構成変更に長い時間がかかります
  • hub.docker.com、quay.ioなどのdockerレジストリを使用するには費用がかかります(セルフホストのdockerレジストリは非常にバグが多く、GUIがありません)
  • 適切な初期化システムがありません。一部のアプリケーションはうまく動作しません。
  • ネットワークをきめ細かく制御しない
  • サブシェルを必要とするアプリケーション(RVM + ruby​​を見る)は、適切に動作するために非常に注意が必要です。
  • Windowsホストを管理できず、SLESやその他のあまり人気のないオペレーティングシステムは管理できません
  • 現在、Dockerオーケストレーションは非常に若いです。
  • 現在、ビルド時に/etc/resolv.confを設定できません
  • ホストのlocaltimeおよびurandomディレクトリにマップするために/ etc / localtimeおよび/ dev / urandomをマウントする必要があるさまざまなバグ。
  • パフォーマンスはそれほど速くありません(dockerはベアメタルの速度の99%であるという主張にもかかわらず、他のマシンよりも30%遅い場合があります)。
  • 小さいコンテナにはまだ数百メガバイトのオーバーヘッドがあります。コンテナはすべて数ギガバイトです。

パペットの長所:

  • 拡張が簡単
  • 既存のサーバー(windows、linux、sles)で動作します
  • 小さな変更をすばやく行う
  • 他のパペットユーザーとモジュールの強力なコミュニティ
  • すべてのプラットフォームにパッケージをインストールするための標準化されたAPI

人形の短所:

  • 大規模なインフラストラクチャは非常に複雑になります
  • 条件付きモジュールの依存関係により、spagettiコードが作成されます
  • より重い

現在、パッカーを使用して、Dockerコンテナをプロビジョニングしています。Dockerコンテナはjenkinsビルドに使用され、各ビルド後に破棄されます。それはうまく機能し、一貫した環境を提供します。つまり、コードを1回記述するだけで、ubuntu、sles、centosの両方のマシンを再構築するだけで済みます。コンテナの再構築には約15〜30分かかりますが、それでも手動プロセスです。Dockerは、クイックテストVMの起動に最適です。

つまり、Puppetは既存のインフラストラクチャの管理に優れています。Dockerは、100%linuxのグリーンフィールドがあり、小さな一時的なインスタンスで囲むことができるテクノロジースタックがある場合に適しています。一部の機能は重複していますが、相互に排他的ではありません。


5
この答えは主観的で投機的であることがわかりました。Dockerが高レベルで同じ目的のためのよりシンプルなツールであると思われる場合、なぜDockerと一緒に/一緒にPuppetを使い続けることができるのか、それが本当に答えになるとは思いません。
8ビットジャンキー

1
@ 7SpecialGemsより多くの事実で更新されました。
スパーダー

1
世界で2015とどのように物事が変更されているこの回答の評価を確認するために素晴らしいことだ
オリバーベイズシェルトン

質問/回答は2019年でも相対的ですか?何が変わったのでしょうか?
メリーランドアブタヘル。

2

Dockerは、コンテナのプロビジョニングと初期設定を支援しますが、コンテナの初期化時に1回限りのコマンドを実行します。

Puppetは、デーモンとして実行すると最も強力になり、指定したとおりに構成が維持されるようになります。たとえば、サービスの実行が停止すると、Puppetは再起動します。

(正しく設計された)パペット構成マニフェストの最も優れている点の1つは、それらがべき等であることです。それはあなたが行きたい状態を記述することになっていて、必ずしもそこに到達するためのステップではありません。

また、構成の抽象化とパラメータ化が可能になり、1つのサーバーまたはコンテナーで作成されたパラメーターエクスポートし、別のサーバーまたはコンテナーで使用できます(監視アプリケーションのノードホスト名のリストの収集など)。

私は間違いなく、異なるが関連する目的に役立つと思います。現在、既存のパペットマニフェストを使用して、コンテナの構成を開始し、開発環境を本番環境に近づけようとしているところです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.