*

【構成管理ツール】Chef Server 12を、MacとUbuntuで構築してみた【使ってみた】

      2015/07/08

Chef Server 12の環境を構築します。
今回の投稿はChefに関する知識がある程度ある人用ですので、Chef何それ美味しいのという人は用語とか調べながら環境構築して頂ければ幸いです。

<今回の環境>
いつもどおりAWS上に環境を構築します。詳細は以下のとおり。

1.Chef Server用のEC2
  FQDN:chef-server.k-staging.com
  hostname:chef-server.k-staging.com
  OS:Ubuntu 14.04.2 LTS
  InstanceType:t2.medium
  IdentityFile:~/chef.pem

2.Chefを使って構築したい対象
  FQDN:chef-client.k-staging.com
  hostname:chef-client.k-staging.com
  OS:Amazon Linux AMI release 2015.03
  InstanceType:t2.micro
  IdentityFile:~/chef.pem

3.Workstation用の端末
  OS:Mac OS X

<Chef Serverインストール>
以下を、chef-server.k-staging.com(Chef Server用のEC2)で実行します。
ホスト名の変更、必要なものをインストール。

$ sudo vim /etc/hostname
 chef-server.k-staging.com(ChefServerのホスト名)
$ sudo hostname chef-server.k-staging.com
$ sudo vim /etc/hosts
 127.0.0.1 chef-server.k-staging.com ←追記
 54.XX.XX.XX chef-server.k-staging.com ←追記(Public IP)
$ sudo apt-get update
$ sudo apt-get install -y ntp ←必須ではないが入れておく
$ sudo apt-get install -y ruby ruby-dev

Chef Serverインストール

$ wget https://web-dl.packagecloud.io/chef/stable/packages/ubuntu/trusty/chef-server-core_12.1.0-1_amd64.deb
$ sudo dpkg -i chef-server-core_12.1.0-1_amd64.deb
$ sudo chef-server-ctl install opscode-manage
$ sudo chef-server-ctl reconfigure
$ sudo opscode-manage-ctl reconfigure

ユーザー作成

$ sudo chef-server-ctl user-create k(ユーザー名) k(名前) staging(苗字) mail@k-staging.com(メールアドレス) hogefuga(パスワード) --filename k.pem(ユーザー用の秘密鍵)

Organization作成

$ sudo chef-server-ctl org-create staging(organizationのショートネーム) STAGING(organizationのフルネーム) --association k(ユーザー) --filename k-validator.pem(Organization用の秘密鍵)

これでchef-serverのWeb画面にログインできる状態になったので
ログインしてみましょう。

https://chef-server.k-staging.com/login

ユーザー名とパスワードは先ほど発行したものを入力します。

<chef-client用の設定>
chef-client.k-staging.com(Chefを使って構築したい対象)のホスト名を変更。
あとリモートからsudoできるよう設定変更します。

$ sudo vim /etc/sysconfig/network
 HOSTNAME=chef-client.k-staging.com ←HOSTNAMEの行を変更
$ sudo vim /etc/hosts
   127.0.0.1 chef-client.k-staging.com ←追記
    54.X.X.X chef-client.k-staging.com ←追記(Public IP)
$ sudo hostname chef-client.k-staging.com
$ sudo visudo
  # Defaults    requiretty ←コメントアウト
  Defaults:root    !requiretty ←追記

<MacでのWarkstation環境構築>
MacをWorkstationとして設定します。下記URLからChef DKをダウンロードしてください。

https://downloads.chef.io/chef-dk/mac/#/

ダウンロードできたら指示に従ってインストールして下さい。
インストールが完了したら、Workstationとして利用できるようにします。

$ mkdir ~/.chef && cd ~/.chef
$ scp -i ~/chef.pem ubuntu@chef-server.k-staging.com:/home/ubuntu/k.pem .
$ knife ssl fetch -s https://chef-server.k-staging.com/organizations/staging/
$ knife configure
 WARNING: No knife configuration file found
 Where should I put the config file? [/Users/k/.chef/knife.rb] 空エンター
 Please enter the chef server URL: [https://k.local:443] https://chef-server.k-staging.com/organizations/staging
 Please enter an existing username or clientname for the API: [k] k
 Please enter the validation clientname: [] 空エンター
 Please enter the location of the validation key: [] 空エンター
 Please enter the path to a chef repository (or leave blank): ~/chef
$ vim ~/.bashrc
 export EDITOR=/usr/bin/vim ←追記(これを追記しておかないと、knife role edit等が使えない)
$ source ~/.bashrc
$ mkdir -p ~/chef/cookbooks

<MacからChef Clientのnode登録と、Recipeを実行する>
Macで以下のコマンドを実行して下さい。
chef-client.k-staging.com(Chefを使って構築したい対象)へChef Clientをインストールし、Chef Serverへnode登録を行います。

$ knife bootstrap chef-client.k-staging.com --node-name chef-client.k-staging.com --ssh-user ec2-user --identity-file ~/chef.pem --server-url https://chef-server.k-staging.com/organizations/staging --sudo --bootstrap-install-command "curl -L https://www.chef.io/chef/install.sh | bash"

chef-client.k-staging.comで実行したいrecipeを作ります。
今回はtd-agentをインストールするrecipeを作成。

$ knife cookbook create td-agent
$ vim ~/chef/cookbooks/td-agent/recipes/default.rb
  execute "td-agent install" do
    user "root"
    group "root"
    command "curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh"
    action :run
  end

  service "td-agent" do
    action [ :enable, :start ]
  end

$ knife cookbook upload td-agent

chef-client.k-staging.comのRun Listにtd-agentを追加。

$ knife node run_list add chef-client.k-staging.com "recipe[td-agent]"

chef-clientを実行。

$ knife ssh 'name:chef-client.k-staging.com' 'sudo chef-client' --ssh-user ec2-user --identity-file ~/chef.pem --server-url https://chef-server.k-staging.com/organizations/staging 

td-agentがインストールできたか確認します。

$ knife ssh 'name:chef-client.k-staging.com' 'sudo /etc/init.d/td-agent status' --ssh-user ec2-user --identity-file ~/chef.pem --server-url https://chef-server.k-staging.com/organizations/staging
  chef-client.k-staging.com td-agent(pid XXXXX)を 実行中 ...

td-agentがインストールされてますね!

 - Amazon EC2

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

  関連記事

AWS
【AWS】ELB配下にあるEC2で、htaccessファイルを使う時の注意点【使ってみた】

あけまして、おめでとうございます。 本年も宜しくお願い致しますm(_ _)m 今 …

memo
【td-agent】td-agentをインストールしてみた【使ってみた】

どうも、Kです。 今回はtd-agentをインストールしようと思います。 <やり …

AWS
【AWS】キーペアのインポートをしてみた【使ってみた】

どうも、Kです。 今回はキーペアのインポートを試してみたいと思います。 &nbs …

blogアイコン
【俺のNagiosが】NRPEインストールしてみた【こんなに使いやすいわけがない】

前回に引き続きNagiosについて紹介させていただきます。 <前回のやつ>  h …

blogアイコン
【俺のNagiosが】Nagiosインストールしてみた【こんなに使いやすいわけがない】

おれいもは1期しか見ていない、にわかのKです。最近はアニメすら見なくなってきたの …

blogアイコン
【俺のNagiosが】Nagios・NRPEのcfg設定【こんなに使いやすいわけがない】

どうも、kです。 今回はNagios・NRPEを使ってサーバの監視を行ってみたい …

AWS
【AWS】EC2にS3をマウントしてみた【使ってみた】

どうも、Kです。 今回はs3fsを使ってみます。 <s3fsとは?> Linux …