Chef 12対応版 Chef ClientのbootstrapインストールとCookbookの実行~CentOS 7編~

以前の記事でChef ServerとChef Workstationを同一サーバー上に構築しました。(Chef Server編Chef Workstation編)今回は、Chefを使ってサーバーの構成管理を行う対象サーバーへのChef Clientの導入を行います。

スポンサーリンク

1. Clientとなるサーバーのbootstrap用ユーザー作成とSSH設定

まずは管理対象となるClient側サーバーを用意します。SSHでリモートから操作できるように設定をしていきます。以後、Clientとなるサーバーのプロンプトは[(ユーザー名)@chef-client ]$、Workstation側のプロンプトは[(ユーザー名)@chefserver ]$とします。

1-1. bootstrap用ユーザー作成

Chef ClientのインストールはChef WorkstationからSSH経由で行うので、SSH接続用ユーザーを作成し、sudo権限を付与します。

1-2. SSH接続設定

作成したchef-clientユーザーで鍵認証によるログインができるように設定します。まずはWorkstation側のchef-adminユーザーでSSH鍵を生成します。

生成した公開鍵(~/.ssh/id_rsa.pub)をClient側の~/.ssh/authorized_keysに追記します。

ここまで設定したら、WorkstationからSSHログインできることを確認します。そして、sudoできることも確認します。

これでSSHログインするための設定が完了しました。

2. Chef WorkstationでのCookbookダウンロードとChef Serverへのアップロード

今回は、最初のCookbookとして「chef-client」という名前のCookbookを導入する場合を例にします。「chef-client」cookbookはChefの公式レポジトリに含まれるCookbookで、Chef Clientのインストールなどの設定を行います。

2-1. chef-client Cookbookのインストール

Cookbookを公式レポジトリからダウンロード・展開するためにはknife cookbook site install (Cookbook名)を実行します。ただし、事前に~/chef-repo/cookbook以下をGit管理下に置く必要があります。Git管理下にない場合、以下のエラーが出ます。

Git管理下に置くため、Gitのユーザー名・メールアドレスの初期設定もまだの場合は、ここで設定しておきます。

Gitの設定が完了したら、Cookbookのインストールを行います。

2-2. Chef ServerへのCookbookのアップロード

ダウンロード・インストールしたCookbookはWorkstationにあるだけで、そのままではChef Server経由で配信されません。ClientでCookbookを実行させる前に、Chef ServerにCookbookをアップロードする必要があります。今回は編集などは行わず、先ほどインストールしたCookbookをすべてそのままChef Serverへアップロードします。

Uploadされたことは、ChefのWeb管理画面からも確認できます。Web管理画面にログイン後、「Policy」タブをクリックするとアップロード済みのCookbookの一覧を見ることができます。

cookbook

chef-client cookbookには依存関係があるため、それらのCookbookも一緒にアップロードされています。

3. knife bootstrapによるChef Clientの導入

3-1. CentOS用のbootstrap scriptの作成

Chefのコマンドラインツール「knife bootstrap」を使ってChef Clientのインストールと初期設定を行いますが、管理対象OSによってパッケージ導入の方法が異なります。そこで、Chef Clientをインストールする手順を記述したbootstrapスクリプトを作成します。ここでは私のGithubのknife-bootstrap-erbレポジトリに置いてあるCentOS用のスクリプトを利用します。

bootstrap-erb-download

まず、Githubのknife-bootstrap-erbレポジトリからレポジトリ内のファイルをダウンロードして展開します。

展開して作成された「knife-bootstrap-erb-master」ディレクトリ内にある「bootstrap」ディレクトリを~/chef-repo/.chef/」にコピーします。

3-2. knife bootstrapの実行

ここまでの手順で、Chef Clientのbootstrapインストールの準備が整いました。いよいよChef Clientの導入を行います。インストールに利用するコマンドはknife bootstrapです。コマンドに与える主な引数は以下の通りです。

今回実行するレシピは「chef-client::delete_validation」にします。このレシピはChef ClientとChef Serverが接続した後にClient側に保存されたOrganization認証秘密鍵を削除します。このファイルは以後利用することがないため、セキュリティ上削除することが推奨されています。

いくつかセキュリティ上良くない設定をしている旨の警告が出ていますが、以上でChef Clientがインストールされ、Chef Server管理下に置かれました。Chef Server管理下に置かれたことは、ChefのWeb管理画面からも確認できます。管理画面の「Nodes」を見ると、chef-clientというホストが追加されていることがわかります。

Node

以上で、Chef Clientの導入とChef Server管理下への追加が完了しました。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

フォローする