Ubuntu前書きインフラストラクチャの要件が拡大するにつれて、各サーバーを手動で管理することがますます困難なタスクになります。この問題は、ノードに障害が発生した場合や水平スケーリングが必要な場合に必要になる再現性の要件によってさらに悪化します。構成管理ソリューションは、インフラストラクチャ管理をコードベースに変えることで、これらの問題に対処するように設計されています。これらのツールを使用すると、多数のマシンで個別のタスクを実行する代わりに、各コンポーネントが接続、構成をプルダウン、および適用できる中央の場所に要件をコミットできます。Chefコンポーネントの一般的な構造と、管理者の目的を達成するために相互作用する方法。関連する用語について話し、それぞれの部分の責任について話し合いました。このガイドでは、実際のソフトウェアをインストールします。構成手順とノードプロファイリング情報を保存および提供する集中化されたChefサーバーをセットアップします。管理者がコードベースを操作し、インフラストラクチャの特性を変更できるワークステーションをセットアップします。これをフォローアップして、新しいノードをブートストラップし、Chefエコシステムの管理下に置きます。前提条件と目標このガイドでは、Chefのバージョン12を設定します。構成はバージョン間で大幅に異なる場合があるため、最良の結果を得るには、このガイドと同じメジャーバージョン番号内で操作していることを確認してください。GBのRAMが必要であることを示しています。system]も必要です。DigitalOceanドロップレットを使用します。ワークステーションとノードの要件はほとんどありません。14.04を使用します。完了すると、構成データを保存および提供する集中化されたChefサーバーが作成されます。ワークステーションを使用して、変更を加え、サーバーにアップロードし、新しいノードをブートストラップして管理します。このノードは、インフラストラクチャ内の単一サーバーを表します。Chefサーバーを構成するChefサーバーをセットアップすることから始めます。GBのRAMを推奨しているため、それに応じて計画することを忘れないでください。サーバーがホスト名でアクセス可能であることを確認してくださいChefサーバーのインストールを計画しているサーバーにログインしたら、実行する必要がある最初のタスクは、サーバーのホスト名が解決可能な完全修飾ドメイン名(FQDN)またはIPアドレスであることを確認することです。これを確認するには、次のように入力します。-f結果は、サーバーに到達できるアドレスになります。ない場合は、このファイルを編集して、サーバーにアクセスできるドメイン名またはIPアドレスにこれを設定できます。/etc/hostsファイルは次のようになります。.最上行を変更して、完全修飾ドメイン名またはIPアドレスを反映し、その後にホストに使用するスペースとエイリアスを追加します。+`行の最後に変更した情報を追加します。これは次のようになります。localhostしたがって、ドメイン名を持っていない場合、パブリックIPアドレスは「123.123.123.123」であり、ホスト名「chef」でホストにもアクセスできるようにしたい場合は、次のようなファイルを作成できます。」であり、IPアドレスが「+234.234.234.234」の場合、ファイルは次のようになります。chef完了したら、ファイルを保存して閉じます。次のように入力して、値が正しく設定されたことを確認できます。-f結果は、インフラストラクチャのどこからでもChefサーバーに到達するために使用できる値になります。12サーバーソフトウェアをダウンロードします。Chefサイトにアクセスして、インストールする必要のあるパッケージを見つけることができます。[このリンク]をたどることができます。14.04」ヘッダーの下で、ダウンロードリンクを右クリックし、リンクの場所をコピーします。[シェフサーバーダウンロード]サーバーに戻り、ホームディレクトリに移動します。+`コマンドを使用してパッケージをダウンロードします。この記事の執筆後にマイナーバージョンが更新されている場合、コピーしたリンクは以下のものと異なる場合があります。https://web-dl.packagecloud.io/chef/stable/packages/ubuntu/trusty/chef-server-core__amd64.debダウンロードが完了したら、次を入力してパッケージをインストールします。12システムがサーバーにインストールされます。推奨量よりも強力でないハードウェアを備えたサーバーを選択した場合、このステップは失敗する可能性があります。+`コマンドを呼び出して、サーバーを構成するコンポーネントが特定の環境で連携するように設定する必要があります。reconfigure管理者ユーザーと組織を作成する次に、管理ユーザーを作成する必要があります。これは、作成する組織のインフラストラクチャコンポーネントに変更を加えるためのアクセス権を持つユーザー名になります。+`サブコマンドを使用して実行できます。このコマンドでは、作成プロセス中にいくつかのフィールドを渡す必要があります。一般的な構文は次のとおりです。user-createこの情報を含めます。+`管理コマンドを使用して認証するためにこれが必要になります。この例では、次の情報を持つユーザーを作成します。protected]パスワード:examplepassファイル名:admin.pemこの情報を持つユーザーを作成するために必要なコマンドは次のとおりです(情報、特にパスワードを反映するようにこれを変更する必要があります)。+」というプライベートキーが作成されます。+`サブコマンドで組織を作成できます。組織は、Chef内のインフラストラクチャと構成の単なるグループです。コマンドの一般的な構文は次のとおりです。--association_user短い名前は、Chef内から組織を参照するために使用する名前です。長い名前は、組織の実際の名前です。+`は、組織を管理するためのアクセス権を持つユーザー名を指定します。+`フラグを追加します。作成されるキーは、独自のクライアントキーを取得できるまで、組織の一部として新しいクライアントを検証するために使用されます。次の品質を備えた組織を作成します。短縮名:digitaloceanロングネーム:DigitalOcean、Inc.アソシエーションユーザー:管理者ファイル名:digitalocean-validator.pem上記の品質を持つ組織を作成するには、次のコマンドを使用します。`キーファイルが必要です。このサーバーに接続し、これらのキーをワークステーションに一時的にダウンロードする必要があります。今のところ、Chefサーバーのインストールは完了しています。Workstationを構成するChefサーバーが稼働しているので、次のアクションはワークステーションの構成です。実際のインフラストラクチャの調整と構成は、Chefサーバーでは行われません。この作業はワークステーションで行われ、ワークステーションはデータをサーバーにアップロードしてChef環境に影響を与えます。シェフレポのクローンを作成するインフラストラクチャのChef設定は、Chefリポジトリと総称される階層ファイル構造で維持されます。この一般的な構造は、Chefチームが提供するGitHubリポジトリにあります。+」を使用してこのリポジトリをワークステーションに複製し、インフラストラクチャのChefリポジトリの基盤として機能します。+`をインストールする必要があります。次のように入力して、パッケージインデックスを更新し、ツールをインストールします。git`をインストールしたら、Chefリポジトリをマシンに複製できます。このガイドでは、単にホームディレクトリに複製します。+`というディレクトリにプルダウンされます。Repoをバージョン管理下に置くChefリポジトリ内で作成された構成は、コードを管理するのと同じ方法でバージョン管理システム内で最適に管理されます。+`リポジトリはすでに初期化されています。ワークステーションを新しいコミット用に設定するには、いくつかのことを行う必要があります。`がコミットのタグ付けに使用する名前と電子メールを設定します。+`リポジトリがこれらの値を使用するようにします。git`に指示します。このディレクトリを数分で作成して、いくつかの機密情報を保存します。`が他の人に公開されるべきではないデータを保存しないようにすることができます。+`ファイルに変更を加えたので、先に進んでバージョン管理システムへの最初の新しいコミットを行うことができます。最初に、変更されたすべてのファイルを現在のステージング領域に追加します。.次に、変更をコミットします。+`フラグを使用して、行っている変更を記述するインラインコミットメッセージを指定します。control"シェフリポジトリはバージョン管理下にあります。+`リポジトリを最新の状態に保つことができます。Kitをインストールする必要があります。これには、インフラストラクチャの構成を設計するときに役立つ多くのユーティリティが含まれます。+`コマンドで、ChefサーバーとChefクライアントの両方と通信して制御できます。Webサイトで見つけることができます。[こちら]ページに最新のダウンロードリンクが含まれます。14.04でも問題なくインストールできるはずです。kit]ワークステーションに戻り、ホームディレクトリに移動します。+`コマンドを使用してパッケージをダウンロードします。新しい開発キットバージョンがリリースされている場合、コピーしたリンクは以下のものと異なる場合があります。+`パッケージをダウンロードしたら、次のように入力してインストールできます。+`コマンドを使用して、すべてのコンポーネントが期待される場所で利用可能であることを確認できます。verifyワークステーションを主にインフラストラクチャのChefの管理に使用する場合、デフォルトでChefとともにインストールされたRubyのバージョンを使用することができます。+`ファイルを取得して、現在のセッションに適切な環境変数を設定できます。~/.bash_profileRubyのバージョンを個別に管理する場合は、上記の手順をスキップできます。認証キーをワークステーションにダウンロードするこの時点で、ワークステーションには、Chefサーバーと対話し、インフラストラクチャ構成を構成するために必要なすべてのソフトウェアが用意されています。Chefサーバーおよび環境と対話するようにまだ構成されていません。このセクションでは、Chefサーバーで作成した資格情報をダウンロードします。+`ユーティリティを使用して、Chefサーバーで作成したユーザーキーと組織検証キーをダウンロードします。その前に、これらのファイルを保存する隠しディレクトリを作成します。~/chef-repo/.chefChefサーバーへの接続に使用する方法により、キーのダウンロードの正確性が決まります。設定に合った以下の方法に従ってください。+`コマンドが機能します。ワークステーションで、Chefサーバーへの接続に使用するユーザー名とドメイン名またはIPアドレスを指定します。コロン(:)とダウンロードするファイルへのパスを続けてください。+`ユーザーアカウントを使用してChefサーバーにログインすると、コマンドは次のようになります。ドメイン名またはIPアドレスと、ダウンロードしようとしているキーファイルの名前の両方を、環境に合わせて変更することを忘れないでください。~/chef-repo/.chef非rootユーザーを使用してChefサーバーに接続する場合、コマンドは次のようになります。代わりに、SSHキーを使用してChefサーバーに接続する場合(推奨)、いくつかの追加手順を実行する必要があります。ワークステーションとのSSHセッションを終了します。新しいパラメーターで一時的に再接続する必要があります。exitローカルコンピューターに戻ったら、Chefサーバーへの接続に使用するSSHキーをSSHエージェントに追加する必要があります。標準のSSHスイートであるOpenSSHには、次のように入力して起動できるSSHエージェントが含まれています。$(ssh-agent)次のような出力が表示されるはずです(数値は異なる可能性があります)。13881エージェントが起動したら、SSHキーを追加できます。comment)これにより、SSHキーがメモリに保存されます。+`を使用して、接続時にワークステーションに保存されたキーを_forward_できます。これにより、ローカルコンピューターから接続しているかのように、ワークステーションから任意のコンピューターに接続できます。@これで、転送されたSSH認証情報を使用してパスワードを必要とせずにChefサーバーに接続できます。Chefサーバー上のキーがrootユーザーを介して利用可能であった場合、必要なコマンドはこれに似たものになります。必要に応じて、Chefサーバーのドメイン名またはIPアドレスとキー名を忘れずに変更してください。~/chef-repo/.chef代わりにChefサーバー用に設定されたSSHキーを使用して通常のユーザーアカウントへの認証を行う場合、コマンドは次のようになります。`コマンドを設定できます。+`ファイルを通じて行われます。+」というファイルを開きます。~/chef-repo/.chef/knife.rbこのファイルに、次の情報を貼り付けます。["#{current_dir}/../cookbooks"]次の項目は、インフラストラクチャに合わせて調整する必要があります。+`がChefサーバーへの接続に使用する名前を指定します。これはユーザー名と一致する必要があります。*:これは、Chefサーバーからコピーしたユーザーキーの名前とパスである必要があります。+`スニペットを使用してパスを埋めることができます。`が新しいノードをブートストラップするために使用する検証クライアントの名前です。+`と同様に、これにはChefサーバーからコピーした検証キーの名前とパスが含まれます。Rubyスニペットを使用して現在のディレクトリを指定できます。*:これは、ChefサーバーにアクセスできるURLです。」で始まり、その後にChefサーバーのドメイン名またはIPアドレスが続く必要があります。+`を追加して組織へのパスを指定する必要があります。+`ファイルはこれに似ています。従う場合は、サーバーのドメイン名またはIPアドレスを調整する必要があります。+`ファイルを保存して閉じます。`コマンドを試して設定ファイルをテストします。in`ディレクトリにいる必要があります。listこの最初の試行は、次のようなエラーで失敗するはずです。failedこれは、ワークステーションにChefサーバーのSSL証明書がないために発生します。これを取得するには、次のように入力します。+`ディレクトリ内のリストに追加されます。/home/demo/chef-repo/.chef/trusted_certs/server_domain_or_IP.crtSSL証明書が取得されると、前のコマンドが機能するようになります。listdigitalocean-validator上記のコマンドが正しく返される場合、ワークステーションはChef環境を制御するように設定されています。ナイフで新しいノードをブートストラップするChefサーバーとワークステーションを構成したら、Chefを使用してインフラストラクチャ内の新しいサーバーを構成できます。これは、「ブートストラップ」と呼ばれるプロセスを通じて発生します。このプロセスでは、Chefクライアントの実行可能ファイルが新しいコンピューターにインストールされ、組織検証キーも一緒に渡されます。次に、新しいノードは、検証キーを使用してChefサーバーに接続し、代わりに、独自の一意のクライアントキーとそれに割り当てられた構成を受け取ります。このプロセスにより、新しいサーバーが初期状態になり、将来の管理のために設定されます。新しいサーバーに接続するには、新しいノードに関するいくつかの情報が必要です。到達可能なドメイン名またはIPアドレス管理アクションを完了するために使用されるユーザー名。+」権限で設定されたユーザーのいずれかです。上記のユーザーとしてログインする方法。これは、パスワード、またはSSHキーを使用する機能のいずれかです。管理タスクを実行する方法。`ユーザーの場合、これは不要です。+`特権に依存するユーザーの場合、一般にパスワードが必要です。コマンドの一般的な構文は次のとおりです。[options]最終的に使用する可能性のある一般的なオプションは次のとおりです。*:SSHで認証するためのユーザー名を指定するために使用されます。*:Chef内に表示されるノードの新しい名前。これを省略すると、通常、Chefノード名にホスト名が使用されます。*:リモートサーバー上のユーザー名のパスワードを指定するために使用されます。+」コマンドのパスワードが必要な場合に必要です。`を使用する必要がある場合、このフラグが必要です。+`パスワードの入力を求められます。*:このオプションは、パスワード認証を使用するのではなく、ログインするためにリモートホストにSSHキーを転送します。これを行う方法の詳細については、Chefサーバーからのキーのダウンロードに関するワークステーション構成セクションを参照してください。上記の情報を使用すると、さまざまな状況に適したブートストラップコマンドを作成できます。+」を使用して、「testing」という名前のノードをブートストラップするには、次のように入力します。root`ユーザーを使用してブートストラップし、Chefノード名としてノードホスト名を使用し続けたい場合、次のように入力できます。`-useを使用してパスワードを提供する必要があります。-N新しいノードがブートストラップされると、新しいクライアントが必要になります。listdigitalocean-validator同じ名前の新しいノードも必要です。list上記の手順を使用して、任意の数の新しいサーバーに新しいChefクライアントを簡単にセットアップできます。Dropletsを自動的に追加する方法について学びたい場合は、https://www.digitalocean.com/community/tutorials/how-to-automatically-add-new-設定管理システムへのドロップレット[このチュートリアルをご覧ください]。結論このガイドに従った後、完全に機能するChefサーバーをインフラストラクチャ用に構成する必要があります。Chefがインフラストラクチャに適用する構成を管理および維持するために使用できるワークステーションをセットアップしました。+`コマンドを使用して、Chefによって設定されるサーバーをブートストラップする方法を示しました。[次のガイド]では、構成を設計する方法を示しますいくつかのChefコンストラクトを使用するノード。宣言的な構成でインフラストラクチャを制御する方法として、Chefレシピとクックブックの基礎について説明します。