Puppet、Chef、またはAnsibleがパッケージマネージャよりも単純なソリューションの場合

Puppet、Chef、またはAnsibleがパッケージマネージャよりも単純なソリューションの場合

上記の展開および設定ツールを初めて使用します。通常、ターゲットコンピュータにカスタムおよび構成されたネットワークサーバー(リバースプロキシ、データベース、解釈された言語に必要なランタイムなど)をインストールしてアップグレードする必要があります。

私のディストリビューションにはすでに動作しているパッケージマネージャがあります。事前設定されたソフトウェアを含む独自のパッケージを作成および展開し、SSHを介してインストール/アップグレードできます。

このソリューションが十分ではないと予想し、言及されたツールを選択する必要があるのはどこですか?

答え1

パッケージマネージャは決して設定管理を置き換えません。構成管理システムは、基本パッケージ・マネージャーとの対話を処理できます。パッケージに構成を適用する場合 a) すべてのサーバーが同じ構成を持つことを意図し、b) その構成に外部データが必要ない場合にのみ十分です。

基本インフラストラクチャを見てみましょう。内部Webアプリケーションがありますが、Webサーバーを使用してチケット追跡ソフトウェア(Redmineなど)を実行することもできます。内部WebアプリケーションはPHPで書かれていますが、RedmineはRubyアプリケーションです。これら2つの異なるWebアプリケーションは、異なるApache構成を持っています。構成をパッケージ化する場合は、apache-internalやapache-redmineなど、競合する2つのApacheパッケージをビルドする必要があります。この状況がどのようにすばやく管理できなくなるのかを簡単に確認できます。

人形マニフェストでこれがどのように見えるかを見てみましょう。

# internal PHP application
class { apache: }
# uses your OS package manager to install PHP
class {'::apache::mod::php':
  package_name => "php54-php",
  path         => "${::apache::params::lib_path}/libphp54-php5.so",
}

# redmine
class { apache: }
# uses your OS package manager to install mod_passenger
class { apache::mod::passenger: }
apache::vhost { $::fqdn:
  docroot     => '/path/to/directory',
  directories => [
    { path              => '/path/to/directory',
      passenger_enabled => 'on',
    },
  ],
}   

もう1つの基本的な例は、インフラストラクチャにさまざまな環境があることです。パッケージマネージャの静的構成を使用してテンプレート構成ファイルを実行することはできません。開発環境と本番環境がある場合は、テンプレートを使用してアプリケーションが正しいデータソース(データベースなど)または特定の環境に接続するように指示する構成を作成できます。

最後に、カスタムリポジトリを追加し、各ホストに正しいパッケージをインストールする人は誰ですか?これはより不要なメンテナンスであり、構成管理によって解決されます。

答え2

私は会社内で人形を使用する実際の例であるJordanmのコメントに同意します。インフラ全体がCentosに基づいているため、ローカルyumリポジトリがあるということです。最初から新しいサーバーを構築するときは、事前設定されたマニフェストを選択してサーバーを構築できます。たとえば、ライトスタックである可能性があるため、Puppetはすべての正しいアプリケーションが存在することを確認するために必要なすべてのRPMをインストールします。ただし、不要なシステムサービスの削除、設定の変更、iptableルールの展開、管理者アカウントのインストール、プロキシルールの設定などのタスクも実行します。私が実行するすべてのシステムの変更は、操り人形を介して行われるので、再度変更することを忘れません。

ご覧のとおり、puppetはパッケージ管理だけではなく、ユーザーの対話なしにサーバー全体を構築できます。ハードウェアがクラッシュした場合は、新しいコピーを作成するのにどれだけの時間と労力が必要かを考えてください。

関連情報