techiumスマートフォン用の表示で見るtechiumこのブログは何かに追われないと頑張れない人たちが週一更新をノルマに技術情報を発信するブログです。いただけますと気が向いたら調査するかもしれません。この広告は、90日以上更新していないブログに表示しています。2016-07-15ChefのKnife用プラグインを作ってみたこちらの記事でも触れていますが、ChefはKnifeというコマンドラインツールを使用してリポジトリ操作を行います。Knifeにはサブコマンドが多数用意されており、それらを使ってリポジトリの作成やクックブックの作成を行うわけですが、自分で新たにプラグインを作成することで、サブコマンドとして利用することもできます。いうわけで、今回は試しにKnifeプラグインを作成し、自前のサブコマンドを作成してみたいと思います。Knifeプラグインの作成Knifeプラグインの作成はとっても簡単。公式にベースとなるコードがあるので、それをベースに処理を記述していくだけでオッケーです。今回は以下のようにしてみます。ポイントはまず2行目、クラス名を定義していますが、このクラス名でサブコマンド名が決まります。〜となるのでクラス名の大文字には注意します。4〜6行目のブロックには依存関係のあるライブラリをrequireで定義します。'json'を定義しています。8行目のbannerはヘルプで表示される説明文(?)です。以下のようになります。-hnodeオブジェクトファイルのrun_listを自動で生成します。message2行目に表示されているのがわかります。10〜14行目ではコマンドラインオプションを定義しています。今回はnodeオブジェクトのファイルパスを受け取ることにします。上記のヘルプをよく見てみると、17行目あたりに作成したオプションが表示されいているのがわかります。17行目からのrunメソッド内に、実際の処理を記述しています。nodeオブジェクトファイルを読み込んで、site-cookbooksディレクトリ内のフォルダ名をレシピ名として利用し、run_listを作成しています。完成したJSONを、最後に書き込んでいます。実行してみるさて、実際に実行してみるわけですが、まずは作成したプラグインファイルを以下のいずれかの方法で配置する必要があります。・RubyGemsのパッケージとしてインストールとりあえず、一つ目のホームディレクトリに配置しました。./nodes/centos6-chef.jsoncentos6-chef.jsonファイルを見てみると、{"run_list":["recipe[apache]","recipe[certbot]","recipe[ssh]"],"automatic":{"ipaddress":"uentseit2.com"}}改行がなくなってしまいましたが...run_listは正しく構築されているようです。いうわけで、今回はこんなところです。(1)はてなブログをはじめよう!kobashin__Gさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。