Chefサーバーセットアップ方法
作成日: 2015年01月25日

作成者: 岩下洋治

Chef用サーバーのAWSインスタンス作成とインストールを行います。

この作業ではインスタンスは手作業で作成する必要があります。AWS利用方法を別途サイトなどで確認してください。
※Chefの知識が必要なので、何かしらラーニングの上、ご利用ください。

(1) AWSにchefサーバー用のインスタンス(EC2)を作成

AMI: Community AMIs 内の RightImage_CentOS_7.0_x64_v14.1.4_HVM_EBS
EC2インスタンスタイプ: t2.micro (それ以上でもOK)
セキュリティグループ: chef用を選択
タグ設定:
    Name: CHEFserver
    Role: CHEF
KEYpair: PPP を選択

(2015.10.28)
初めて作るときはCHEF用セキュリティーグループを作成します。
   AWS_lb_security.txt を参照して作成してください。
キーペアも同様に初めての時に .pem のダウロードと共に作成します   作成したchefサーバーインスタンスへのログインは chefサーバーログイン方法.txtを参照してください。

(2) ssh設定

ssh で公開鍵を使いパスワード無しでノードにログイン出来るようにしておく必要があります。

1) 秘密鍵ファイルをコピー
    今回のプロジェクトでは、 ‾/.ssh/PPP.pem とします。
    パーミッションは 600 にします。
    ※ putty 用の *.ppk 形式は使えません。*.pem 形式のファイルが必要です。

2) ‾/.ssh/config ファイルを作成
    内容は以下の通りです。すでに存在する場合は追記にしてください。
---- ここから ----
Host *.*.*.*
IdentityFile ‾/.ssh/PPP.pem
User root
---- ここまで ----

(3) sudo 対策設定

sudo 利用時に path の内容が変更されるため、chef-solo 等が sudo で実行できません。
その対策です。

1) sudo visudo
として sudo 設定ファイルを開きます。

2) Defaults env_keep += が並んでいる箇所を探します。
その最後に、以下の行を追加します。
Defaults env_keep += “PATH”

3) 以下の行をコメントアウトします。(先頭に # をつけます)
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
この行を以下のようにします。

    # Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

(4) chef インストール (chefdk 使用)

※ コマンド実行は rootユーザーで、又は sudo を使ってください。

1) 以下のURLから redhat/centos用パッケージをダウンロードします。

    http://downloads.getchef.com/chef-dk/redhat/
    ※ 現在は centos6.x 用となっています。centos7.0 でも使えます。
    ※ 2015年2月4日現在は chefdk-0.4.0-1.x86_64.rpm です。
    ※ リンクアドレスを調べて、wget で取得すると簡単です。

2) ダウンロードしたパッケージをインストールします。

    rpm -ivh chefdk-0.4.0-1.x86_64.rpm

3) パスを設定します。

    a) chefdk のパスを追加します。以下の2つです。
            /opt/chefdk/bin
            /opt/chefdk/embedded/bin
       さらに、LC_CTYPE に ja_JP.UTF-8 を設定します。

       具体的には、‾/.bashrc の最後に以下の行を追加します。
            export PATH=/opt/chefdk/bin:/opt/chefdk/embedded/bin:$PATH
            export LC_CTYPE=ja_JP.UTF-8

    b) 以下のコマンドを実行して、設定を現在のシェルに反映させます。
        source ‾/.bashrc

    c) export コマンドで PATH, LC_CTYPE の内容を確認します。

4) knife-solo, knife-zero をインストールします。
    chef gem install knife-solo
    chef gem install knife-zero

※ chefdk では専用のrubyが /opt/chefdk/embedded/ にあり、それを使うようになっています。
   そのため、gem install ではなく chef gem install とする必要があります。

(5) awscli ツールインストール

1) easy_install, pip が使える状態にします。インストール済みならこの作業は不要です。
    wget https://bootstrap.pypa.io/ez_setup.py -O - | python
    easy_install pip

2) python pip が使える状態でawscliをインストールします。
    pip install awscli
    complete -C aws_completer aws

3) 設定
    aws configure と入力すると、パラメータを聞かれます。
    必要なのはAWSのアクセスキー、シークレットアクセスキーと、
    デフォルトリージョン、出力フォーマット(通常は json) です。
    内容は ‾/.aws/config, ‾/.aws/credentials に保存されます。

    入力例:
        AWS Access Key ID [None]: AKIAIAU7TGCQKHH4TUIA
        AWS Secret Access Key [None]: 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
        Default region name [None]: ap-northeast-1
        Default output format [None]: json

※ 参考: 設定追加
    複数の設定が必要な場合は、config, credentials 共に
    [プロファイル名] で区切り、コマンドラインで
        --profile プロファイル名
    として設定を選択出来ます。

参考URL:
    http://docs.aws.amazon.com/cli/latest/userguide/installing.html

(6) chef (knife) 初期化

※ 以下の操作はホームディレクトリで行います。

以下のコマンドを実行します。

    knife configure

    ※ 質問は全てデフォルトのままにします

    ※ 以下のようなメッセージが出ます。とりあえず無視してください。
        *****
        You must place your client key in:
          /root/.chef/root.pem
        Before running commands with Knife!
        *****
        You must place your validation key in:
          /etc/chef-server/chef-validator.pem
        Before generating instance data with Knife!
        *****

(7) chefリポジトリを展開

chefサーバーにログインします。
root ユーザーでカレントディレクトリが /root とします。

サーバーの環境設定

a) SVNからダウンロードする場合
    a-1) chefサーバーにログインして、svn をインストールします。
        yum install svn

    a-2) リポジトリチェックアウト/エクスポート
        svn リポジトリとして管理したい場合はチェックアウト(co), そうで無い
        場合はエクスポート(export) してください。

        チェックアウト: svn co https://dev.famiel.com/svn/ppp/trunk/master/Server/chef-repo
        エクスポート:   svn export https://dev.famiel.com/svn/ppp/trunk/master/Server/chef-repo

b) 実行ファイルの権限設定
    以下のコマンドを実行します。
        chmod +x ‾/chef-repo/mytool/*.sh
        chmod +x ‾/chef-repo/mytool/awstool/*.sh

(8) opscode のアクセス準備

1) 秘密鍵作成

   本来は、http://community.opscode.com/ でアカウントを作成し、得られる
   秘密鍵をホストの ‾/.chef/<username>.pem にセーブします。

   ここでは、以下の岩下が登録した秘密鍵を ‾/.chef/root.pem として保存
   してください。ファイルのパーミッションは 600 にします。

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA07NHeu41YMVqQn3HwWuj6UqxypftCfrwcG6mIYfmyhSoYAap
ead9RHMQDknQiG7NLWyzxYHUSnTTjGT2gKmMMXfuUEbfN887RnGSViXk8X2+I1k/
s/lio78rvbqtjA/fAcaWtKQZpTKp4s9o1ggrBn+Q21lbyPhKnxBK65bQ6G+D0MrB
9FzBXTBjfVhhIu7Qs/zEkR41AIRDU3U4DGQspgSTp8DaDhrMQarq4z6CiWpBj3BF
Z4/Q+hgZ8bxvYl5ooLL8ftkMEt1ZzLYk9yXDxaFDkaGKtxS1Yvv3lnxHQoPhn6oV
bX7N+I33eFUt3sN4lNRChyfwHRqR08Flr7QdswIDAQABAoIBAQDExs75aDP7eGTV
2z5y/k/EiKaMDv3JGhSmHWOUpVMToXIEmAytxM5+comJDnmkZ4GV6IWNX6lpcAA3
bp1maLKkRLsiqU3Q/XI2f1irdNvC0MOM7ed1rahPVmIdIEkyeIosh2AMFsCzuk0J
QwtKbxs3FhoamYvkWU5bXfSV2YDjmxpL9KH7RCHQPHgH+tyE630Txn5yn5/neuWK
W0YITI1JyKNetV2FdMdBqE9D9fcHalNIap50NNFiKbCy99chHcQTY0+CqQ54kYph
j/9IiWPAvRrod0LqMxo9/EPxXeO4yQdel1AB4zmEHhHUec2n0aPbzrXfQOkmoC+4
JObWPW+ZAoGBAPnDOar6SfyT+mmClyd0Lg+PIkxwJ+8GiNbkEol5F5d2oG8wz3qq
WjX2Xk9o2/hcA+pOrBF3cpyUGlTwvkKD3qjfk+H8wP9dB3x4XIf7/gJav3EVGvAV
lqgkZy7/FZ+kDpAs4ZhGFiGh7YuAVuVFtkDtd90Skg/e59ZQ+221obg1AoGBANj8
txwHUriY7HMRFB7cACX1mUjGcgMPhCmXDINzpeuBinBJq8zeP3j4zZBPoNqDhvuB
pOMIh3PVlSIy2BnLYNw85PJIVU7cyr7Aik65pzsqdIKFH48BRBKx1LlWjcmZ7MWX
wNvjgUBmyFY0yY4WN0F5FM4N5UM1SZ8n1HVwqMtHAoGAYMASV7wq6u+7wiF3Qi5M
JXTR2YBcx8flPDEPSTeiPucSEOB8jszssxijwekhxNyIG7ysBPwbZrIsXRkA6q1A
lHQ/SfxqGsHDw6CwX3DrHahfnoOJctU6DhpD6j2f975Kcekg3qbPremXJkHp51iQ
2CflFbs633D+p9OpAf+pDL0CgYEAuOJznwU6XaGnbs/xhe3Mjot6pUC5apQw90MF
3YePq2AANnb/VJtWF9xfQwQmOanyPKCVfwEIcRFedfo+mZPqHx4fsbUiQwTsF6Z0
8mlL7aTaC1AkuLPKbedqKtVuEIX/8cjBAlsSCW7KanGl/1Q8lqP1rzC11RM1fM/y
PnLU0AcCgYA5syngTC2upefF7tl9ILZ6Z6JwRk8pFEXJJ1EsHNfbJyuCJr5AxQp4
ICe9lTMD7j+6qUTIP/8P6Ius19x0YwivZTOzc9USzkclb5mioY1OQ6rlSEWJE1Zp
eZwCCbTNS8l/iwriyE8K/s2MCqDoPufX8szx1CbhvpIx11Ous4c6Jw==
-----END RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA07NHeu41YMVqQn3HwWuj6UqxypftCfrwcG6mIYfmyhSoYAap
ead9RHMQDknQiG7NLWyzxYHUSnTTjGT2gKmMMXfuUEbfN887RnGSViXk8X2+I1k/
s/lio78rvbqtjA/fAcaWtKQZpTKp4s9o1ggrBn+Q21lbyPhKnxBK65bQ6G+D0MrB
9FzBXTBjfVhhIu7Qs/zEkR41AIRDU3U4DGQspgSTp8DaDhrMQarq4z6CiWpBj3BF
Z4/Q+hgZ8bxvYl5ooLL8ftkMEt1ZzLYk9yXDxaFDkaGKtxS1Yvv3lnxHQoPhn6oV
bX7N+I33eFUt3sN4lNRChyfwHRqR08Flr7QdswIDAQABAoIBAQDExs75aDP7eGTV
2z5y/k/EiKaMDv3JGhSmHWOUpVMToXIEmAytxM5+comJDnmkZ4GV6IWNX6lpcAA3
bp1maLKkRLsiqU3Q/XI2f1irdNvC0MOM7ed1rahPVmIdIEkyeIosh2AMFsCzuk0J
QwtKbxs3FhoamYvkWU5bXfSV2YDjmxpL9KH7RCHQPHgH+tyE630Txn5yn5/neuWK
W0YITI1JyKNetV2FdMdBqE9D9fcHalNIap50NNFiKbCy99chHcQTY0+CqQ54kYph
j/9IiWPAvRrod0LqMxo9/EPxXeO4yQdel1AB4zmEHhHUec2n0aPbzrXfQOkmoC+4
JObWPW+ZAoGBAPnDOar6SfyT+mmClyd0Lg+PIkxwJ+8GiNbkEol5F5d2oG8wz3qq
WjX2Xk9o2/hcA+pOrBF3cpyUGlTwvkKD3qjfk+H8wP9dB3x4XIf7/gJav3EVGvAV
lqgkZy7/FZ+kDpAs4ZhGFiGh7YuAVuVFtkDtd90Skg/e59ZQ+221obg1AoGBANj8
txwHUriY7HMRFB7cACX1mUjGcgMPhCmXDINzpeuBinBJq8zeP3j4zZBPoNqDhvuB
pOMIh3PVlSIy2BnLYNw85PJIVU7cyr7Aik65pzsqdIKFH48BRBKx1LlWjcmZ7MWX
wNvjgUBmyFY0yY4WN0F5FM4N5UM1SZ8n1HVwqMtHAoGAYMASV7wq6u+7wiF3Qi5M
JXTR2YBcx8flPDEPSTeiPucSEOB8jszssxijwekhxNyIG7ysBPwbZrIsXRkA6q1A
lHQ/SfxqGsHDw6CwX3DrHahfnoOJctU6DhpD6j2f975Kcekg3qbPremXJkHp51iQ
2CflFbs633D+p9OpAf+pDL0CgYEAuOJznwU6XaGnbs/xhe3Mjot6pUC5apQw90MF
3YePq2AANnb/VJtWF9xfQwQmOanyPKCVfwEIcRFedfo+mZPqHx4fsbUiQwTsF6Z0
8mlL7aTaC1AkuLPKbedqKtVuEIX/8cjBAlsSCW7KanGl/1Q8lqP1rzC11RM1fM/y
PnLU0AcCgYA5syngTC2upefF7tl9ILZ6Z6JwRk8pFEXJJ1EsHNfbJyuCJr5AxQp4
ICe9lTMD7j+6qUTIP/8P6Ius19x0YwivZTOzc9USzkclb5mioY1OQ6rlSEWJE1Zp
eZwCCbTNS8l/iwriyE8K/s2MCqDoPufX8szx1CbhvpIx11Ous4c6Jw==
-----END RSA PRIVATE KEY-----

2) 秘密鍵のパスを設定

    ‾/.chef/knife.rb を編集して、以下の行を追加、あるいは編集します。
    1) で作ったファイル名と合わせます。
        client_key       '/root/.chef/<username>.pem'

3) Berkshelf用定義ファイル確認

    chefリポジトリを展開した段階で、以下のファイルがあることを確認してくだ
    さい。
        ‾/chef-repo/Berksfile
        ‾/chef-repo/Berksfile.lock
    ※ Berksfile.lock ファイルは削除しないでください。