blogがどういうわけかgoogleさんに好かれているので、続編を書きました。Soloと正しい始め方を読んで、じゃあ実際に色々やってみようかな。いえ、チュートリアル的なことでなく、もうちょっと実践的なことをして理解を深めたい。Soloを説明していきます。鍵認証の設定sudo有効化sshの設定iptablesの設定さくらVPSでよく行われる初期設定で、これを実施すればrootが乗っ取られてヤバイことになった。いう事態は防げるはずです。AWSのEC2ですと、デフォルトで設定される内容になっていますので、さくらVPSをEC2レベルまでセキュリティ向上させるのを目標にします。自分のローカルの環境は以下のとおりです。Vagrantで作ったVM等でも問題なく動作するはずです。initコマンドを使って作成します。vps-start-chef-cookbooks/今回、サードパーティのcookbookの管理にはberksを使用します。berksのコマンドを使って、berksに必要なファイルを作成します。initializedローカルの準備は整ったので、次にサーバ側の設定を行います。Soloが実行できる状態ではありません。prepareコマンドを使用してChefをサーバにインストールします。(VPSのIPが133.242.191.168という設定で進めます。'nodes/133.242.191.168.json'...これで準備は完了です。初期状態ではrootユーザーしか存在しないため、通常作業用に一般ユーザーを作成します。今回はサードパーティで用意されているcookbookを利用しながらChefの仕組みを理解していくために、積極的に採用していきます。Communityで検索すると、やりたいことが出来るcookbookが見つかるかと思います。GitHubを利用します。サードパーティのcookbookを使うには、cookbookをダウンロードしてくる必要があります。installコマンドを実行します。サードパーティのcookbookはcookbooksディレクトリに置いておく慣習があるため--pathオプションでcookbooksを指定しておきましょう。userさて、どうやってこれを利用していくかですが、サードパーティのcookbookには大きく3つあるようです。Providers)だけが書かれているcookbookです。そもそもLWRPというのは、独自のResourceを定義する機能です。LWRPの細かい説明は省略しますが、要は標準で提供されているResourceより、便利になった独自Resourceが使えるようになるcookbook。それが、LWRP型です。GitHubはLWRP型のcookbookですので、実際に使用してみましょう。(Attribute型は後述します)READMEを読むと、user_accountというLWRPが使うことが出来ることがわかります。標準のuserResourceとの違いは、SSHの公開鍵をauthorized_keysに置けるところです。それではuser_accountを呼び出すためのcookbookを作って、recipeを編集していきます。site_userrecipeを編集しましょう。tsuchikazuとユーザを作成してみます。ssh_keysにはあらかじめ作成しておいた公開鍵を指定します。recipeを追加しましょう。この時に、サードパーティのrecipeを先に書いておくことで、その後に指定したrecipeでサードパーティが提供しているLWRPを使用することが出来るようになります。]}これで、userを追加する準備が整いました。今追加しようとしているuserでsudoコマンドを使えるようにします。普通にやるとするとvisudoコマンドでsudoresファイルを編集するでしょうか。GitHubを使うことにします。GitHubは、まだ説明していないAttribute型に分類されます。Attribute型というのはrecipeが記述されていますが、重要部分がAttributeが使用されており、そのAttributeの値を上書きすることで、思い通りにrecipeを実行するというものです。GitHubのrecipeをみると、Attributeが使用されているのがわかるかと思います。GitHubと見比べると一目瞭然です。実際にJSONファイルでAttributeを指定しましょう。指定するAttributeはREADMEを見て、調べましょう。ここでは、tsuchikazuユーザをパスワード無しでsudo出来るような設定にしてあります。}}これでユーザ作成の準備完了です。Soloを実行してみましょう。passwordを何度も聞かれますが、めげずに入力してください。root@133.242.191.168実際に作成されたか、試してみてください。PWなしでログイン出来るはずです。先ほどのユーザ作成でサードパーティの使い方は説明したので、復習のために設定を進めます。SSHの設定ということで、以下の設定をします。GitHubのcookbookを使ってやってみます。このcookbookはAttribute型なため、JSONファイルでAttributeを指定します。}}これでSSHの設定は完了です。次にiptablesの設定ということで、以下の設定をします。GitHubのcookbookを利用して、行います。GitHubはLWRP型のcookbookなので、cookbookを作成してrecipeからLWRP呼び出します。Soloを実行してみましょう。ユーザには先ほど作成したユーザを指定してみてください。無事設定が反映されているでしょうか。tsuchikazu@133.242.191.168まとめこれで簡単なサードパーティのcookbookを利用できるようになったはずです。サードパーティのcookbookを利用する際のコツは、とにかくREADMEを読んでやってみて、エラーになったらcookbookを読む。READMEもcookbookによっては、適当で不親切なものがありますので、直接ソースを読むかサードパーティを使わないという手を取るのもいいかと思います。ちなみに、自分はこうやって使っているというだけですので、間違い等あれば指摘していただきたいです。今回、サードパーティのcookbookを使って初期設定を進めました。サードパーティを使ったかというと、naoyaさんの入門書を皮切りにChef入門記事が量産されました。blogこれもその1つです。それらを読んでも、サンプルを実行するぐらいで私は自前でrecipeなどを書ける気に全くなりませんでした。そこで、次にやったのが今回紹介したサードパーティcookbookを使いまくる。今回紹介したものに加え、nginxやmysqlなど色々なcookbookを読みながら使いまくりました。すると自然とLWRPやAttribute、Recipeの書き方が少しずつわかってきた(気がした)のです。いうことで、入門の次のステップとしてサードパーティのcookbookの使い方を書きました。今回作成したChefリポジトリはtsuchikazu/vps-start-chef-cookbooksで公開していますので、参考になれば幸いです。