LoginSignup
0
3

More than 5 years have passed since last update.

AWS OpsWorks for Chef Automate - Getting Started やってみた

Last updated at Posted at 2016-12-11

1. はじめに

  • AWS OpsWorks for Chef Automate サービスがどんなものなのかを調べるため、Getting Started をやってみたこと、その時に躓いたことや気になる点などをメモしておく。
  • ちなみに、AWS OpsWorks for Chef Automate サービスの内容、所感などは別の機会にまとめる。

2. AWS OpsWorks for Chef Automate 利用時の注意点

2.1 Create a Chef Server

  • AWS OpsWorks for Chef Automate サービスの利用にあたり、Chefサーバ(EC2インスタンス)を作成する必要がある。
  • 2016年12月時点では、Chefサーバ用のEC2インスタンスタイプは、次の3タイプ選べる。
    
    t2.medium
    m4.large
    m4.2xlarge
    
  • Chefサーバについて
    • An AWS OpsWorks for Chef Automate server runs on an Amazon Elastic Compute Cloud instance.
    • The instance is configured to run the newest version of Amazon Linux (2016.09), Chef Server 12.x, and the most current version of Chef Automate Server, version 0.6.x.

2.2 Region Support for AWS OpsWorks for Chef Automate

  • 2016年12月時点では、次の3つのリージョンのいずれかに Chefサーバを作成する。
    
    US East (N. Virginia) Region
    US West (Oregon) Region
    EU (Ireland) Region
    

2.3 料金

  • AWS OpsWorks for Chef Automate では、Chef サーバーに接続されているノードの数とそれらのノードの実行時間に基づいて課金されます。
  • Chef サーバーを実行している基盤となる Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに対しても課金されます。前払い料金や最低料金はありません。

3. 事前準備

3.1 Get an AWS Account and Your AWS Credentials

  • AWSアカウント作成 ⇒ すでに作成済みのものを使う
  • IAMユーザ作成、Access Key & Secret Access Key ⇒ 今回は作成していない

3.2 Set Up a VPC

  • Chefサーバ用 EC2インスタンスを起動するための VPC を用意する。
    • このVPCは、2.2 のいずれかのリージョンにある必要がある。
    • 今回は、バージニア リージョンに次のVPCを作成した。ポイントは、「DNS解決」を「はい」にしておくこと(DNS resolution should be enabled.) 20161211-01.png
  • 上記のVPC内に、パブリックサブネットを用意する。
    • 上記VPCにインターネットゲートウェイを作成してアタッチした。
    • 次のパブリックサブネット用のルートテーブを作成した(上記のインターネットゲートウェイを追加)。 20161211-02.png
    • 今回は、次のサブネットを作成した。ポイントは、「自動割り当てパブリック IP」を「はい」にしておくこと(On the subnet, enable Auto-assign public IP.)。ルートテーブルをパブリックサブネット用のルートテーブルへ変更すること。 20161211-03.png

3.3 Set Up an EC2 Key Pair (Optional)

  • これから作成するChefサーバ用EC2インスタンスへSSH接続するため用のSSH keyペアを用意する。ChefサーバへSSH接続出来なくても Chef Automate サービスは利用できるが、念のため。
  • SSH keyペアはリージョン超えは出来ないため、例えば、すでに東京リージョンで作成していても、他のリージョンではそのSSH keyペアを利用することは出来ない。
  • 今回は、バージニア リージョンにChefサーバを作成するため、バージニア リージョンにSSH keyペアを作成する。ちなみに、特にChefサーバへSSH接続しなくても

3.4 Security Group

  • AWS OpsWorks for Chef Automate 用のSecurity Groupを作成しておく。
  • これは、作業用PC(今回は私の自宅のMacBookAir(macOS Sierra, バージョン10.12.1))からChef Automateへ Chefのクックブック登録や、ノード登録などを行う際に必要なアクセス制限を設定する。
  • 今回は、バージニア リージョンに次のセキュリティグループを作成した。送信元のIPアドレスは、私の自宅のインターネット環境のもの。 20161211-04.png

4. Chefサーバ作成

  • 手順

1) AWSマネジメントコンソールへサインイン
https://console.aws.amazon.com/opsworks/

2) サービスOpsWorks ⇒ Chef Automate servers
https://console.aws.amazon.com/opsworks/chefautomate/home?region=us-east-1#/

3) Create Chef Automate server

リージョンはバージニア(US East (N. Virginia))を選択
EC2インスタンスタイプは t2.medium を選択

20161211-05.png

4) Select an SSH key

3.3 で作成した SSH key を選択

20161211-06.png

5) Configure advanced settings - Network and security

VPC, Subnet は、3.2 で作成したものを選択
Security group は、3.4 で作成したものを選択
Service role と、 Instance profile は、どちらも Generate a new one を選択

20161211-07.png

ちなみに、Service role や Instance profile の設定が誤っていると、あとで行う berks upload の際に、次のようなエラーが出る。


Ridley::Errors::HTTPInternalServerError: {"error":["internal service error"]} 

6) Configure advanced settings - System maintenance, Automated backup

今回はデフォルトの設定のままで

7) Review - 設定確認

20161211-08.png

8) Launch - Chefサーバ起動開始

完了まで、約20分・・(実際はもう少し早い)

20161211-09.png

9) credentials ファイルと、Starter kit ファイルを作業用PCへダウンロード

5. Chef Automate dashboard ページへログイン

  • Chefサーバの起動が完了したら、Chef Automate dashboard にサインインできるようになる。 20161211-10.png
  • Chef Automate dashboard の URL は、Server information の項目にある。
    
    https://test-chef-automate-y2angzfa3bcmkx6e.us-east-1.opsworks-cm.io
    
  • ログイン認証情報(Username/Password)は、先ほどダウンロードした credentials ファイルにある。

6. Chef Automate を利用するための設定

6.1 作業用PCに ChefDK をインストールする

  • 私の作業用PCは、自宅のMacBookAir(macOS Sierra, バージョン10.12.1)なので、次のファイルをダウンロードして、インストールした。
    
    Mac OS X/macOS 10.12 ⇒ chefdk-1.0.3-1.dmg

6.2 Starter Kit を配備する例

  • Starter Kit(starter_kit.zip)を、作業用PCの ~/work に置く
  • 作業用PCのターミナルから
$ unzip starter_kit.zip
Archive:  starter_kit.zip
   creating: test-chef-automate-y2angzfa3bcmkx6e/
   creating: test-chef-automate-y2angzfa3bcmkx6e/.chef/
   creating: test-chef-automate-y2angzfa3bcmkx6e/.chef/ca_certs/
   creating: test-chef-automate-y2angzfa3bcmkx6e/cookbooks/
   creating: test-chef-automate-y2angzfa3bcmkx6e/environments/
   creating: test-chef-automate-y2angzfa3bcmkx6e/roles/
  inflating: test-chef-automate-y2angzfa3bcmkx6e/.chef/ca_certs/opsworks-cm-ca-2016-root.pem
  inflating: test-chef-automate-y2angzfa3bcmkx6e/Berksfile
  inflating: test-chef-automate-y2angzfa3bcmkx6e/README.md
  inflating: test-chef-automate-y2angzfa3bcmkx6e/chefignore
  inflating: test-chef-automate-y2angzfa3bcmkx6e/cookbooks/README.md
  inflating: test-chef-automate-y2angzfa3bcmkx6e/environments/README.md
  inflating: test-chef-automate-y2angzfa3bcmkx6e/roles/README.md
  inflating: test-chef-automate-y2angzfa3bcmkx6e/.chef/knife.rb
  inflating: test-chef-automate-y2angzfa3bcmkx6e/.chef/private.pem
  inflating: test-chef-automate-y2angzfa3bcmkx6e/userdata.sh

$ cd test-chef-automate-y2angzfa3bcmkx6e

$ 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

5 directories, 10 files

6.3 Berkshelfを使って、リモートソースからクックブックを取得する、Chefサーバへアップロード

  • Berksfile ファイルに apache2 のクックブックを追加する
$ cat Berksfile
source "https://supermarket.chef.io"
cookbook "chef-client"
cookbook "apache2"
  • クックブックを取得
$ berks vendor
Resolving cookbook dependencies...
Fetching cookbook index from https://supermarket.chef.io...
Using apache2 (3.2.2)
Using chef-client (7.0.3)
Using compat_resource (12.16.2)
Using cron (3.0.0)
Using logrotate (2.1.0)
Using ohai (4.2.3)
Using windows (2.1.1)
Vendoring apache2 (3.2.2) to /Users/toru-nishimura/work/test-chef-automate-y2angzfa3bcmkx6e/berks-cookbooks/apache2
Vendoring chef-client (7.0.3) to /Users/toru-nishimura/work/test-chef-automate-y2angzfa3bcmkx6e/berks-cookbooks/chef-client
Vendoring compat_resource (12.16.2) to /Users/toru-nishimura/work/test-chef-automate-y2angzfa3bcmkx6e/berks-cookbooks/compat_resource
Vendoring cron (3.0.0) to /Users/toru-nishimura/work/test-chef-automate-y2angzfa3bcmkx6e/berks-cookbooks/cron
Vendoring logrotate (2.1.0) to /Users/toru-nishimura/work/test-chef-automate-y2angzfa3bcmkx6e/berks-cookbooks/logrotate
Vendoring ohai (4.2.3) to /Users/toru-nishimura/work/test-chef-automate-y2angzfa3bcmkx6e/berks-cookbooks/ohai
Vendoring windows (2.1.1) to /Users/toru-nishimura/work/test-chef-automate-y2angzfa3bcmkx6e/berks-cookbooks/windows

[注意]
Webのドキュメントでは、「berks install」と記載されているけど、「berks vendor」に置き換わりましたというメッセージが出る。starter_kit.zipの中にあるREADME.mdでは、「berks vendor」となっている。

  • クックブックをChefサーバへアップロード
$ SSL_CERT_FILE='.chef/ca_certs/opsworks-cm-ca-2016-root.pem' berks upload
Uploaded apache2 (3.2.2) to: 'https://test-chef-automate-y2angzfa3bcmkx6e.us-east-1.opsworks-cm.io:443/organizations/default'
Uploaded chef-client (7.0.3) to: 'https://test-chef-automate-y2angzfa3bcmkx6e.us-east-1.opsworks-cm.io:443/organizations/default'
Uploaded compat_resource (12.16.2) to: 'https://test-chef-automate-y2angzfa3bcmkx6e.us-east-1.opsworks-cm.io:443/organizations/default'
Uploaded cron (3.0.0) to: 'https://test-chef-automate-y2angzfa3bcmkx6e.us-east-1.opsworks-cm.io:443/organizations/default'
Uploaded logrotate (2.1.0) to: 'https://test-chef-automate-y2angzfa3bcmkx6e.us-east-1.opsworks-cm.io:443/organizations/default'
Uploaded ohai (4.2.3) to: 'https://test-chef-automate-y2angzfa3bcmkx6e.us-east-1.opsworks-cm.io:443/organizations/default'
Uploaded windows (2.1.1) to: 'https://test-chef-automate-y2angzfa3bcmkx6e.us-east-1.opsworks-cm.io:443/organizations/default'
  • クックブックのアップロード確認
$ knife cookbook list
apache2           3.2.2
chef-client       7.0.3
compat_resource   12.16.2
cron              3.0.0
logrotate         2.1.0
ohai              4.2.3
windows           2.1.1

Chef Automate dashboard で確認すると、"COOKBOOK CHANGES"のところが 7 となっている。

7. Chef サーバに ノードを追加する

7.1 ノード(EC2インスタンス)を作成

  • 今回は、テスト用として、東京リージョンの適当なVPCに適当なEC2を作成する。
    • AMI: Amazon Linux AMI 2016.09.0 (HVM), SSD Volume Type - ami-0c11b26d
    • 自動割り当てパブリック IP: 有効化
    • タグ名: chef-node-test
    • セキュリティグループ: 私の自宅のインターネット環境からのSSH接続を許可する
  • [注意]サポートしているOSの一覧

7.2 Chefサーバのセキュリティグループに、 7.1 で作成した EC2 からの HTTPS 接続を許可する設定を入れる。

7.3 nodeのセットアップ、クックブック適用

  • 作業用PCのターミナルから
$ knife bootstrap 54.199.172.154 -N chef-node-test -x ec2-user -i ~/.ssh/aws/*** --sudo --run-list "recipe[chef-client],recipe[apache2]"
..
54.199.172.154 Running handlers:
54.199.172.154 Running handlers complete
54.199.172.154 Chef Client finished, 90/113 resources updated in 20 seconds

$ knife node show chef-node-test
Node Name:   chef-node-test
Environment: _default
FQDN:
IP:          54.199.172.154
Run List:    recipe[chef-client], recipe[apache2]
Roles:
Recipes:     chef-client, chef-client::default, apache2, apache2::default, chef-client::service, chef-client::init_service, apache2::mpm_prefork, apache2::mod_status, apache2::mod_alias, apache2::mod_auth_basic, apache2::mod_authn_core, apache2::mod_authn_file, apache2::mod_authz_core, apache2::mod_authz_groupfile, apache2::mod_authz_host, apache2::mod_authz_user, apache2::mod_autoindex, apache2::mod_deflate, apache2::mod_dir, apache2::mod_env, apache2::mod_mime, apache2::mod_negotiation, apache2::mod_setenvif, apache2::mod_log_config, apache2::mod_logio, apache2::mod_unixd
Platform:    amazon 2016.09
Tags:
0
3
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
3