web-dev-qa-db-ja.com

ネットワーク化されていない環境にはどのような構成管理ソリューションが存在しますか?

私のサーバーは外部ネットワーク接続のない環境に存在するため(これは要件です)、更新を展開するときは、すべてのパッケージ、バイナリ、構成ファイルなどを配信されたメディアに含める必要があります。そしてもちろん、インストールされているものとインストールされていないものを区別できるように、何らかの構成管理が必要です。

ですから、この種の環境に対処するために、chef、puppet、またはその他の構成管理タイプのツールの経験があるのではないかと思いました。最悪の場合、更新をRPMとしてデプロイします。

編集:

私のセットアップには、LinuxサーバーとWindowsサーバーの両方があります。

5
Rob Spieldenner

私は個人的にPuppetを使用しましたが、cfEngineはどちらもこの種のタスクに適したツールであることがわかり、現在この分野の主要なプレーヤーであると信じています。 Puppetは、スケーリングを開始するときにもう少し注意が必要ですが、構文は優れています。cfEngineは適切にスケーリングしますが、ブードゥーを学習するのに少し時間がかかる場合があります。外部ネットワーク接続に制御可能な他のサーバーが含まれていない場合、どちらもマスターサーバーに到達できない場合、独自のマスターサーバーである場合、またはオンデマンドでのみ実行できる場合に、カタログ/構成をキャッシュできます。両方ともネットワークなしの要件を処理する必要があります。内部で管理されているサーバーにアクセスしても問題がない場合、これは間違いなく問題ではありません。

私が一緒に仕事をしている人はbcfg2を誓いますが、私はそれを使って仕事をしていません。私たちは現在、私の職場でPuppetを使用しています。

それぞれに長所と短所があり、選択は他の要件に大きく依存する必要があります。あなたが持っているより一般的でより曖昧なオプションの基本的な要約については ここ を見てください。

3
mark

セキュリティ上の理由から、オフライン環境で大量のサーバーが実行されていると想定しています(これらの理由はますます一般的になっています)。私自身も非常によく似た状況に遭遇しました。質問に対する本当の答えは、アーキテクチャがどのように見えるかによって異なります。

すべての通常のプレーヤー(Chef、Puppet、CF-Engine、Salt、Annsible)はすべてオフライン環境で動作しますが、通常は動作しない特定のものが邪魔になります(たとえば、フォージからの人形の自動ダウンロードモジュール要件が勝ちました)動作しません)。ただし、使用しているソフトウェアのバージョンに応じて、回避策があります。 Puppetの場合(v3を使用している場合)、問題を軽減するためにr10kを使用することをお勧めします(v4にはそれが含まれていると思います)。

@Davidが人形について言ったことも非常に良いアドバイスです。今、あなたが何を使っているかに関係なく、私が見つけた次のことはあなたの人生をとても楽にすることを提案します:-

  • データを構成にハードコーディングしないようにしてください(つまり、使用しているpuppetがhieraを使用している場合)。
  • ネットワーク環境でできるだけ多くの開発を行います(そうすれば、開発時に依存関係の問題について心配する必要がなくなります。
  • ほとんどのシステムでクライアントサーバーモードを使用できる場合は、ローカル実行モードによって複雑さが増すため、回避できない場合は問題になります。
  • (Chef/Puppet)ローカルリポジトリサーバーがある場合は、インターネット接続の代わりにクックブック/モジュールを提供するように設定できるかどうかを確認します(Mavenの場合と同様)。

Windowsの観点から(最近のバージョンを使用していると仮定して)、Windows DSC + Powershellの使用を検討してください。少なくともChefとPuppetには、Windowsコンポーネント(およびPowershellで実行できるその他すべて)を構成するために対話できるクックブック/モジュールがあります。 )。

これが「他の」決定要因の1つだったので、それが私自身の質問に対する私の答えを見るのに役立つなら ここ

一般に、各ツールを自分のニーズに照らして評価しますが、ほとんどの場合、問題を軽減するコミュニティソリューションがいくつかあるように思われます。

1
Bicker x 2

Saltを使用すると、パッケージに別の場所を提供できます。

mypkgs:
  pkg.installed:
    - sources:
      - foo: salt://rpms/foo.rpm
      - bar: http://somesite.org/bar.rpm
      - baz: ftp://someothersite.org/baz.rpm
      - qux: /minion/path/to/qux.rpm

この例では、これらのパッケージは指定された場所からインストールされます。

  • fooはSaltファイルサーバーのrpmからインストールされます
  • バーはhttpの場所からインストールされます
  • bazはftpの場所からインストールされます
  • quxはローカルファイルシステムからインストールされます
0
Utah_Dave

最近、マスターサーバーを使用できないリモート環境で、切断されたPuppetを試してみました。特に、 この記事 は私にとって役に立ちました。Puppetルートに行くことにした場合は、おそらく一見の価値があります。

/ etc/puppetの下に通常のPuppet構造を設定してから、手動でpuppetを実行できます。これまでのところ、マスターなしでロギングとレポートがどれほど優れているかはわかりませんでした。

これは、開発/テスト中の私の親友です。

puppet -d -v --modulepath=/etc/puppet/modules /etc/puppet/manifests/site.pp
0
David