LoginSignup
0
1

More than 5 years have passed since last update.

AWS OpsWorks For Chef Automate で 簡単フルマネージドChef Server 【cloudpack大阪ブログ】

Posted at

何の話?

AWS OpsWorks For Chef Automateはre:invent2016で発表された、フルマネージドのChef serverです。
https://aws.amazon.com/jp/opsworks/chefautomate/

OpsWorksは以前からChefに対応していましたが、スタックとかレイヤーとか色々概念があって、単にChefやりたいだけなんだけど・・・って人は結構いたんではないでしょうか?
OpsWorks For Chef Automate は単純にAWS上で動かせるChef Serverですので、そういう人にも使えるんではないかと思います。

Chef Automateをデプロイ

マネージメントコンソールからOpsWorksの画面を開きます。
Go to OpsWorks for Chef Automate をクリックします。

Kobito.1l1oi0.png

Create Chef Automate server をクリックします。

Kobito.rcZ6rK.png

Chef Serverの名前、リージョン、インスタンスタイプを決めます。

Kobito.8dzIdp.png

Chef serverにSSHログインする場合は、Keyペアを選択します。

Kobito.YpQrG0.png

VPC、SG、IAM関連を選択します。

Kobito.b3ktzU.png

メンテナンス期間、バックアップ時間を設定します。

Kobito.ReT8kE.png

Chef Serverの作成が始まります。
20分くらいかかるみたいです。

Kobito.v2eTbr.png

完了しました。
Download credentials をクリックすると、Chef serverのダッシュボードにログインするユーザ名、パスワード情報がダウンロードされます。

Download Starter Kitをクリックし、starter_kit.zipをダウンロードしておきます。

Server Information を見るとChefのバージョンは現在12.11.1でした。

画面上のChef Automate Dashboard をクリックして、ダッシュボードにアクセスします。

Kobito.saexn4.png

オレゴンリージョンにインスタンスが作成されています。
グローバルIPを持っていますので、ノードは別リージョンでも管理できます。オンプレでもいけるではないかと思います。

Kobito.hR71TY.png

デフォルトで作成されるSGはSSHとHTTPSがAll Permitなので、必要に応じて制限をかける必要があります。

Kobito.FhwzJU.png

Download credentials でダウンロードしたログイン情報でログインします。
Kobito.UWJD5E.png

ログインできました。
Kobito.XwYCo3.png

Chef Automateに接続する

ダウンロードしたStarterKitを展開します。
こんな構成になっています。

$ tree -a
.
├── .chef
│   ├── ca_certs
│   │   └── opsworks-cm-ca-2016-root.pem
│   ├── knife.rb
│   └── private.pem
├── Berksfile
├── README.md
├── chefignore
├── cookbooks
│   └── README.md
├── environments
│   └── README.md
├── roles
│   └── README.md
└── userdata.sh

.chef配下に接続するための情報がすでに構成済みなので、そのままknifeコマンドが使えます。

.chef/knife.rb
base_dir = File.join(File.dirname(File.expand_path(__FILE__)), '..')

log_level                :info
log_location             STDOUT
node_name                'pivotal'
client_key               File.join(base_dir, '.chef', 'private.pem')
syntax_check_cache_path  File.join(base_dir, '.chef', 'syntax_check_cache')
cookbook_path            [File.join(base_dir, 'cookbooks')]

chef_server_url          'https://chef-server-y3rrxxxxxxxxxx.us-west-2.opsworks-cm.io/organizations/default'
ssl_ca_file              File.join(base_dir, '.chef', 'ca_certs', 'opsworks-cm-ca-2016-root.pem')
trusted_certs_dir        File.join(base_dir, '.chef', 'ca_certs')
$ knife client list
default-validator
knife client show default-validator
admin:     false
chef_type: client
name:      default-validator
validator: true

Chefを使ってみる

ここからはChefを使っている人は普通にChefを使えると思います。
下記を参照に動かしてみます。
http://docs.aws.amazon.com/ja_jp/opsworks/latest/userguide/opscm-starterkit.html

Berkshelfを使ってApacheをインストールしてみます。

Berksfile
source "https://supermarket.chef.io"
cookbook "chef-client"
cookbook 'apache2'

Cookbookをダウンロードします。

$ berks install
Resolving cookbook dependencies...
Fetching cookbook index from https://supermarket.chef.io...
Using apache2 (3.2.2)
Installing chef-client (7.0.2)
Using compat_resource (12.16.2)
Using cron (3.0.0)
Using logrotate (2.1.0)
Using windows (2.1.1)
Installing ohai (4.2.3)

Chef Serverにアップロードします。

$ SSL_CERT_FILE='.chef/ca_certs/opsworks-cm-ca-2016-root.pem' berks upload
Uploaded apache2 (3.2.2) to: 'https://chef-server-y3rrxxxxxxxxxx.us-west-2.opsworks-cm.io:443/organizations/default'
Uploaded chef-client (7.0.2) to: 'https://chef-server-y3rrxxxxxxxxxx.us-west-2.opsworks-cm.io:443/organizations/default'
Uploaded compat_resource (12.16.2) to: 'https://chef-server-y3rxxxxxxxxxx.us-west-2.opsworks-cm.io:443/organizations/default'
Uploaded cron (3.0.0) to: 'https://chef-server-y3rrxxxxxxxxxx.us-west-2.opsworks-cm.io:443/organizations/default'
Uploaded logrotate (2.1.0) to: 'https://chef-server-y3rrxxxxxxxxxx.us-west-2.opsworks-cm.io:443/organizations/default'
Uploaded ohai (4.2.3) to: 'https://chef-server-y3rrxxxxxxxxxx.us-west-2.opsworks-cm.io:443/organizations/default'
Uploaded windows (2.1.1) to: 'https://chef-server-y3rrxxxxxxxxxx.us-west-2.opsworks-cm.io:443/organizations/default'
$ knife cookbook list 
apache2           3.2.2
chef-client       7.0.2
compat_resource   12.16.2
cron              3.0.0
logrotate         2.1.0
ohai              4.2.3
windows           2.1.1

ダッシュボードを見てもアップロードされているみたいです。
Kobito.tGEXVX.png

デプロイしてみます。

knife bootstrap xx.xx.xx.xx -N test-linux -x ec2-user --sudo --run-list "recipe[apache2]"
   ()
xx.xx.xx.xx Running handlers:
xx.xx.xx.xx Running handlers complete
xx.xx.xx.xx Chef Client finished, 81/103 resources updated in 12 seconds

ダッシュボードではこんな感じで見えます。

Kobito.5Od6gX.png

費用

費用は 管理ノード×時間 みたいです。
10ノードくらいまでは無料なのかな?
それとは別にEC2の費用がかかるようです。

Kobito.yPr1HS.png

まとめ

簡単になってきたとはいえ、Chef Serverを立てるのはめんどくさいですし、Hosted Chefとかは費用も気になりますが、普段使っているAWS上で簡単にセットアップできます。また最初の接続設定とか結構ハマったりしますが、starter-kitがあるので、そこも簡単にできると思います。
自動バックアップとかもあるので、管理はかなり簡単にできるのではないかと思います。
ただ、Chefをがっつり使っている人はすでに環境があるでしょうし、これをきっかけにChef始めようかなーって人がどんだけいるのか?っていう気もしないではないです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1