開発者ドキュメント

UbuntuVPSインスタンスにChefサーバー、ワークステーション、およびクライアントをインストールする方法

警告

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

序章


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

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

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

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

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

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

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

サーバーのインストール


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

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

ドメイン名をお持ちでない場合は、 /etc/hosts 使用する各VPSインスタンスでファイルを作成し、すべてのVPSインスタンスが名前で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」タブをクリックして、オペレーティングシステムに一致するメニューを選択します。

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

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

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

https:// server_domain_or_IP

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

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

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

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

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

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

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


私たちのワークステーションコンピューターは、インフラストラクチャ環境を規定する実際のポリシーを作成および編集するために使用する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-validator クライアント。 そのボックスを選択し、[クライアントの保存]をクリックして秘密鍵を再生成します。

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

注:このキーは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-----

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

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

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

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

ワークステーションコンピュータに戻り、同じディレクトリに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

ファイルを保存して閉じます。

これで、現在の状態をコミットできます(おそらく、 .gitignore 次のように入力して、変更したファイル)を入力します。

git add .
git commit -m 'Finish configuring station1'

また、ユーザーがChefインストールにパッケージ化されているバージョンのRubyを使用していることを確認する必要があります。 そうしないと、Chefによって行われた呼び出しが、システムのRubyインストールによって解釈される可能性があり、他のツールと互換性がない可能性があります。

下部に線を追加するだけでパスを変更できます .bash_profile ファイル。

次のように入力して、行を追加します。

echo 'export PATH="/opt/chef/embedded/bin:$PATH"' >> ~/.bash_profile

これで、次のように入力して、これらの変更を現在の環境に実装できます。

source ~/.bash_profile

ナイフコマンドを使用してサーバーに情報を要求することで、Chefサーバーに正常に接続できるかどうかをテストできます。

これにより、すべてのユーザーのリストが返されます。

knife user list

admin
station1

これが成功すると、ワークステーションはサーバーと正常に通信できます。

クライアントノードのブートストラップ


Chefサーバーとワークステーションがオンラインになったので、サンプルノードでChefクライアントのブートストラップを試みることができます。 別のUbuntuインスタンスを使用します。

ブートストラッププロセスには、ノード上にChefクライアントを設定することが含まれます。 Chefクライアントは、サーバーと通信して独自の構成の指示を受け取るソフトウェアです。 次に、クライアントは、インストールされているノードをサーバーから指定されたポリシーに合わせて移動します。

このプロセスでは、Chef管理システムの傘下にあるように新しいVPSインスタンスを構成するだけです。 次に、ワークステーションでポリシーを作成し、それらをサーバーにアップロードすることで、必要に応じて構成できます。

このプロセスを完了するには、クライアントソフトウェアをインストールするVPSに関する3つの情報を知る必要があります。

これらの情報を使用して、ワークステーションにナイフツールを使用して適切なパッケージをインストールできます。

次のようなコマンドを入力します。

ナイフブートストラップnode_domain_or_IP -xユーザー名-Pパスワード-Nname_for_node-- sudo

これを少し分解してみましょう。 ドメイン名/IPアドレスは、どのサーバーに接続するかをknifeに指示します。 ユーザー名とパスワードはログイン資格情報を提供します。

使用しているユーザーがrootでない場合は、 --sudo ブートストラッププロセスでリモートコンピュータにソフトウェアを正常にインストールするには、オプションが必要です。 ログインしてsudoコマンドを使用すると、パスワードの入力を求められます。

ノードの名前は、Chefによって内部的に使用される選択した名前です。 これは、ポリシーを作成してナイフを使用するときにこのマシンを参照する方法です。

コマンドの実行後、クライアントソフトウェアがリモートノードにインストールされます。 Chefサーバーと通信して命令を受信するように構成されます。

次のように入力して、クライアントのリストを照会できます。

knife client list

chef-validator
chef-webui
client1

Chefサーバーのインストール中にデフォルトで構成された2つのクライアント(chef-validatorとchef-webui)と、作成したばかりのクライアントを確認できます。

他のノードを簡単にセットアップして、Chefシステムの構成制御下に置くことができます。

結論


これで、Chefサーバー、構成を作成するための別のワークステーション、およびサンプルノードができました。

この時点では、Chefを介したノードの実際の構成は行っていませんが、このプロセスを開始する準備ができています。 今後のチュートリアルでは、ポリシーを実装し、ノードを管理するためのレシピとクックブックを作成する方法について説明します。

ジャスティン・エリングウッド
モバイルバージョンを終了