Chef-resources

提供:Dev Guides
移動先:案内検索

シェフ-リソース

Chefリソースは、望ましい状態のオペレーティングシステムの一部を表します。 これは、現在の構成を使用してリソースプロバイダーを使用するノードの望ましい状態を記述する構成ポリシーのステートメントです。 ChefのOhaiメカニズムを使用して、ターゲットマシンの現在のステータスを知るのに役立ちます。 また、ターゲットマシンをその状態にするために実行するために必要な手順を定義するのにも役立ちます。 リソースは、作業構成を説明するレシピにグループ化されます。

Chefの場合、chef
Platformは各ノードのプロバイダーとプラットフォームバージョンをマップします。 すべてのChefクライアントの実行の開始時に、Chefサーバーは現在のマシンの詳細を収集します。 後で、Chefサーバーはこれらの値を使用して正しいプロバイダーを識別します。

リソース構文

type 'name' do
   attribute 'value'
   action :type_of_action
end

上記の構文では、「タイプ」はリソースタイプであり、「名前」は使用する名前です。 「do」ブロックと「end」ブロックには、そのリソースの属性と、その特定のリソースに対して実行する必要があるアクションがあります。

レシピで使用するすべてのリソースには、「do」ブロックと「end」ブロック内で定義される独自のアクションセットがあります。

type 'name' do
   attribute 'value'
   action :type_of_action
end

すべてのリソースは、機能、アクション、プロパティ、条件付き実行、通知、およびアクションの関連パスの共通セットを共有します。

Actions The *:nothing *action can be used with any resource or custom resource.
Properties The ignore_failure, provider, retries, retry_delay, and supports properties can be used with any resource or custom resources.
Guards The not_if and only_if conditional executions can be used to put additional guards around certain resources, so that they are only run when the condition is met.
Guard Interpreters Evaluates a string command using a* script*-based resource: bash, csh, perl, powershell_script, python, *or ruby*.
Notifications The notifies and subscribes notifications can be used with any resource.
Relative Paths The #\{ENV['HOME']} relative path can be used with any resource.
Windows File Security The template, file, remote_file, cookbook_file, directory, *and remote_directory* resources support the use of inheritance and access control lists (ACLs) within recipes.
Run in Compile Phase Sometimes a resource needs to be run before every other resource or after all resources have been added to the resource collection.

利用可能な資源

apt_package

*apt_package* リソースを使用して、DebianおよびUbuntuプラットフォームのパッケージを管理します。

Bash

*bash* リソースを使用して、Bashインタープリターを使用してスクリプトを実行します。 このリソースは、 *execute* リソースで利用可能なアクションとプロパティのいずれかを使用する場合もあります。 このリソースで実行されるコマンドは、それらが実行される環境に通常一意であるため、(本来)by等ではありません。 not_ifおよびonly_ifを使用して、このリソースのべき等性を保護します。

バッチ

*batch* リソースを使用して、cmd.exeインタープリターを使用してバッチスクリプトを実行します。 *batch* リソースは、コマンドをインラインで実行するのではなく、一時ファイルを作成して実行します( *script* リソースの動作に似ています)。

このリソースは、 execute リソースからアクション(:runおよび:nothing)およびプロパティ(creates、cwd、environment、group、path、timeout、およびuser)を継承します。 このリソースで実行されるコマンドは、それらが実行される環境に通常一意であるため、(本来)by等ではありません。 not_if および only_if を使用して、このリソースをべき等性から保護します。

bff_package

*installp* ユーティリティを使用して、AIXプラットフォームのパッケージを管理するには、 *bff_package* リソースを使用します。 パッケージをローカルファイルからインストールする場合、 *remote_file* または* cookbook_fileリソース*を使用してノードに追加する必要があります。

chef_gem

*chef_gem* リソースを使用して、Chef-Client専用のRubyのインスタンスのみにgemをインストールします。 gemをローカルファイルからインストールする場合、 *remote_file* または *cookbook_file* リソースを使用して、gemをノードに追加する必要があります。
*chef_gem* リソースは、 *gem_package* リソースと同じプロパティとオプションのすべてで機能しますが、Chef-Clientが実行されているCurrentGemEnvironmentを常に使用するため、gem_binaryプロパティを受け入れません。 *gem_package* リソースと同様のアクションを実行することに加えて、 *chef_gem* リソースは上記を実行します。

cookbook_file

*cookbook_file* リソースを使用して、COOKBOOK_NAME/files/のサブディレクトリからChefClientを実行しているホストにある指定されたパスにファイルを転送します。

ファイルはファイルの特異性に従って選択されるため、ホスト名、ホストプラットフォーム(オペレーティングシステム、ディストリビューション、または必要に応じて)、またはプラットフォームバージョンに基づいて、さまざまなソースファイルを使用できます。 COOKBOOK_NAME/files/defaultサブディレクトリにあるファイルは、どのプラットフォームでも使用できます。

Cron

cronリソースを使用して、時間ベースのジョブスケジューリング用のcronエントリを管理します。 スケジュールのプロパティはデフォルトで*になります。提供されない場合。 cronリソースには、crontabプログラム(通常はcron)へのアクセスが必要です。

Csh

cshインタープリターを使用してスクリプトを実行するには、cshリソースを使用します。 このリソースは、実行リソースで使用可能なアクションとプロパティのいずれかを使用する場合もあります。

このリソースで実行されるコマンドは、それらが実行される環境に通常一意であるため、(本来)by等ではありません。 not_ifおよびonly_ifを使用して、このリソースのべき等性を保護します。

展開する

*deploy* リソースを使用して、展開を管理および制御します。 これは一般的なリソースですが、複雑であり、ほとんどのプロパティ、複数のプロバイダー、追加されたコールバックの複雑さ、およびレシピ内からのレイアウト変更をサポートする4つの属性を備えています。

ディレクトリ

  • ディレクトリ*リソースを使用してディレクトリを管理します。ディレクトリは、コンピュータに保存されているすべての情報を含むフォルダの階層です。 ルートディレクトリはトップレベルで、その下に残りのディレクトリが編成されます。
*directory* リソースは、nameプロパティを使用して、ディレクトリ内の場所へのパスを指定します。 通常、ディレクトリ内のその場所へのアクセス許可が必要です。

dpkg_package

*dpkg_package* リソースを使用して、 *dpkg* プラットフォームのパッケージを管理します。 パッケージをローカルファイルからインストールする場合、 *remote_file* または *cookbook_file* リソースを使用してノードにパッケージを追加する必要があります。

easy_install_package

*easy_install_package* リソースを使用して、Pythonプラットフォームのパッケージを管理します。

Env

*env* リソースを使用して、Microsoft Windowsで環境キーを管理します。 環境キーを設定したら、タスクスケジューラで環境キーを使用できるようにするには、Microsoft Windowsを再起動する必要があります。

erl_call

*erl_call* リソースを使用して、分散Erlangシステム内にあるノードに接続します。 このリソースで実行されるコマンドは、それらが実行される環境に通常一意であるため、(本来)by等ではありません。 not_ifおよびonly_ifを使用して、このリソースのべき等性を保護します。

実行する

*execute* リソースを使用して、単一のコマンドを実行します。 このリソースで実行されるコマンドは、それらが実行される環境に通常一意であるため、(本来)by等ではありません。 *not_if* および *only_if* を使用して、このリソースをべき等性から保護します。

File

*file* リソースを使用して、ノード上のファイルを直接管理します。

freebsd_package

*freebsd_package* リソースを使用して、FreeBSDプラットフォームのパッケージを管理します。

gem_package

*gem_package* リソースを使用して、レシピにのみ含まれるgemパッケージを管理します。 パッケージをローカルファイルからインストールする場合、 *remote_file* または *cookbook_file* リソースを使用してノードにパッケージを追加する必要があります。

Git

*git* リソースを使用して、gitリポジトリに存在するソース管理リソースを管理します。 gitリソースのすべての機能を使用するには、gitバージョン1.6.5以降が必要です。

グループ

*group* リソースを使用して、ローカルグループを管理します。

homebrew_package

*homebrew_package* リソースを使用して、Mac OS Xプラットフォームのパッケージを管理します。

http_request

*http_request* リソースを使用して、任意のメッセージでHTTPリクエスト(GET、PUT、POST、DELETE、HEAD、またはOPTIONS)を送信します。 このリソースは、カスタムコールバックが必要な場合に役立ちます。

ifconfig

インターフェイスを管理するには、 ifconfig リソースを使用します。

ips_package

*ips_package* リソースを使用して、Solaris 11プラットフォームで(Image Packaging System(IPS)を使用して)パッケージを管理します。

Ksh

*ksh* リソースを使用して、Kornシェル(ksh)インタープリターを使用してスクリプトを実行します。 このリソースは、実行リソースで使用可能なアクションとプロパティのいずれかを使用する場合もあります。

このリソースで実行されるコマンドは、それらが実行される環境に通常一意であるため、(本来)by等ではありません。 not_ifおよびonly_ifを使用して、このリソースのべき等性を保護します。

Link

*link* リソースを使用して、シンボリックリンクまたはハードリンクを作成します。

Log

log リソースを使用して、ログエントリを作成します。 ログリソースは他のリソースと同様に動作します。コンパイルフェーズでリソースコレクションに組み込まれ、実行フェーズで実行されます。 (リソースコレクションに組み込まれていないログエントリを作成するには、ログリソースの代わりにChef
Logを使用します)

macports_package

macports_packageリソースを使用して、Mac OS Xプラットフォームのパッケージを管理します。

MDADM

*mdadm* リソースを使用して、mdadmユーティリティを使用してLinux環境でRAIDデバイスを管理します。 mdadmプロバイダーはアレイを作成およびアセンブルしますが、再起動時にアレイを永続化するために使用される構成ファイルは作成しません。

構成ファイルが必要な場合は、正しいアレイレイアウトのテンプレートを指定してから、マウントプロバイダーを使用してファイルシステムテーブル(fstab)エントリを作成する必要があります。

マウント

マウントリソースを使用して、マウントされたファイルシステムを管理します。

Ohai

*ohai* リソースを使用して、ノードにOhai設定を再読み込みします。 これにより、システム属性を変更するレシピ(ユーザーを追加するレシピなど)は、後でchef-clientの実行中にそれらの属性を参照できます。

パッケージ

*package* リソースを使用してパッケージを管理します。 パッケージをローカルファイル(RubyGems、dpkg、RPMパッケージマネージャーなど)からインストールする場合、remote_fileまたはcookbook_fileリソースを使用してファイルをノードに追加する必要があります。

pacman_package

*pacman_package* リソースを使用して、Arch Linuxプラットフォームでパッケージを管理します(pacmanを使用)。

powershell_script

*powershell_script* リソースを使用して、Windows PowerShellインタープリターを使用してスクリプトを実行します。これは、スクリプトおよびスクリプトベースのリソース(bash、csh、perl、python、およびruby)の使用方法とよく似ています。 powershell_scriptは、Microsoft WindowsプラットフォームおよびWindows PowerShellインタープリターに固有です。

Python

Pythonインタープリターを使用してスクリプトを実行するには、 python リソースを使用します。 このリソースは、実行リソースで使用可能なアクションとプロパティのいずれかを使用する場合もあります。

このリソースで実行されるコマンドは、それらが実行される環境に通常一意であるため、(本来)by等ではありません。 not_ifおよびonly_ifを使用して、このリソースのべき等性を保護します。

リブート

*reboot* リソースを使用してノードを再起動します。これは、特定のプラットフォームでのインストールに必要な手順です。 このリソースは、Microsoft Windows、Mac OS X、およびLinuxプラットフォームでの使用がサポートされています。

registry_key

*registry_key* リソースを使用して、Microsoft Windowsでレジストリキーを作成および削除します。

remote_directory

*remote_directory* リソースを使用して、ディレクトリをクックブックからノードに増分転送します。 クックブックからコピーされるディレクトリは、COOKBOOK_NAME/files/default/REMOTE_DIRECTORYにあります。

remote_directoryリソースはファイルの特異性に従います。

remote_file

*remote_file* リソースを使用して、ファイルの特異性を使用してリモートの場所からファイルを転送します。 このリソースは、ファイルリソースに似ています。

ルート

Linuxリソースでは、ルートリソースを使用してシステムルーティングテーブルを管理します。

rpm_package

*rpm_package* リソースを使用して、RPM Package Managerプラットフォームのパッケージを管理します。

Ruby

Rubyインタープリターを使用してスクリプトを実行するには、 ruby​​ リソースを使用します。 このリソースは、実行リソースで使用可能なアクションとプロパティのいずれかを使用する場合もあります。

このリソースで実行されるコマンドは、それらが実行される環境に通常一意であるため、(本来)by等ではありません。 not_ifおよびonly_ifを使用して、このリソースのべき等性を保護します。

ruby_block

*ruby​​_block* リソースを使用して、Chef-Clientの実行中にRubyコードを実行します。 ruby_blockリソース内のRubyコードは、コンバージェンス中に他のリソースとともに評価されますが、ruby_blockリソース外のRubyコードは、レシピがコンパイルされるときに他のリソースよりも前に評価されます。

スクリプト

スクリプトリソースを使用して、Bash、csh、Perl、Python、Rubyなどの指定されたインタープリターを使用してスクリプトを実行します。 このリソースは、実行リソースで使用可能なアクションとプロパティのいずれかを使用する場合もあります。

このリソースで実行されるコマンドは、それらが実行される環境に通常一意であるため、(本来)by等ではありません。 not_ifおよびonly_ifを使用して、このリソースのべき等性を保護します。

サービス

*service* リソースを使用して、サービスを管理します。

smart_os_package

*smartos_package* リソースを使用して、SmartOSプラットフォームのパッケージを管理します。

solaris_package

*solaris_package* リソースは、Solarisプラットフォームのパッケージを管理するために使用されます。

転覆

*subversion* リソースを使用して、Subversionリポジトリに存在するソース管理リソースを管理します。

テンプレート

*template* リソースを使用して、COOKBOOK_NAME/templates/のサブディレクトリからChef-Clientを実行しているホストにある指定されたパスにファイルを転送することにより、埋め込みRuby(ERB)テンプレートを使用してファイルのコンテンツを管理します。 このリソースには、ファイルリソースのアクションとプロパティが含まれます。 テンプレートリソースによって管理されるテンプレートファイルは、remote_fileおよびファイルリソースと同じファイル固有の規則に従います。

User

*user* リソースを使用して、ユーザーの追加、既存のユーザーの更新、ユーザーの削除、およびユーザーパスワードのロック/ロック解除を行います。

windows_package

*windows_package* リソースを使用して、Microsoft Windowsプラットフォーム用のMicrosoft Installer Package(MSI)パッケージを管理します。

windows_service

*windows_service* リソースを使用して、Microsoft Windowsプラットフォーム上のサービスを管理します。

yum_package

*yum_package* リソースを使用して、Red HatおよびCentOSプラットフォームのYumでパッケージをインストール、アップグレード、および削除します。 yum_packageリソースは、Yumがコマンドラインから実行されたときにできるように、パッケージのデータを解決できます。 これにより、最小バージョン、仮想提供、ライブラリ名など、パッケージをインストールするためのさまざまなオプションが可能になります。