Chefリポジトリでこのページを編集
このページはChef Infraクライアントソースから生成されますcode.To 変更を提案し、launchdを編集します。rbファイルを作成し、Chef Infraクライアントリポジトリにプル要求を送信します。
All Infra resourcesページ
launchdリソースを使用して、macOSプラットフォーム上のシステム全体のサービス(デーモン)とユーザーごとのサービス(エージェント)を管理します。
Chef Infra Client12.8で追加されました。
構文
launchdリソースで使用できるすべてのプロパティの完全な構文は次のとおりです:
launchd 'name' do abandon_process_group true, false backup Integer, false cookbook String debug true, false disabled true, false # default value: false enable_globbing true, false enable_transactions true, false environment_variables Hash exit_timeout Integer group String, Integer hard_resource_limits Hash inetd_compatibility Hash init_groups true, false keep_alive true, false, Hash label String # default value: 'name' unless specified launch_events Hash launch_only_once true, false ld_group String limit_load_from_hosts Array limit_load_to_hosts Array limit_load_to_session_type Array, String low_priority_io true, false mach_services Hash mode String, Integer nice Integer on_demand true, false owner String, Integer path String plist_hash Hash process_type String program String program_arguments Array queue_directories Array root_directory String run_at_load true, false session_type String sockets Hash soft_resource_limits Array source String standard_error_path String standard_in_path String standard_out_path String start_calendar_interval Hash, Array start_interval Integer start_on_mount true, false throttle_interval Integer time_out Integer type String # default value: "daemon" umask Integer username String wait_for_debugger true, false watch_paths Array working_directory String action Symbol # defaults to :create if not specifiedend
どこで:
-
launchd
はリソースです。 -
name
はリソースブロックに指定された名前です。 -
action
ノードを目的の状態にするためにChef Infra Clientがどのステップを実行するかを識別します。 -
abandon_process_group
,backup
,cookbook
,debug
,disabled
,enable_globbing
,enable_transactions
,environment_variables
,exit_timeout
,group
,hard_resource_limits
,inetd_compatibility
,init_groups
,keep_alive
,label
,launch_events
,launch_only_once
,ld_group
,limit_load_from_hosts
,limit_load_to_hosts
,limit_load_to_session_type
,low_priority_io
,mach_services
,mode
,nice
,on_demand
,owner
,path
,plist_hash
,process_type
,program
,program_arguments
,queue_directories
,root_directory
,run_at_load
,session_type
,sockets
,soft_resource_limits
,source
,standard_error_path
,standard_in_path
,standard_out_path
,start_calendar_interval
,start_interval
,start_on_mount
,throttle_interval
,time_out
,type
,umask
,username
,wait_for_debugger
,watch_paths
, およびworking_directory
は、このリソースで使用可能なプロパティです。
アクション
launchdリソースには次のアクションがあります。
:create
デフォルト。 Launchdプロパティリストを作成します。:create_if_missing
launchdプロパティリストがまだ存在しない場合は、そのリストを作成します。:delete
launchdプロパティリストを削除します。 ロードされている場合は、デーモンまたはエージェントがアンロードされます。:disable
launchdプロパティリストを無効にします。:enable
launchdプロパティリストを作成し、それが有効になっていることを確認します。 Launchdプロパティリストが既に存在するが、一致しない場合は、プロパティリストを一致するように更新し、デーモンまたはエージェントを再起動します。:nothing
このリソースブロックは、別のリソースtotakeアクションによって通知されない限り動作しません。 通知されると、このリソースブロックはすぐに実行されるか、またはChef Infraクライアントの実行の最後に実行されるようにキューに入れられます。:restart
launchd管理デーモンまたはエージェントを再起動します。
プロパティ
launchdリソースには次のプロパティがあります。
abandon_process_group
Ruby Type:true,false
ジョブが終了した場合、同じプロセスIDを持つ残りのすべてのプロセスが実行 残りのすべてのプロセスを強制終了するには、trueに設定します。
backup
Ruby Type:Integer,false
/var/chef/backup
に保持するバックアップの数。 バックアップが保持されないようにするには、false
に設定します。
cookbook
ルビータイプ: String
ソースファイルが配置されているクックブックの名前。
group
Ruby Type:String,Integer
launchdがrootユーザーとして実行されると、ジョブを実行するグループとして。username
プロパティが指定されていて、このプロパティが指定されていない場合、この値はユーザーの既定のグループに設定されます。
label
Ruby Type:String
ジョブの一意の識別子。ルビタイプ:整数,文字列|デフォルト値:'0755'
8進数モードを定義する引用符で囲まれた3-5文字の文字列。 たとえば、'755'
、'0755'
、または00755
です。
owner
ルビータイプ: 整数、文字列
domain\user
やuser@domain
などの完全修飾ユーザー名を含む、ユーザー名でグループ所有者を識別する文字列またはID。 この値が指定されていない場合、既存のownersremainは変更されず、新しい所有者の割り当ては現在のユーザーを使用します(必要な場合)。
path
Ruby Type:String
ディレクトリへのパス。 完全修飾パスの使用は推奨されますが、必ずしも必須ではありません。 デフォルト値:リソースブロックのname
。 詳細については、上記の”構文”のセクションを参照してください。
plist_hash
ルビータイプ: Hash
launchdプロパティリストを作成するために使用されるキー値ペアのハッシュ。
session_type
Ruby Type:String
作成するlaunchd plistのタイプ。 指定可能な値:system
(デフォルト)またはuser
。
source
Ruby Type:String
launchdプロパティリストへのパス。
type
Ruby Type:String
リソースの型。 指定可能な値:daemon
(デフォルト)、agent
。
abandon_process_group
Ruby Type:true,false
ジョブが終了した場合、同じプロセスIDを持つ残りのすべてのプロセスが実行され続けている可能性があります。 残りのすべてのプロセスを強制終了するには、trueに設定します。
debug
ルビータイプ: true、false
は、このジョブのログマスクをLOG_DEBUG
に設定します。
disabled
Rubyタイプ:true,false|デフォルト値:false
このジョブをlaunchdに送信しないためのlaunchctl
へのヒント。
enable_globbing
Ruby Type:true,false
呼び出し前にプログラム引数を更新します。
enable_transactions
Ruby Type:true,false
進行中のトランザクションを追跡します。
environment_variables
Ruby Type:Hash
ジョブを実行する前に設定する追加の環境変数。
exit_timeout
Ruby Type:Integer
launchdがSIGKILL
信号を送信する前に待機する時間(秒単位)。
hard_resource_limits
Ruby Type:Hash
ジョブに課されるリソース制限のハッシュ。
inetd_compatibility
Ruby Type:Hash
デーモンがinetd
から起動されたかのように実行されることを期待するかどうかを指定します。 標準入力、出力、およびエラーファイル記述子を渡すには、wait => true
に設定します。 ジョブの代わりにaccept
システムコールを呼び出し、標準入力、出力、およびエラーファイル記述子を渡すには、wait => false
に設定します。
init_groups
Ruby Type:true,false
ジョブを実行する前にinitgroups
を呼び出すかどうかを指定します。
keep_alive
ルビータイプ: true,false,Hash
ジョブを継続的に実行し続ける(true)か、ノード上のdemand and conditionsがジョブが実行し続けるかどうかを判断できるようにする(false
)。
Chef Client12.14の新機能
launch_events
Ruby Type:Hash
launch-on-demandイベントソースとして使用される上位レベルのイベントタイプを指定します。
Chef Infra Client15.1の新機能
launch_only_once
Ruby Type:true,false
ジョブを一度だけ実行できるかどうかを指定します。 マシンを完全に再起動しないとジョブを再起動できない場合は、この値をtrue
に設定します。
limit_load_from_hosts
ルビータイプ: Array
この設定ファイルが適用されないホストの配列、つまり”この配列で指定されていないすべてのホストにこの設定ファイルを適用する”。
limit_load_to_hosts
Ruby Type:Array
この設定ファイルが適用されるホストの配列。
limit_load_to_session_type
Ruby Type:Array,String
この設定ファイルが適用されるセッションタイプ。
low_priority_io
Ruby Type:true,false
ノード上のカーネルがファイルシステムI/O中にこのデーモンを低優先度とみなすかどうかを指定します。
mach_services
Ruby Type:Hash
ブートストラップサブシステムに登録するサービスを指定します。
nice
ルビタイプ:整数
-20
から20
の範囲内のプログラムスケジューリング優先度の値。
on_demand
Ruby Type:true,false
ジョブを生き続ける。 新しいバージョンでは代わりにkeep_alive
を使用してください。
process_type
Ruby Type:String
ジョブの意図された目的: Adaptive
, Background
, Interactive
, またはStandard
。
program
Ruby Type:String
execvp
の最初の引数、通常は実行されるファイルに関連付けられたファイル名。 この値は、program_arguments
が指定されていない場合は指定する必要があり、その逆も同様です。
program_arguments
ルビータイプ: 配列
execvp
の2番目の引数。 program
が指定されていない場合は、thispropertyを指定する必要があり、最初の引数であるかのように処理されます。
queue_directories
Ruby Type:Array
空でないディレクトリの配列で、変更されている場合はジョブが開始されます。
root_directory
Ruby Type:String
chroot
このディレクトリに移動し、ジョブを実行します。
run_at_load
Ruby Type:true,false
ジョブを一度起動します(ロードされた時点で)。
sockets
Ruby Type:Hash
ジョブを実行する必要があるときにlaunchdに通知するオンデマンドソケットのハッシュ。
soft_resource_limits
ルビータイプ: Array
ジョブに課されるリソース制限のハッシュ。
standard_error_path
Ruby Type:String
標準エラー(stderr
)が送信されるファイル。
standard_in_path
Ruby Type:String
標準入力(stdin
)が送信されるファイル。
standard_out_path
Ruby Type:String
標準出力(stdout
)が送信されるファイル。
start_calendar_interval
Ruby Type:Hash
ジョブが開始されるときのカレンダー頻度を定義するハッシュ(crontab
と同様)。 たとえば、{ Minute => "0", Hour => "20", Day => "*", Weekday => "1-5", Month => "*" }
は、毎日、月曜日から金曜日、年のeverygonthの午後8:00にジョブを実行します。
start_interval
ルビータイプ: Integer
ジョブが開始される頻度(秒単位)。
start_on_mount
Ruby Type:true,false
ファイルシステムがマウントされるたびにジョブを開始します。
throttle_interval
ルビタイプ:整数|デフォルト値:10
ジョブのスポーンが許可される頻度(秒単位)。
time_out
Ruby Type:Integer
ジョブがタイムアウトするまでにアイドル状態になる可能性のある時間(秒単位)。 値が指定されていない場合、launchdwillのデフォルトのタイムアウト値が使用されます。
umask
Ruby Type:Integer
ジョブを実行する前にumask
に渡す10進数値。
username
ルビータイプ: String
launchdがrootユーザーとして実行される場合、ジョブを実行するユーザーとして。
wait_for_debugger
Ruby Type:true,false
launchdにジョブがあるかどうかを指定し、コードを実行する前にデバッガがアタッチされるのを待ちます。
watch_paths
Ruby Type:Array
変更された場合、ジョブが開始されるパスの配列。
working_directory
Ruby Type:String
chdir
このディレクトリに移動し、ジョブを実行します。
共通リソース機能
Chefリソースには、共通プロパティ、通知、およびリソースガードが含まれます。
共通プロパティ
以下のプロパティは、すべてのリソースに共通しています:
compile_time
Rubyタイプ:true、false|デフォルト値: false
ノード上でリソースが実行されるフェーズを制御します。 リソースコレクションのビルド中に実行するにはtrueに設定します(compile phase
)。 Chef Infra Clientがノードを設定している間に実行するにはfalseに設定します(converge phase
)。
ignore_failure
ルビタイプ:true,false,:quiet|デフォルト値: false
何らかの理由でリソースが失敗した場合は、レシピの実行を続行します。 :quiet
は完全なスタックトレースを表示せず、リソースに障害が発生した場合もレシピは実行され続けます。
retries
ルビタイプ:整数|デフォルト値: 0
例外をキャッチしてリソースを再試行する試行回数。
retry_delay
ルビタイプ:整数|デフォルト値: 2
再試行の遅延(秒単位)。
sensitive
ルビタイプ:true,false|デフォルト値: false
機密リソースデータがChef InfraClientによってログに記録されないようにします。
notifies
::Resource’
リソースは、状態が変更されたときに別のリソースにアクションを実行するように通知することがあります。 Resourceshouldが取る'resource'
、:action
、そしてそのアクションの:timer
を指定します。 通知される各リソースに対してnotifies
ステートメントを使用します。
参照されているリソースが存在しない場合、エラーは次のようになりますraised.In これとは対照的に、sourceresourceが見つからない場合、subscribes
は失敗しません。
タイマーは、Chef Infraクライアントの実行中にanotificationが実行されるポイントを指定します。 次のタイマーを使用できます:
:before
は、通知されたリソースに対するアクションを、通知が配置されているリソースブロックを処理する前に実行するように指定します。
:delayed
デフォルト。 通知をキューに入れ、Chef Infraクライアントの実行の最後に実行することを指定します。
:immediate
,:immediately
通知が直ちに実行され、perresourceが通知されることを指定します。
notifies
の構文は次のとおりです:
notifies :action, 'resource', :timer
subscribes
ルビの種類:シンボル,’シェフ::Resource’
リソースは別のリソースをリッスンし、リッスンされているリソースの状態が変更された場合にアクションを実行することができます。 実行する'resource'
、実行する:action
、および実行する:timer
を指定します。
subscribes
は、指定されたアクションをリッスンするソースには適用しないことに注意してください。:
file '/etc/nginx/ssl/example.crt' do mode '0600' owner 'root'endservice 'nginx' do subscribes :reload, 'file', :immediatelyend
この場合、subscribes
プロパティはnginx
servicewheneverを再ロードします。/etc/nginx/ssl/example.crt
の下にある証明書ファイルが更新されます。 subscribes
は、証明書ファイル自体に変更を加えず、単にファイルの変更をリッスンし、変更が検出されたときにそのリソースの:reload
アクション(この例ではnginx
)を実行します。
他のリソースが存在しない場合、サブスクリプションはanerrorを発生させません。 これとは対照的に、notifies
のより厳密なセマンティクスは、他のリソースが存在しない場合にエラーを発生させます。
タイマーは、Chef Infraクライアントの実行中にanotificationが実行されるポイントを指定します。 次のタイマーを使用できます:
:before
は、通知されたリソースに対するアクションを、通知が配置されているリソースブロックを処理する前に実行するように指定します。
:delayed
デフォルト。 通知をキューに入れ、Chef Infraクライアントの実行の最後に実行することを指定します。
:immediate
,:immediately
通知が直ちに実行され、perresourceが通知されることを指定します。
subscribes
の構文は次のとおりです:
subscribes :action, 'resource', :timer
Guard
guardプロパティを使用して、Chef Infraクライアントの実行の実行フェーズ中にノードの状態を評価できます。 Thisevaluationの結果に基づいて、guardプロパティを使用して、リソースの実行を継続する必要があるかどうかをChef Infraクライアントに指示します。 Guardプロパティは、eithera文字列値またはRubyブロック値を受け入れます:
- 文字列はシェルコマンドとして実行されます。 コマンドが
0
を返す場合、ガードが適用されます。 コマンドが他の値を返した場合、guardプロパティは適用されません。 Apowershell_scriptの文字列ガードは、Windows PowerShellコマンドを実行し、true
に加えて0
をmayreturnします。 - ブロックはRubyコードとして実行され、
true
またはfalse
のいずれかを返さなければなりません。 ブロックがtrue
を返す場合、guardプロパティが適用されます。ブロックがfalse
を返す場合、guardプロパティは適用されません。
guardプロパティは、実行中の目的の状態をテストするためにそのリソースを許可し、目的の状態が存在する場合はChef InfraClientが何もしないようにすることによ
プロパティ
次のプロパティを使用して、Chef Infraクライアント実行の実行フェーズで評価されるガードを定義できます:
not_if
条件がtrue
を返したときにリソースが実行されないようにします。
only_if
条件がtrue
を返す場合にのみ、リソースの実行を許可します。
例
以下の例は、レシピでlaunchdリソースを使用するためのさまざまなアプローチを示しています。
クックブックファイルから起動デーモンを作成します