ゲスト投稿:「Chef活用ガイド コードではじめる構成管理」発売1周年 #getchef
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本稿は 「Chef活用ガイド コードではじめる構成管理」発売1周年 (2015/04/28) からのゲスト投稿です。
「Chef活用ガイド コードではじめる構成管理 (大型本), (Kindle版)」が 2014/4/28 に世に出て1年、「Infrastructure as Code」という考え方や本書で提唱する基本コンセプトはいささかも古くなっておらず、まだまだ通用するものです。しかし、Chef を取り巻く技術要素には大きな変化があった 1年でした。特に大きかったものを振り返って見ていきましょう。
Chef社公式サイト URL
本書執筆中に Opscode 社から Chef Software 社へと社名が変更されたことと共に公式サイトの URL が http://www.opscode.com/ から http://www.getchef.com/ となり、置換作業にてんてこ舞いになった記憶が冷めやらぬうちに、今度は https://www.chef.io/ となりました。参考: 新アドレス: www.chef.io
Chef-Client ローカルモード
Chef の利用形態として「Chef-Server/Client 構成」と「Chef-Solo」があると解説(p.33)しました。2014/6 に Chef-Solo に取って代わるものとして、Chef-Client ローカルモードが大きく取り上げられました。参考: ソロからゼロへ: Chef Clientローカルモードへの移行, Chef-SoloからChef-Clientローカルモードへの移行
Chef-Zero
本書で解説を行いませんでしたが、Chef-Zero はメモリ上で動作する軽量で簡易、しかしフル機能の Chef-Server です。Chef-Zero は単に Chef-Client ローカルモードで利用しているいち技術に過ぎないのですが幸か不幸か大きく取り上げられてしまい、さらに同時に Chef-Solo から Chef-Client ローカルモードに切り替えていくという話題も出たため、「Chef-Solo から Chef-Zero に移行する」という捉え方をされることが大変目につきます。「1 (solo)から 0 (zero)へ」という字面や語呂がよかったことも悪目立ちした原因かもしれません。偶然この記事を読んだ皆さんは単にややこしくなるだけなので 一旦 Chef-Zero を記憶の中から消しましょう。参考: 軽量簡易Chef Server「chef-zero」を使ってみよう
Knife-Zero
本書の発売後、Chef-Client ローカルモードの登場を受けて作成された Knife プラグインです。Chef-Client ローカルモードと同じく、Chef-Zero を活用し、Chef-Server を用意せずとも手元で手軽に Chef-Server 相当の管理ができるようになっています。すなわち、本書で提唱する基本コンセプトに沿えば、Chef-Serverをオンプレミスで使うかホステッドで使うかという二択に、Knife-Zero で(あたかも Chef-Server が存在するように)使う、という第三の選択肢を加えた形になります。参考: Knife-Zero, Knife-ZeroでInfrastructure as Codeを始めよう
さて、本書で取り上げていない Knife-Solo から、Knife-Zero へ急いで移行すべきでしょうか? 答えは「いいえ」です。Knife-Solo は Chef-Solo を使う際のもろもろの処理を一括でできるようにしてワークフローを簡略化したもので、両者はそもそもの基本コンセプトからして異なるのです。「Chef-Solo がなくなるなら Knife-Solo もなくなるのでは?」と心配する必要はありません。Knife-Solo も内部で Chef-Client ローカルモードを利用するように検討されていますし、Chef-Solo も一朝一夕削除されることになったわけではありません。参考: Chef-Solo, Chef-Client LocalMode, Knife-Solo, Knife-Zero and us.
Ohai
本書は Ohai の安定版であるバージョン 6 を対象として執筆していました(p.50)。しかし、2014/1 にリリース候補版であるバージョン 7 RC が発表されました。そのため現行の安定版であるバージョン 6 を対象とするか、本書が発売されたときにリリースされているであろうバージョン 7 を対象とするか、議論がありました。いかに RC といえども変更がないわけではないという判断からバージョン 6 を対象として執筆を続けました。結局、Ohai 7 は 2014/4/9 にリリースされ、2015/4 の現在は Ohai は 8 となっており、本書の内容がそのまま適用できない場面があります。参考: Ohai 7.0 リリース候補版, 事後報告: ohaiと-mixlib-shellout gemのリリース問題
Chef-Server
本書は Chef-Server バージョン 11 を対象として執筆していました(p.71)。その後 2014/11 に Chef-Server はバージョン 12 がリリースされました。当時は無償でノーサポートの Open Source Chef と有償でサポートつきの Enterprise Chef がありました。Chef Server 12 からは両者は統合され、いわゆるフリーミアムのビジネスモデルをとるようになりました。そのため、Open Source Chef の記述はほとんどが歴史的なものとなりました。参考: Chef Starter Kitの活用
さらに、有償アドオンとして紹介していた(p.428) Chef Manager、Reporting、Push Jobs は、25 Nodeまでなら無償で利用できます。参考: Chef Server 12 リリース候補版
Chef-Client
本書は Chef-Client バージョン 11 を対象として執筆していました(p.101)。バージョン 12 の現在、先に述べたローカルモードを含めて、書ききれないほど大量の変更が加えられています。参考: 12.0.0 RC, 12.0.0, 12.0.1, 12.0.x, 12.0.3, 11.18.0, 11.18.6, 12.1.0, 12.1.1, 12.1.2, 12.2.0, 12.2.1
SSL 検証がデフォルトで有効になったことも大きいでしょう。参考: Chef 12の新機能: knife ssl check/fetch
Workstation
本書では Workstation のセットアップに Chef-Client のインストールから始めていました(p.157)。現在は Workstation での Chef 環境の設定を簡略化する Chef Development Kit (別名 Chef-DK, ChefDK) が登場しています。これのおかげで Chef の導入がとても簡単になったと言えるでしょう。Chef を使うならまず Chef-DK をインストールしましょう。さらに Knife-Zero をインストールしておけば、Chef を使い始める形としてほぼ間違いありません。参考: Chef Development Kit
暗号化 Data Bag
本書では秘密にしておく必要のあるデータを Data Bag に格納する際、暗号化 Data Bag を紹介していました(p.246)。現在では安全性や利便性の面から chef-vault が推奨されているようです。参考: Chef-Vaultを使ってみる
Cookbook
基本構造は特に変わっていません。ただ、細かい更新が重ねられています。例えば、metadata.rb で省略可能だった name は必須になりました(p.327)。
Chef Client 12.0.0 からは、templates や files ディレクトリで default ディレクトリが不要となりました。参考: Chef Client 12.0.0 リリース
ResourceとProviderの動的解決が行われるようになりました。参考: Chef 12におけるResourceとProviderの動的解決
コミュニティサイト
2014/7 に Supermarket が立ち上がりました。参考: Supermarket グランドオープン
ChefSpec
本書は ChefSpec バージョン 3 を対象としていましたが、2015/4 現在、ChefSpec はバージョン 4 で、多くの変更が加えられています。
Berkshelf
本書では Berkshelf バージョン 2 を対象としていました。ただし、一部バージョン 3 への言及もありました(p.405)。2015/4 現在、Berkshelf はバージョン 3 で、多くの変更が加えられています。参考: Berkshelf Workflow
Chef Audit Mode
Chef が実験的とはいえ、Serverspec を組み込んで監査モード(Audit Mode)を提供するようになったのは大きなニュースと言えます。参考: Chef Audit Modeを使ってみる
Chef Analytics
有償アドオンとして、Chef Analytics が登場しました。
ResourcesとProviders
既存のものに細かい変更が加えられたほか、Windows関係が拡充されました。参考: Chef Client 11.16.0がPowerShell DSCをサポート
Knifeプラグイン
昨今注目著しい Docker を利用するための knife-container が登場しました。参考: Chef Container 0.2.4 で Docker コンテナを作成する
ここでも何度も言及している通り、Knife-Zero の登場も大きいでしょう。
まとめ
Chef を取り巻く技術要素に大きな変化があったものの、「Infrastructure as Code」という考え方や本書で提唱する基本コンセプトはまだまだ通用するものです。個々の技術要素については適宜読み替えていただき、引き続き本書のエッセンスを活用していただければ幸いです。