すべてを人形にするかどうか?


10

注意:理論的な質問がたくさんあります。

最近、私はPuppet(および同様のシステム)について読んでいます。これは、私が信じているように、私の作業を非常に簡単にすることができます。しかし、私が「操り人形」にできるすべてのことを理解しようと試みますが、残念ながらできません。「クラウド」またはHAクラスターを想像できます。ここで、より多くのサーバー上の同じ構成です。しかし、ワークステーションはどうですか?1台のPC(centosとkvm)、1台のノートブック(fedora)、およびパーソナルサーバーを持っていますが、パペット化できますか(またはすべきですか)。(不利な点)とは何ですか?または、私たちの会社には何百ものサーバー(主にセントーソ)がありますが、それぞれのサーバーは少し異なります。1つの場所に多くの構成を配置する方が良いかどうかを判断できません。このトピックに関するあなたの意見やリンクを喜んで提供します。


私はあなたのWindowsシステムのいずれかを「パペット化」しようとしないことをお勧めします。ああ、また、ここでどのような質問をするべきかについてのFAQ読んでください
HopelessN00b 2012年

7
パペットするものの量、およびパペットがどれだけ持っているかは、あなたのために行われているタスクに関心がある量に正比例するはずです。小さく始めて、ntp構成またはrsyslogを操り人形にします。次に、必要に応じて、必要に応じて、そこからビルドします。
Sirex 2012年

1
あなたはすでに私の場所にたくさんのサーバーを持っているので、私の提案は、すべての単一のシステムに共通するビットから簡単に始め、時間のあるときにもっと具体的な詳細に取り掛かることです。
Zoredache 2012年

1
Puppetの最近のバージョンでは、Windowsサポートが劇的に改善されています。Puppetで何百ものWindowsノードを管理しています。POSIXノードでのPuppetの方がはるかに簡単で強力ですが、Windowsで少なくともいくつかのことにPuppetを使用すると非常に便利です。
czervik 2012年

回答:


16

環境全体を操り上げることができる度合いは、いくつかの変数に依存します。

  • オートメーションスタッフがすべてのオートメーションを作成する意欲。少し。事。
  • 「私はこれを1つだけ変更します。とにかく1回限りです」という文化的条件付けは、「この人形マニフェストでこれを1つだけ変更し、今すぐ適用します。これは1回限りです。 」
  • 環境における不均一性の程度。

パペット化できるすべての**********をパペット化することは間違いなく可能ですが、そこに到達するには、パペット可能なデバイスに触れることができるすべての人から適切な文化と賛同が必要です。ワークステーションなどの一部のデバイスは、そのような方法で管理することが基本的に難しく、人形はステージングツールとして、構成管理エンジンよりも優れています。

ほとんどすべて同じことをしているVMのフリートを管理している場合、Puppetは素晴らしいです。完全な勝利であり、そこに到達するための多くの努力ではありません。

スペクトルの反対側では、最後の仕事で私が持っていたものを手に入れました。それは、130以上のサービスを提供する200以上のサーバーと、複数のマシンでそれを実行するそれらの小さなグループだけでした。そのようなことをやっつけた企業(そして大学)は絶対にありますが、それは多くの努力と多くの賛同を必要とします。それはあなたの新しいマシン展開プロセスの最初のステップは、する必要がありません「OSをインストールする」ことが、「マニフェストを作成します」。

最終的には、ITスタッフ全員の間で解決しなければならない努力と効率の文化的な問題です。


13

すべてのものをパペット

すべてのシステム(またはそれらのサブセット)全体で合理的に類似しているもの、またはテンプレートから抜け出せるという事実に基づいて作成できるものfacterは、公正なゲームです。

本当にユニークなものはおそらく気にすべきではなく、ファイルバケットから構成を提供するだけです。

どちらのカテゴリーにも当てはまるのは、あなたの環境をよく知らない限り私たちが下すことのできない決定です。


6

他の人がその理由をカバーしていると思うので、私はその方法を試します。誰かがPuppetを使ってあなたが望むことをする方法を理解することで、決定がより明確になると思います。

最初に基本的なケースを実行します

ApacheのPuppetモジュールは、デフォルトではあまり機能しません。Apacheをインストールし、最小限の標準に設定して、サービスを開始します。サポートする必要があるすべてのディストリビューションでこれを機能させます。

2番目に柔軟性を追加

仮想ホストを追加する必要があります。必要に応じて、conf.dまたはvhosts.d /ディレクトリのセットからファイルをドロップしたり削除したりできるシステムになります。モジュールの有効化または構成についても同様です。

役割またはホストグループクラスを使用して、ビルディングブロックを結合します。

Puppetを使用する最良の方法は、Puppetを確実に追加することです。上記の例を使用すると、次のことを行うモジュールが必要です

  1. Apacheをインストールする
  2. 基本構成を設定する
  3. Apacheにvhostsを追加する
  4. 追加の設定を構成します
  5. Apacheを起動する

特定のホストまたはグループに必要なことを実行するためにデフォルトのApacheモジュールをオーバーロードするのではなく、これを処理する必要があるのはロールまたはホストグループクラスです。

class role::web_cust1 {
  include apache
  apache::vhost {'www.domain.com': }
  apache::vhost {'www.domain2.com': priority => '99', }
  include php
  include php-fpm
  include mysql
}

再び添加剤。

Hieraに特別なケースを置く

私は、Puppet's Hieraに、Puppetのデータベースとして考え、特別なビットを保存させることの大ファンです。特定のホストまたはホストグループに特別な設定が必要な場合は、通常のユーザーがそのことを知る必要がないように、最初に適切なデフォルトをモジュールに配置します。次に、それらの特別なホストまたはホストグループのデータを挿入して、Hieraがデータを消費できるようにし、必要に応じてPuppetに渡します。

私のユースケースはリスニングポートです。一部のサーバーには、その前にワニスまたはハプロキシがあります。デフォルトでは、PuppetモジュールはApacheがポート80を使用しますが、Hieraがデータを見つけると、そのデフォルトを上書きします。


私はロールモジュール階層を使用してきましたが、うまく機能します。多くのサーバーが多くの役割を果たしているような環境を構築するのが簡単になります(つまり、一部のrole :: webサーバーはrole :: storageでもあるかもしれません)。
アンディ・シン

5

私は現在、PuppetizeとPuppetize Everythingにかなり類似したシステム間の移行段階にあり、長期的には、Puppetize Allの方が優れたアプローチであると確信しています。

Puppetマニフェストをバージョン管理する場合(私たちは皆、これを正しく行います)、インフラストラクチャのバージョン管理のすべての利点を得ることができます。あなたのチームは運用エンジニアになります。これは、均質な牛農場と同様に、特別な1回限りのシステムにとって重要です。誰が何かを変更したか、誰が変更したか、正確な変更は何か、変更をロールバックする機能のログを取得します。

個人的には、Puppetを使用してすべての変更を強制的に行うと、変更についてより慎重に考えることができることもわかります。私がマニフェストを書いているとき、私は通常、コマンドラインでハッキングするよりも、それぞれの変更により注意を払っています。

Puppetモジュールも改善されます。複数のNginxモジュールがありますか?たぶん、それはあなたのNginxモジュールがそれほど優れていないことを意味し、あなたはあなたの特別なニーズをすべて処理するのに十分柔軟にする必要があります。「カスタム」モジュール用に拡張するコアNginxモジュールに類似点を少なくとも抽象化します。

さらに、災害が発生したときに、すべての特別なニーズのサーバーを(構成に関して)現在の状態に復元できるとどの程度自信がありますか?工場のUbuntuサーバーを内部Wikiに取り込むために必要なすべての変更がパペット化されている場合、ボブによる昨日のTomcatメモリー調整を含めて、Wikiの現在の状態を簡単に再構築できます。

最後に、これは本当に難しい場合があります。多くの非常に異なるサーバーを管理することは、時間をかけて物事を正しく行わないと、ハッカスティックなPuppetコードにつながる可能性があります。Puppet Enterpriseを使用していない場合は、データをマニフェストから分離するためにhieraやForemanなどのENCを検討してください。毎日何か他のものを操り人形にしてください。Puppetでこれがどのように機能するかを説明しながら、同僚にドライブしてもらいます。それぞれの変更が簡単になります。

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