Chef-soloをProxy環境下なサーバで使えるようにする話(社内環境でよくある話)
※当記事は以前書いたものを整理して書きなおしたものです。
前回書いた時は何徹かしながら書いてたから、内容がかなりおかしかった^^;
書き終わったタイミングで差し替えます
これは何?
社内にある程度自由にできる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サーバのセットアップ
事前準備
[Chef Client/Knife soloサーバ]x1台 --- [node] xN台
事前準備
外部に接続できるよう、必要な箇所にproxyを設定します。
http/https_proxy
export http_proxy=http://proxy:port
export https_proxy=${http_proxy}
Chef Clientのインストール
今回はOpen Source Chefをインストール。
インストール
この辺から環境に応じた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を使いましょう
$ sudo /opt/chef/embedded/bin/gem install 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を作成します。
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を作成する
あとで書くよ
Author And Source
この問題について(Chef-soloをProxy環境下なサーバで使えるようにする話(社内環境でよくある話)), 我々は、より多くの情報をここで見つけました https://qiita.com/nntsugu/items/ecd9ef5ebb51650dde2f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .