執筆時の chef のバージョンは以下のとおりです。 $ rpm -q chef chef-11.16.4-1.el6.x86_64chef でファイルの変更をする場合、 chef/file_edit.rb at 11.16.4 · opscode/chef · GitHub を使うことで簡単に行うことができます。 実際にコードを書く場合は、 file "/tmp/testfile" do f = Chef::Util::FileEdit.new(path) f.insert_line_if_no_match(/hogehoge/, "hogehoge") f.write_file end のように記述することでファイルを変更することができます。 各メソッドを簡単に説明すると、 insert_line_if_no_match は、第一引数の regex に match しなければ第二引数の
Cookbookの共通化(library) 前回エントリではrecipeとdefinitionを用いたCookbookの共通化の手順を紹介しました。 今回はChefのもうひとつの共通化の仕組みであるlibraryを紹介します。 libraryって libraryはRubyコードを用いて、Chefに新しいクラスやメソッドを追加することができる仕組みです。 libraryはクックブック内のlibraries/library_name.rbに定義することで自動で読み込まれ、recipes, attributes, file, definitions, providers, definitionsで利用することができます。 libraryの用途は以下の様なものがあります。 ファイルに格納されている属性値へのアクセス ループのようなプログラムテクニックの利用 Chefのレシピから直接呼び出せるような
All resources (including custom resources) share a set of common actions, properties, conditional executions, notifications, and relative path options. ActionsThe following actions may be used with any resource: :nothingThis resource block does not act unless notified by another resource to take action. Once notified, this resource block either runs immediately or is queued up to run at the end of
instance_variable_set(var, value) -> object[permalink][rdoc][edit] オブジェクトのインスタンス変数 var に値 value を設定します。 インスタンス変数が定義されていなければ新たに定義されます。 [PARAM] var: インスタンス変数名を文字列か Symbol で指定します。 [PARAM] value: 設定する値です。 [RETURN] value を返します。 obj = Object.new p obj.instance_variable_set("@foo", 1) #=> 1 p obj.instance_variable_set(:@foo, 2) #=> 2 p obj.instance_variable_get(:@foo) #=> 2 [SEE_ALSO] Object#instance_var
Chef(ChefInc)の管理ツールKnifeのプラグインで、Knife-Zeroというのを作りました。 https://github.com/higanworks/knife-zero 追記: バージョンアップして、knife zero chef_client/convergeサブコマンドを追加しました。 追記: ひと通りの機能を実装したので、knife-zeroのことをまとめるドキュメントをゆるやかに作成しています。 https://knife-zero.github.io 端的にいうとAnsibleのやり方をパクりつつ、Chef-Serverから構成管理を含む機能全部を頂戴しながら本体の管理を捨てました。 Knife-ZeroとChefのローカルモードを使うと、手元のChef-Repoだけで状態込みのサーバインフラ管理が完結するので色々と楽ができそうです。 参考: About th
前回 Chefのローカルモードだけでリモートサーバを運用してみようと、Knife-Zeroを作った。Nodeの構成情報もとれるよ。 - Qiita の続きといえば続きです。 Knife-Zeroのページはこちら。 http://knife-zero.github.io/ja/ Chef11.xからローカルモードというのが加わりました。Chef-Client/Server環境の簡易版であり、Soloの代わりでもあります。 Chef-Soloからの乗り換えとしてChef-Zero(ローカルモード)検索が多いようなので、この追記を先頭に移動 このサンプルではSSH越しにローカルモードを実行していますが、単にサーバ側にChef-Repoを置いてローカルモードをしたい場合、 Chefをインストール後にChef-Repoのディレクトリに移動してchef-client -zでOKです。 Soloみたいに
The primary objective of IT automation is to make processes related to infrastructure faster, more secure and error-free. Chef SaaS enables you to automate your IT infrastructure with the power of the cloud. Now, all your favorite Chef tools are available as SaaS. No setup hassles, no maintenance and no extra resources required. Read on to learn more.
1. chef-zero とは chef-zero とは、Chef 11 Server 同等の REST API インターフェースを備えた軽量で簡易な Chef Server です。認証やデータの永続的な保存などを行わない代わりに導入が大変簡単で、Chef Clientなどのテストに有用です。 #ChefConf2013 にて発表されたスライドも参照してください。 2. chef-zero のインストール インストールは gem コマンドを用います。 $ sudo gem install chef-zero --no-ri --no-rdoc 3. chef-zero の起動 chef-zero コマンドで起動可能です。以下が usage です。 $ chef-zero -h Usage: chef-zero [ARGS] -H, --host HOST Host to bind to (
概要 Chef-Client/Server構成で最近開発を行っているのですが、 Cookbook等を開発している時に毎回Serverにアップロードしたりするのは面倒くさいです。。。 そこで、Chef Zeroを使用すればローカル(Chef-Client側)のみで完結するChef環境が作れるらしいので試してみたいと思います。 環境 CentOS 7 Chef DK 0.14.25 What is Chef Zero? https://www.chef.io/blog/2014/06/24/from-solo-to-zero-migrating-to-chef-client-local-mode/ Chef Zero is a full, in-memory, fast-start Chef server intended for development purposes; it persis
ChefのAttributesで悩んだことがあったのでメモ。結論から言うと、AttributeファイルではできなくてRecipe内で定義するしかなさそう。 説明のために、Chefで構築するソフトウェアが以下のディレクトリ構造であるとする。 /opt +-sample ・・・インストール先のベースディレクトリ +-bin +-data ・・・仮想のソフトウェアのデータディレクトリ +-logs ・・・仮想のソフトウェアのログ出力ディレクトリ このソフトウェアのインストール先、データディレクトリ、ログ出力先をAttributesでパラメタ化する。Attributeを素直に書くとこうなる。 sample/attributes/default.rb default[:sample][:base_dir] = "/opt/sample" default[:sample][:data_dir] = "
I created my custom LWRP, but when I run the ChefSpec units test. It doesn't know my LWRP actions. Here is my resource: actions :install, :uninstall default_action :install attribute :version, :kind_of => String attribute :options, :kind_of => String Here is my provider: def whyrun_supported? true end action :install do version = @new_resource.version options = @new_resource.options e = execute "s
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く