7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Chef-soloをProxy環境下なサーバで使えるようにする話(社内環境でよくある話)

Last updated at Posted at 2014-09-29
※当記事は以前書いたものを整理して書きなおしたものです。
 前回書いた時は何徹かしながら書いてたから、内容がかなりおかしかった^^;
 書き終わったタイミングで差し替えます

これは何?

社内にある程度自由にできるPrivateCloud環境(ex. OpenStack)が出来た&多量のサーバを構築するニーズがあるので、Chefを導入してみました。
まずはChef-solo環境を構築するまでのお話。
Chef-serverはまた今度。

ChefはAgentを必要とするタイプの構成管理ツールです。
node(=chefでprovisioningするサーバ)にChef ClientがインストールされていないとChefが料理することができません。

当記事では下記について書いていきます。

  • 1.Chef Client/Knife soloサーバのセットアップ
  • 2.nodeにChef Clientをセットアップするbootstrapを作成する

今回作る構成


[Chef Client/Knife soloサーバ]x1台 --- [node] xN台


1.Chef Client/Knife soloサーバのセットアップ

事前準備

外部に接続できるよう、必要な箇所にproxyを設定します。

http/https_proxy


export http_proxy=http://proxy:port
export https_proxy=${http_proxy}

Chef Clientのインストール

今回はOpen Source Chefをインストール。

インストール

download.png

この辺から環境に応じたChef Clientをダウンロードします。

install_Chef-client
$ curl -LO https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-11.12.8-2.el6.x86_64.rpm
$ sudo rpm -i chef-11.12.8-2.el6.x86_64.rpm

確認

バージョン確認

$ chef-client -v
$ knife -v
Chef: 11.12.8

こんな感じに補完されればOK

$ chef-[TAB]
chef-apply   chef-client  chef-shell   chef-solo

Knife soloのインストール

インストール

ChefのGemを使いましょう

install_Knife-solo
$ sudo /opt/chef/embedded/bin/gem install knife-solo

確認

check_Knife-solo
$ knife solo
に下記の項があればOK
** SOLO COMMANDS **
knife solo bootstrap [USER@]HOSTNAME [JSON] (options)
knife solo clean [USER@]HOSTNAME
knife solo cook [USER@]HOSTNAME [JSON] (options)
knife solo init DIRECTORY
knife solo prepare [USER@]HOSTNAME [JSON] (options)

Chef Repositoryの作成

knife soloで作ります。

knife solo init ${TargetDir}
            ↓↓↓
$ knife solo init repository
WARNING: No knife configuration file found
Creating kitchen...
Creating knife.rb in kitchen...
Creating cupboards...

確認

$ ls -al repository/
total 40
drwxr-xr-x 9 user group 4096 Jun 25 12:21 .
drwxr-xr-x 3 user group 4096 Jun 25 12:21 ..
drwxr-xr-x 2 user group 4096 Jun 25 12:21 .chef
drwxr-xr-x 2 user group 4096 Jun 25 12:21 cookbooks
drwxr-xr-x 2 user group 4096 Jun 25 12:21 data_bags
drwxr-xr-x 2 user group 4096 Jun 25 12:21 environments
-rw-r--r-- 1 user group   12 Jun 25 12:21 .gitignore
drwxr-xr-x 2 user group 4096 Jun 25 12:21 nodes
drwxr-xr-x 2 user group 4096 Jun 25 12:21 roles
drwxr-xr-x 2 user group 4096 Jun 25 12:21 site-cookbooks

$ tree
.
└── repository
    ├── cookbooks
    ├── data_bags
    ├── environments
    ├── nodes
    ├── roles
    └── site-cookbooks

.chef/knife.rbにProxy周りの設定を登録

knifeがnodeにrecipeを適用する際に使用するproxyの設定を登録するよ

先ほど作ったリポジトリの中の

ここ
drwxr-xr-x 2 user group 4096 Jun 25 12:21 .chef

ここにknife.rbを作成します。

.chef/knife.rb
cookbook_path    ["cookbooks", "site-cookbooks"]
node_path        "nodes"
role_path        "roles"
environment_path "environments"
data_bag_path    "data_bags"
# encrypted_data_bag_secret "data_bag_key"

knife[:berkshelf_path] = "cookbooks"


if ENV["http_proxy"]
  require 'rest-client'
  RestClient.proxy = ENV["http_proxy"]

  require 'uri'
  proxy_env = URI.parse(ENV["http_proxy"])
  proxy_user, proxy_pass =
  #proxy_user, proxy_pass = proxy_env.userinfo.split(":")

  http_proxy "http://#{proxy_env.host}:#{proxy_env.port}"
  https_proxy "http://#{proxy_env.host}:#{proxy_env.port}"
  http_proxy_user proxy_user
  http_proxy_pass proxy_pass
  https_proxy_user proxy_user
  https_proxy_pass proxy_pass
  no_proxy "192.168.*"
end

if句”if ENV["http_proxy"]”の中身がproxy設定。
環境変数http_proxyが定義されていればそれを使用する形です。

ここまででChef Client/Knife soloサーバのセットアップは完了です。
次にnodeをprovisioningするための下準備をするためのbootstrapを作成します。

2.nodeにChef Clientをセットアップするbootstrapを作成する

あとで書くよ

7
7
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
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?