Chef学習の4:Chef基礎のLWRP(転載)
29730 ワード
From:http://williamherry.com/blog/2012/10/09/chef-lwrp/
ChefベースのLWRP
OCT 9 TH、2012 | COMMENTS
概要
Chefに内蔵されているResourceとProvidersはもう非常に強くなりました.もしいくつかの需要があれば、まだ満足できない、または内蔵されているのが面倒くさい場合、自分のResourceとProvidersを書くことができます.
他の人のcookbookに下の線を持っているResourceがあったら、例えば次のようにします.
この文書を見てみます.LWRPは主に基本的な公式Wikiです.英語が上手なら、直接に公式の住所を見ることができます. Lightweight Resource and Providers
LWRPを紹介する前に、まず何がResourceとProviderなのかを振り返ってみます.簡単にResourceとは抽象的な方法でシステムの一部を説明します.次の例のように、どのような状態にあるかを望んでいます.
Providersとは何ですか?上の例を見てください.bash命令で表すと
ファイルの位置
ライト級(またはカスタムと呼ばれる)ResourceとProvidersのパーティションは、cookbookの
例
ノート:下の例は名前を説明するためだけに、これらのLWRPが本当にあるとは限りません.
前にも述べましたが、Reourcersには一つ以上の属性があります.Recipeを書く時に属性にいくつかの私達が欲しい値を与えます.これらの値は属性をProvider.Resourceに伝えられます.また、この動作はProvidersで定義されているものですか?
Providers
ProvidersはResourceをサポートしています.これはインスタンス変数
以下は簡単な例で理解を深めます.中の変数(属性)の伝達に注意します.
簡単な例
この例は簡単にパッケージ化された内容のResourceタイプ
まず私達はknife命令を利用してcookbookのディレクトリ構造を作成します.
vim users/resource/manage.rb
次は私達のProviderを創立してResourceを支持します.実現する上に前の二つの動作を定義して何をしますか?
vim users/providers/manage.rb
このcookbookで私達が定義したResource.Cookbookの名前は
vim users/recipes/test.rb
転載先:https://www.cnblogs.com/puncha/archive/2013/03/30/3876925.html
ChefベースのLWRP
OCT 9 TH、2012 | COMMENTS
概要
Chefに内蔵されているResourceとProvidersはもう非常に強くなりました.もしいくつかの需要があれば、まだ満足できない、または内蔵されているのが面倒くさい場合、自分のResourceとProvidersを書くことができます.
他の人のcookbookに下の線を持っているResourceがあったら、例えば次のようにします.
1
2
3
4
5
apt_repository "zenoss" do
uri "http://dev.zenoss.org/deb"
components ["main","stable"]
action :add
end
それはおそらくLightweight Resourceかもしれません.ここでは他にもいくつかのものがあるからかもしれません.このようなフォーマットです.この文書を見てみます.LWRPは主に基本的な公式Wikiです.英語が上手なら、直接に公式の住所を見ることができます. Lightweight Resource and Providers
LWRPを紹介する前に、まず何がResourceとProviderなのかを振り返ってみます.簡単にResourceとは抽象的な方法でシステムの一部を説明します.次の例のように、どのような状態にあるかを望んでいます.
1
2
3
4
package "vim" do
version "1.16.1-1"
action :install
end
このResourceは私のシステムの中のバージョンが1.16.1-1のvimというパッケージがインストールされている状態を説明しています.Resourceにはいくつかの属性(ここはversion)があります.この状態については自分で決めています.また、この動作によってシステムの一部が希望の状態に変わります.Providersとは何ですか?上の例を見てください.bash命令で表すと
yum -y install vim
かapt-get install vim
かもしれません.私たちは上のような抽象的な方法で私の需要を表現できます.下の階に気にしないでください.Providerが私たちのためにこの仕事をしてくれます.Providerはこの階の抽象的なイメージを提供してくれます.ファイルの位置
ライト級(またはカスタムと呼ばれる)ResourceとProvidersのパーティションは、cookbookの
resources
とproviders
のディレクトリからロードされます.ResourceとProviderssの名前は、cookbookの名前とファイルの名前を下のラインで組み合わせています.唯一の例外はファイル名default.rb
です.この場合、ResourceとProvidersの名前は、cookbookの名前だけです.例
ノート:下の例は名前を説明するためだけに、これらのLWRPが本当にあるとは限りません.
1
2
3
4
5
6
7
8
9
10
11
+----------------------------------------------------------------------------------------+-------------------------------------+
| Filename | Resource or Provider Name, as used in the DSL | Generated Class |
+----------+-----------------------------+-----------------------------------------------+-------------------------------------+
| /cookbooks/aws/resources/default.rb | aws | Chef::Resource::Aws |
+----------------------------------------+-----------------------------------------------+-------------------------------------+
| /cookbooks/aws/resources/elastic_ip.rb | aws_elastic_ip | Chef::Resourcesce::AwsElasticIp |
+----------------------------------------+-----------------------------------------------+-------------------------------------+
| /cookbooks/aws/providers/default.rb | aws | Chef::Providerser::Aws |
+----------------------------------------+-----------------------------------------------+-------------------------------------+
| /cookbooks/aws/providers/elastic_ip.rb | aws_elastic_ip | Chef::Providerrovider::AwsElasticIp |
+----------------------------------------+-----------------------------------------------+-------------------------------------+
Resource前にも述べましたが、Reourcersには一つ以上の属性があります.Recipeを書く時に属性にいくつかの私達が欲しい値を与えます.これらの値は属性をProvider.Resourceに伝えられます.また、この動作はProvidersで定義されているものですか?
Providers
ProvidersはResourceをサポートしています.これはインスタンス変数
@new_resource
を通じてキャリアとして得られます.RecipesでRecipesにResourceに伝えられた属性は値にあります.Resourceでの動作を定義して具体的にどのような動作をしますか?完了したら呼び出します.reource.udated_by_ラスター.action(true)はChefに完成したと伝えに来ました.以下は簡単な例で理解を深めます.中の変数(属性)の伝達に注意します.
簡単な例
この例は簡単にパッケージ化された内容のResourceタイプ
user
でLWRPが得られます.まず私達はknife命令を利用してcookbookのディレクトリ構造を作成します.
knife cookbook create users
そして、私たちは直接にresourceディレクトリの下でresourceを作成します.vim users/resource/manage.rb
1
2
3
actions :create, :remove
attribute :user_name, :kind_of => String, :required => true
私たちは二つの動作と一つの属性を定義しています.この二つの具体的な仕事はProviderで実現されます.recipeでこのResourceを使う時に属性の値がProviderにアクセスできます.次は私達のProviderを創立してResourceを支持します.実現する上に前の二つの動作を定義して何をしますか?
vim users/providers/manage.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
action :remove do
user new_resource.user_name do
action :remove
end
new_resource.updated_by_last_action(true)
end
action :create do
user new_resource.user_name do
action :create
end
new_resource.updated_by_last_action(true)
end
2つの動作を定義し、内蔵のResourceタイプuser
を使用してユーザを作成し、new_resource
を利用してrecipesから送られてきたユーザ名を取得し、最後にステータスを更新する.このcookbookで私達が定義したResource.Cookbookの名前は
users
です.Resourcesファイルの名前はmanage.rb
です.だから私達のResource名前はusers_manage
です.vim users/recipes/test.rb
1
2
3
users_maange "william" do
user_name "william"
end
今から私たちが書いたLWRPをテストできます.knife cookbook upload users
knife node run list add client1.chef.com 'recipe[users::test]'
Posted by William Herry Oct 9 th、2012転載先:https://www.cnblogs.com/puncha/archive/2013/03/30/3876925.html