最近ConoHaのVPSで遊んでます。
安いしコンソール見やすいしいい感じ。
最終的にはRails環境を作りたいんだけどせっかくなのでChefを使ってやってみる。
ただLinuxもあまり分からないから調べることだらけ。
なんとかchef soloが通るとこまで行ったので一旦メモしておきます。
まだまだ頭の中整理できてないので変なこと書いてたら指摘お願いします。
やりたいこと
・標準テンプレートOSをインストールしたConoHaVPSに対して、・できるだけ少ない手順で knife solo cook が通るようにする。
まずはここまで。
環境
MacBookAir 2013 MidOS X Yosemite 10.10.2
Chef Solo 12.1.1(どうやって入れたか覚えてない)
手順
VPSの作成
OSはテンプレートイメージの CentOS 6.5 を選択。残りは全部安いやつ。
1〜2分待てば起動する。
ローカル側でSSH接続準備
ConoHaコントロールパネルからSSH Private Keyをダウンロードする。1234567-1.keyみたいな名前。とりあえずホームディレクトリ(~/)に置く。
ここからローカル側Macのターミナル.appで操作
ローカル側(MacBookAir)
$ cd ~ // ~/.sshフォルダが存在しない場合はフォルダ作成 $ mkdir .ssh $ chmod 700 .ssh/ $ mv 1234567-1.key .ssh/conoha_private_key $ cd .ssh/ $ chmod 600 conoha_private_key $ vi config //configファイルは下記のようにして保存。すでにある場合は追記する。 Host conoha HostName [VPSのIP] IdentityFile ~/.ssh/conoha_private_key User root //うまく設定できていれば下記コマンドでssh接続ができるはず。 $ ssh conoha [root@v[xxx-xxx-xxx-xxx]] ~]# logout Connection to xxx.xxx.xxx.xxx closed. //成功
どうもConoHaの標準テンプレートを使うとVPS作成時に選んだ秘密鍵でrootへSSH接続できるみたい。 この鍵はVPSをホストしている共有サーバ部分への接続にも使うらしいからあまり共用しない方がいい気がするけどよくわからん。もう少し詳しくなってから考えることにする。
VPS側でChef接続用ユーザーの作成
Chefを実行するためにはSSH接続可能且つパスワードなしでsudo可能なユーザーが必要らしい。ConoHa側に専用の'chef'ユーザーを作成し、rootに設定済みの公開鍵をchefユーザーでも利用可能にする。(rootへのssh接続は後で禁止します)ローカル側(MacBookAir)
$ ssh conoha
ここからVPSのrootユーザーでの操作
VPS側(rootユーザー)
# adduser chef # passwd chef ユーザー chef のパスワードを変更。 新しいパスワード: <パスワードを決めて入力> 新しいパスワードを再入力してください: <パスワードを再入力> passwd: 全ての認証トークンが正しく更新できました。 # visudo // 下記1行を追加(パスワードなしでsudoできるようになる) root ALL=(ALL) ALL ←この行の下に chef ALL=(ALL) NOPASSWD:ALL ←この行を追加 // 保存して閉じる(esc -> :wq) # mkdir /home/chef/.ssh # cp ~/.ssh/authorized_keys /home/chef/.ssh/ # cd /home/chef/.ssh/ # ls -la drwxr-xr-x 2 root root 4096 4月 1 00:08 2015 . drwx------ 3 chef chef 4096 4月 1 00:08 2015 .. -rw------- 1 root root 445 4月 1 00:08 2015 authorized_keys # chown chef:chef authorized_keys # chown chef:chef . # chmod 600 authorized_keys # chmod 700 . # ls -la drwx------ 2 chef chef 4096 4月 1 00:08 2015 . drwx------ 3 chef chef 4096 4月 1 00:08 2015 .. -rw------- 1 chef chef 445 4月 1 00:08 2015 authorized_keysこれでVPS側は一旦終わり。logoutで抜ける。
ローカル側(MacBookAir)
$ cd ~/.ssh/ $ vi config //root接続用になってるところをchefに書き換える Host conoha HostName [VPSのIP] IdentityFile ~/.ssh/conoha_private_key User root ← chefに書き換える //これでchefユーザーでssh接続できるはず。 $ ssh conoha [chef@vxxx-xxx-xxx-xxx ~]$ who am i chef pts/0 2015-04-01 00:17 [chef@vxxx-xxx-xxx-xxx ~]$ logout Connection to xxx-xxx-xxx-xxx closed. //成功これでchef solo実行準備が整った。
ChefでHello World
Chef-Soloを使ってVPSにHello Worldしてみることまでやってみます。キッチン(リポジトリ)の作成
knife solo initコマンドを使ってリポジトリ(cookbookを入れていくための箱)を作ります。ローカル側(MacBookAir)
$ cd ~ $ knife solo init conoha-helloworld WARNING: No knife configuration file found Creating kitchen... Creating knife.rb in kitchen... Creating cupboards... Setting up Berkshelf...
こんな感じでファイルが生成されてるはず
Cookbookの作成
knife cookbook createコマンドを使ってクックブック(レシピを入れるための箱)を作ります。ローカル側(MacBookAir)
$ cd ~/conoha-helloworld/ $ knife cookbook create helloworld -o site-cookbooks/
-oで指定した site-cookbooksフォルダにhelloworldクックブックが生成されました。
レシピの編集
helloworldクックブックの中にあるrecipes/default.rbを修正します。log "Hello World!!"これだけ。
VPSにchefをインストール
さて、レシピを作ったので実行準備。knife solo prepareコマンドを使ってvpsにchefをインストールします。ローカル側(MacBookAir)
$ knife -v Chef: 12.1.1 $ knife solo prepare conoha WARNING: No knife configuration file found Bootstrapping Chef... //インストールログがずらずらと Thank you for installing Chef! Generating node config 'nodes/conoha.json'... //インストール完了 //vps側で確認してみる。 $ ssh conoha
VPS側(chefユーザー)
[chef@vxxx-xxx-xxx-xxx ~]$ knife -v Chef: 12.1.1これでVPSにchefをインストールできました。
VPSにレシピを適用
knife solo prepareを行ったときに、conoha-helloworld/nodes/conoha.jsonが生成されています。このホストに対してどのcookbookを適用するかを管理するファイル。
すでにhelloworldクックブックは作成済みなのでこれを適用するようにconoha.jsonを書き換えます。
{ "run_list": [ "recipe[helloworld]" ←この1行を追加 ], "automatic": { "ipaddress": "conoha" } }あとはcookするだけ。
knife solo cookコマンドでレシピを適用します。
ローカル側(MacBookAir)
$ cd ~/conoha-helloworld/ $ knife solo cook conoha Running Chef on conoha... Checking Chef version... Installing Berkshelf cookbooks to 'cookbooks'... Resolving cookbook dependencies... Uploading the kitchen... Generating solo config... Running Chef... Starting Chef Client, version 12.1.1 Compiling Cookbooks... Converging 1 resources Recipe: helloworld::default * log[Hello World!!] action write Running handlers: Running handlers complete Chef Client finished, 1/1 resources updated in 1.36169233 secondsHello World出ましたね!今日はここまで。
ここから先はcookbook作成→レシピ編集→conoha.jsonに追記→knife solo cook conohaの繰り返しです。
Rails環境の構築ができたらまた整理します。