【AWS】OpsWorks を使って Chef サーバの構築とノード追加

概要

Chef サーバを構築してサーバの構成管理を行いたいと思っています。

AWS には OpsWorks と言うサービスがあって、簡単に Chef サーバを構築できるようです。

OpsWorks を使って Chef サーバを構築して、ノード追加を行う工程までをまとめました。

参考:AWS OpsWorks for Chef Automate (マネージド型 Chef サーバー) | AWS

 

Chef サーバを構築

AWS ではコンソール経由で簡単に Chef サーバを構築できます。

1.『Go to OpsWorks for Chef Automate』を使ってみる

f:id:kyamanak83:20171105195143p:plain

 

2.『Create Chef Automate server』で Chef サーバを作成

f:id:kyamanak83:20171105195415p:plain

 

3. 設定の入力

今回、試しに使ってみたかったので、ほとんど設定はいじってないです。

f:id:kyamanak83:20171105195738p:plain

f:id:kyamanak83:20171105195815p:plain

 

f:id:kyamanak83:20171105200223p:plain

 

4. Chef サーバの起動

設定が完了すると、Chef サーバが起動します。起動まで少々時間がかかります。

その間に credential と Starter Kit をダウンロードしてください。

f:id:kyamanak83:20171105200755p:plain

5. Chef サーバにログイン

先ほどダウンロードした『credential』にユーザ名とパスワードが記載されています。

f:id:kyamanak83:20171105200942p:plain

ログインすると Chef Automate サーバのダッシュボードが表示されます。

f:id:kyamanak83:20171105201631p:plain



Chef Automate サーバの構築はこれで完了です。

現段階では、Chef Automate サーバで管理するノードがないので、これからノード追加を行います。

 

デベロッパーキットのインストール

ノード追加は Workstation と呼ばれる環境から行います。

これから自分に PC に Workstation を構築します。

Chef Workstation は、Chef のインフラストラクチャで重要なもう一つのコンポーネントで、ラップトップやデスクトップ PC など、業務のほとんどを行う作業場に当たります。 たとえば、Chef Workstation を使用して、クックブックとレシピの著作、組織のポリシーの構成、ノードのブートストラップを実行します。

以下の URL から Developer Kit をダウンロードしてください。

https://downloads.chef.io/chefdk

Developer Kit をダウンロードしたら、自分の PC にインストールしてください。

f:id:kyamanak83:20171105201540p:plain

これでローカル(ターミナル)で knife コマンドが実行できるようになります。

$ which knife
/usr/local/bin/knife

 

ノード追加

先ほど(4. Chef サーバの起動)ダウンロードした Starter Kit を解凍してください。

Starter Kit の中には chef-repo と Chef サーバの秘密鍵、設定ファイル(knife.rb)などが含まれています。

# chef-repo のディレクトリ構成
$ tree -a
.
├── .chef
│   ├── ca_certs
│   │   └── opsworks-cm-ca-2016-root.pem
│   ├── knife.rb # どの Chef サーバと接続するかなど記載された設定ファイル
│   └── private.pem # 秘密鍵
├── Berksfile
├── README.md
├── chefignore
├── cookbooks
│   └── README.md
├── environments
│   └── README.md
├── roles
│   └── README.md
├── userdata.ps1
└── userdata.sh

ノード追加は chef-repo からしか実行できませんので注意してください。

ノード追加は自分の PC 上に構築した Workstation から該当インスタンスに SSH ログインして必要な設定をインストールします。

そのため、ノード追加したいインスタンスのインバウンドルールの編集を先に行って、PC から SSH できるようにしておいて下さい。f:id:kyamanak83:20171112220829p:plain

インバウンドルールの設定が完了したら、bootstrap と言うコマンドを叩いて Chef サーバにノードを追加します。

サーバ OS によって実行ユーザが異なるようなので注意して下さい。

参考:Chef サーバーで管理するノードを追加する - AWS OpsWorks

# ノード追加を行う際は、chef-repo に移動します
$ cd my-chef-automate-3xxxxx3xxxxxxxxx

# ノード追加(bootstrap)実行
$ knife bootstrap <パブリック IP アドレス> -N <インスタンス名(何でもいい)> -x ec2-user --sudo --identity-file <自分のAWS にログインするときの鍵パス>
Creating new client for kyamanak.aws.instance
Creating new node for kyamanak.aws.instance
Connecting to XX.XXX.XXX.XX
XX.XXX.XXX.XX -----> Installing Chef Omnibus (-v 13)
XX.XXX.XXX.XX downloading https://omnitruck-direct.chef.io/chef/install.sh
XX.XXX.XXX.XX   to file /tmp/install.sh.23029/install.sh
XX.XXX.XXX.XX trying wget...
XX.XXX.XXX.XX el 6 x86_64
XX.XXX.XXX.XX Getting information for chef stable 13 for el...
XX.XXX.XXX.XX downloading https://omnitruck-direct.chef.io/stable/chef/metadata?v=13&p=el&pv=6&m=x86_64
XX.XXX.XXX.XX   to file /tmp/install.sh.23034/metadata.txt
XX.XXX.XXX.XX trying wget...
XX.XXX.XXX.XX sha1	2e1390896c8376268f88cc693cca475a76cd1e64
XX.XXX.XXX.XX sha256	ca26f2c9feef419cb3ae0a6ea03843b7c34275b7c0f6a1a18ab56b63383fc341
XX.XXX.XXX.XX url	https://packages.chef.io/files/stable/chef/13.6.0/el/6/chef-13.6.0-1.el6.x86_64.rpm
XX.XXX.XXX.XX version	13.6.0
XX.XXX.XXX.XX downloaded metadata file looks valid...
XX.XXX.XXX.XX downloading https://packages.chef.io/files/stable/chef/13.6.0/el/6/chef-13.6.0-1.el6.x86_64.rpm
XX.XXX.XXX.XX   to file /tmp/install.sh.23034/chef-13.6.0-1.el6.x86_64.rpm
XX.XXX.XXX.XX trying wget...
XX.XXX.XXX.XX Comparing checksum with sha256sum...
XX.XXX.XXX.XX Installing chef 13
XX.XXX.XXX.XX installing with rpm...
XX.XXX.XXX.XX ... 省略 ...
XX.XXX.XXX.XX Running handlers:
XX.XXX.XXX.XX Running handlers complete # 完了 
XX.XXX.XXX.XX Chef Client finished, 10/10 resources updated in 07 seconds

これでノード追加が完了です。

今回、kyamanak.aws.instance と言うインスタンス名で登録しました。

f:id:kyamanak83:20171105203259p:plain

 

最後に

Chef サーバを構築してノードを追加する工程までをまとめました。

OpsWorks を使うことで、今まで構築に時間をかけていた Chef サーバが数分で構築できるようになりました。

見よう見まねで直ぐに構築できると思うので、是非参考にして下さい。