警告

このガイドはChef11を対象としています。 Chef 12プラットフォームでは、いくつかの重要な構成の違いがあります。 Chef 12サーバー、ワークステーション、およびノードのセットアップ方法に関するガイドはここにあります。

序章


組織構造が成長し、環境の管理に必要な個別のコンポーネントが拡大すると、各サーバーとサービスの管理が管理できなくなる可能性があります。

構成管理ソリューションは、システムとインフラストラクチャの管理を簡素化するように設計されています。 構成管理ツールの目的は、インフラストラクチャをコードベースとして管理できるようにすることです。 Chef は、多数のサーバーを簡単に管理できる構成管理ソリューションです。

前のガイドでは、Chefコンポーネントの一般的な構造と、システムが概念レベルで動作する方法について説明しました。 いくつかの重要な用語と、多くの異なるコンポーネント間の関係について説明しました。

このガイドでは、小さなChef11セットアップのインストールに取り組みます。 これは、構成データの保存とアクセス権の管理に使用される1つのChefサーバーになります。 これは、他のマシンのハブとして機能します。

また、サーバーと対話して構成ポリシーを構築できるワークステーションをインストールします。 ここで、インフラストラクチャ環境を管理する作業を行います。

最後に、Chefを介して管理される組織内のサーバーの1つを表すノードをブートストラップします。 これは、構成したサーバーとワークステーションを使用して行います。

わかりやすくするために、これら3台のマシンはすべてUbuntu 12.04x86_64VPSインスタンスを使用します。 安定していて十分にテストされているため、Chef11リリースをターゲットにします。

サーバーのインストール


オンラインにする必要がある最初のコンポーネントは、Chefサーバーです。 これは他のコンポーネントの通信の中心であるため、他のマシンがセットアップを完了するために利用可能である必要があります。

これを行う前に、Chefサーバーがリクエストを正しく解決するためのドメイン名を設定することが重要です。 DigitalOceanドメイン名を設定するためのガイドはこちらでご覧いただけます。

ドメイン名がない場合は、使用する各VPSインスタンスの/etc/hostsファイルを編集して、Chefサーバーをすべて名前で解決できるようにする必要があります。 do にドメイン名がある場合、これはChefサーバーとして使用するVPSでのみ必要です。 これを行うには、Chefサーバーとして使用するVPSで次のように入力します。

 sudo nano / etc / hosts 

内部に、このコンピューターのIPアドレスを追加してから、サーバーへの接続に使用する名前を追加します。 その後、短い名前を追加できます。 このようなもの:

 111.222.333.444  chef.domain.com シェフ

111.222.333.444をChefサーバーのIPアドレスに変更し、他の2つの値をサーバーの参照に使用する値に変更します。 ドメイン名を使用していない場合は、使用する予定の各マシンのこのファイルにChefサーバーを指すようにこの行を追加します。

次のように入力すると、これが正しく設定されていることを確認できます。

ホスト名-f

これにより、このサーバーに到達するために使用される名前がわかります。

ウェブブラウザでこのページにアクセスすると、chefサーバーパッケージを入手できます。

「ChefServer」タブをクリックして、オペレーティングシステムに一致するメニューを選択します。

Chef server select operating system

右側で利用可能なChef11サーバーの最新バージョンを選択します。

Chef server newest

debファイルへのリンクが表示されます。 これを右クリックして、「リンクの場所をコピー」に似たオプションを選択します。

サーバーとして使用するVPSインスタンスで、ユーザーのホームディレクトリに移動し、wgetユーティリティを使用してdebをダウンロードします。 この記事の執筆時点で、最新のリンクは次のとおりです。

cd ~
wget https://opscode-omnibus-packages.s3.amazonaws.com/ubuntu/12.04/x86_64/chef-server_11.0.10-1.ubuntu.12.04_amd64.deb

これにより、インストールパッケージがダウンロードされ、次のようにインストールできます。

sudo dpkg -i chef-server*

これにより、このマシンにサーバーコンポーネントがインストールされます。

その後、この次のコマンドを実行して、特定のマシンでサービスを実際に構成する必要があることを画面に出力します。 これにより、すべてが自動的に構成されます。

sudo chef-server-ctl reconfigure

この手順が完了すると、サーバーが稼働しているはずです。 https://に続けてサーバーのドメイン名またはIPアドレスを入力すると、すぐにWebインターフェイスにアクセスできます。

https:// server_domain_or_IP

SSL証明書は、ブラウザがデフォルトで認識しない認証局によって署名されているため、次の警告メッセージが表示されます。

Chef SSL warning

「Proceedanyway」ボタンをクリックして、この画面をバイパスし、ログイン画面にアクセスします。 次のようになります。

Chef server login screen

デフォルトのログイン資格情報は次のとおりです。

デフォルトのユーザー名: adminデフォルトのパスワード: p  @ ssw0rd1

初めてログインすると、すぐにパスワードを変更するように求められます。 新しいパスワードを選択し、下部にある[ユーザーの保存]ボタンをクリックします。

Chef server change pw

これで、サーバーを離れてワークステーションの構成を開始できるようにサーバーを構成できました。

ワークステーションのインストール


私たちのワークステーションコンピューターは、インフラストラクチャ環境を規定する実際のポリシーを作成および編集するために使用するVPSです。 このマシンには、マシンとサービスを説明するChefリポジトリのコピーがあり、実装のためにそれらをChefサーバーにアップロードします。

バージョン管理のためにgitをインストールすることから始めます。

sudo apt-get update
sudo apt-get install git

これには実際には2つの目的があります。 明らかな使用法は、変更を追跡するために構成をバージョン管理下に維持することです。 2番目の目的は、次のコマンドが機能するように、パスワードをsudoで一時的にキャッシュすることです。

次に、ChefWebサイトからクライアントインストールスクリプトをダウンロードして実行します。 次のすべての手順を完了するには、次のコマンドを入力します。

curl -L https://www.opscode.com/chef/install.sh | sudo bash

これで、Chefワークステーションコンポーネントがインストールされました。 ただし、構成にはほど遠いです。

次のステップは、GitHubから適切にフォーマットされたChefリポジトリの「chef-repo」ディレクトリ構造を取得することです。 次のように入力して、構造をホームディレクトリに複製できます。

cd ~
git clone https://github.com/opscode/chef-repo.git

これにより、ホームディレクトリにchef-repoというディレクトリが作成されます。 これには、セットアップの構成全体が含まれます。

このディレクトリ内にChefツール自体の構成ディレクトリを作成します。

mkdir -p ~/chef-repo/.chef

このディレクトリ内に、Chefサーバーからの認証ファイルの一部を配置する必要があります。 具体的には、2つの秘密鍵が必要です。

サーバーからのキーの生成とコピー


WebブラウザでChefサーバーに戻ります。

https:// server_domain_or_IP

以前に変更したadminユーザーの資格情報を使用してログインします。

上部のナビゲーションバーにある[クライアント]タブをクリックします。 chef-validatorとchef-webuiという2つのクライアントが表示されます。

Chef server clients

chef-validatorクライアントに関連付けられている[編集]ボタンをクリックします。 そのボックスを選択し、[クライアントの保存]をクリックして、秘密鍵を再生成します。

Chef regenerate key

キーファイルに対して新しく生成された値が表示された画面が表示されます。

Chef val new key

注:このキーは1回しか使用できないため、このページをクリックしないでください。 その場合は、キーを再生成する必要があります。

秘密鍵フィールドの値(下部にあるもの)をコピーします。

ワークステーションマシンで、リポジトリに作成したChef構成ディレクトリに移動します。

cd ~/chef-repo/.chef

作成したバリデーターキーの新しいファイルを開きます。

nano chef-validator.pem

このファイルに、サーバーのWebインターフェイスからコピーしたキーの内容を貼り付けます(ここでは簡潔にするために一部の行が削除されています)。

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA6Np8f3J3M4NkA4J+r144P4z27B7O0htfXmPOjvQa2avkzWwx
oP28SjUkU/pZD5jTWxsIlRjXgDNdtLwtHYABT+9Q5xiTQ37s+eeJgykQIifED23C
aDi1cFXOp/ysBXaGwjvl5ZBCZkQGRG4NIuL7taPMsVTqM41MRgbAcLCdl5g7Vkri
. . .
. . .
xGjoTVH1vBAJ7BG1RHJZlx+T9QnrK+fQu5R9mikkLHayxi13mD0C
-----END RSA PRIVATE KEY-----

キーの上または下に余分な空白行がないことを確認してください。 ファイルを保存して閉じます。

同じ手順に従って、管理者ユーザーのキーファイルを再生成して保存します。 今回はユーザー用のキーなので、上部の「ユーザー」タブをクリックしてください。

もう一度、管理者ユーザーに関連付けられている[編集]ボタンをクリックし、[秘密鍵の再生成]ボックスをオンにして、[ユーザーの保存]ボタンをクリックします。

Chef admin user regen

次の画面で秘密鍵の値をコピーします。 繰り返しになりますが、これは再び表示されないので、最初は正しくコピーしてください。

ワークステーションコンピュータに戻り、同じディレクトリにadminユーザー用の別のファイルを作成する必要があります。

nano admin.pem

サーバーのインターフェースからコピーしたキーの内容を貼り付けます(これも短縮されています)。

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA/apu0+F5bkVtX6qGYcfoA6sIW/aLFUEc3Bw7ltb50GoZnUPj
0Ms1N1Rv/pdVZXeBa8KsqICAhAzvwSr0H9j+AoURidbkLv4urVC9VS4dZyIRfwvq
PGvAKop9bbY2WJMs23SiEkurEDyfKaqXKW687taJ9AKbH2yVx0ArPI2RwS3Sze3g
. . .
. . .
VTkNpg3lLRSGbQkvRUP6Kt20erS2bfETTtH6ok/zW4db8B/vnBlcZg==
-----END RSA PRIVATE KEY-----

貼り付けたキーラインの上または下に余分なラインがないことを確認します。 ファイルを保存して閉じます。

ナイフコマンドを設定する


ここで、knifeコマンドを構成する必要があります。 このコマンドは、サーバーおよび構成するノードと通信するための中心的な方法です。 認証方法を説明してから、Chefサーバーにアクセスするためのユーザーを生成する必要があります。

幸いなことに、適切なクレデンシャルファイルを取得することで、このステップの基礎を築いてきました。 次のように入力して構成を開始できます。

knife configure --initial

これにより、一連の質問が表示されます。 それらを1つずつ見ていきます。

警告:ナイフ構成ファイルが見つかりません構成ファイルはどこに置くべきですか? [/home/ your_user /.chef/knife.rb]

括弧([])内の値は、値を選択しない場合にknifeが使用するデフォルト値です。

ナイフ構成ファイルを、使用している隠しディレクトリに配置します。

/ home / your_user /chef-repo/.chef/knife.rb

次の質問では、Chefサーバーへのアクセスに使用するドメイン名またはIPアドレスを入力します。 これはhttps://で始まり、:443で終わる必要があります。

https:// server_domain_or_IP :443

作成する新しいユーザーの名前を尋ねられます。 説明的なものを選択してください。

新しいユーザーの名前を入力してください:[root] station1

次に、管理者名の入力を求められます。 これは、Enterキーを押すだけで、デフォルト値を受け入れることができます(管理者名は変更していません)。

次に、既存の管理者キーの場所を尋ねられます。 これは次のようになります。

/ home / your_user /chef-repo/.chef/admin.pem

バリデーターについて同様の一連の質問をします。 バリデーターの名前も変更していないので、chef-validatorのままにしておくことができます。 Enterキーを押して、この値を受け入れます。

次に、検証キーの場所を尋ねられます。 次のようになります。

/ home / your_user /chef-repo/.chef/chef-validator.pem

次に、リポジトリへのパスを要求されます。 これは、私たちが操作しているchef-repoフォルダーです。

/ home / your_user / chef-repo

最後に、新しいユーザーのパスワードを選択するように求められます。 好きなものを選択してください。

これでナイフの構成が完了します。 chef-repo/.chefディレクトリを見ると、knife構成ファイルと新しいユーザーの資格情報が表示されます。

ls ~/chef-repo/.chef

admin.pem  chef-validator.pem  knife.rb  station1.pem

ワークステーションのクリーンアップとテスト


ワークステーションの構成はほぼ完了しています。 接続が機能することをクリーンアップして確認するために、いくつかのことを行う必要があります。

まず、Chefリポジトリをバージョン管理下に置く必要があります。 Chef構成はソースコードとして動作するため、他のプログラムのファイルと同じように処理できます。

まず、git名とメールアドレスを初期化する必要があります。 タイプ:

 git config --global user.email“ your_email  @ドメイン .com ” git config --global  user.name君の名は。」

「chef-repo」ディレクトリ構造はGitHubから直接取得されたため、すでにgitバージョン管理下にあります。

ただし、このバージョン管理に「chef-repo/.chef」ディレクトリを含めたくありません。 これには、秘密鍵とナイフ構成ファイルが含まれています。 それらは、私たちが設計したいインフラストラクチャとは何の関係もありません。

.gitignoreファイルを開いて、このディレクトリを無視リストに追加します。

nano ~/chef-repo/.gitignore

ファイルの下部に「.chef」と入力して、ディレクトリ全体を含めます。

.rake_test_cache

Chefのキーファイルとシークレットを無視する

.chef/*。pem.chef/ encode_data_bag_secret .chef