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_missinglaunchdプロパティリストがまだ存在しない場合は、そのリストを作成します。:deletelaunchdプロパティリストを削除します。 ロードされている場合は、デーモンまたはエージェントがアンロードされます。:disablelaunchdプロパティリストを無効にします。:enablelaunchdプロパティリストを作成し、それが有効になっていることを確認します。 Launchdプロパティリストが既に存在するが、一致しない場合は、プロパティリストを一致するように更新し、デーモンまたはエージェントを再起動します。:nothingこのリソースブロックは、別のリソースtotakeアクションによって通知されない限り動作しません。 通知されると、このリソースブロックはすぐに実行されるか、またはChef Infraクライアントの実行の最後に実行されるようにキューに入れられます。:restartlaunchd管理デーモンまたはエージェントを再起動します。
プロパティ
launchdリソースには次のプロパティがあります。
abandon_process_groupRuby Type:true,false
ジョブが終了した場合、同じプロセスIDを持つ残りのすべてのプロセスが実行 残りのすべてのプロセスを強制終了するには、trueに設定します。
backupRuby Type:Integer,false
/var/chef/backupに保持するバックアップの数。 バックアップが保持されないようにするには、falseに設定します。
cookbookルビータイプ: String
ソースファイルが配置されているクックブックの名前。
groupRuby Type:String,Integer
launchdがrootユーザーとして実行されると、ジョブを実行するグループとして。usernameプロパティが指定されていて、このプロパティが指定されていない場合、この値はユーザーの既定のグループに設定されます。
labelRuby Type:String
ジョブの一意の識別子。ルビタイプ:整数,文字列|デフォルト値:'0755'
8進数モードを定義する引用符で囲まれた3-5文字の文字列。 たとえば、'755'、'0755'、または00755です。
ownerルビータイプ: 整数、文字列
domain\userやuser@domainなどの完全修飾ユーザー名を含む、ユーザー名でグループ所有者を識別する文字列またはID。 この値が指定されていない場合、既存のownersremainは変更されず、新しい所有者の割り当ては現在のユーザーを使用します(必要な場合)。
pathRuby Type:String
ディレクトリへのパス。 完全修飾パスの使用は推奨されますが、必ずしも必須ではありません。 デフォルト値:リソースブロックのname。 詳細については、上記の”構文”のセクションを参照してください。
plist_hashルビータイプ: Hash
launchdプロパティリストを作成するために使用されるキー値ペアのハッシュ。
session_typeRuby Type:String
作成するlaunchd plistのタイプ。 指定可能な値:system(デフォルト)またはuser。
sourceRuby Type:String
launchdプロパティリストへのパス。
typeRuby Type:String
リソースの型。 指定可能な値:daemon(デフォルト)、agent。
abandon_process_groupRuby Type:true,false
ジョブが終了した場合、同じプロセスIDを持つ残りのすべてのプロセスが実行され続けている可能性があります。 残りのすべてのプロセスを強制終了するには、trueに設定します。
debugルビータイプ: true、false
は、このジョブのログマスクをLOG_DEBUGに設定します。
disabledRubyタイプ:true,false|デフォルト値:false
このジョブをlaunchdに送信しないためのlaunchctlへのヒント。
enable_globbingRuby Type:true,false
呼び出し前にプログラム引数を更新します。
enable_transactionsRuby Type:true,false
進行中のトランザクションを追跡します。
environment_variablesRuby Type:Hash
ジョブを実行する前に設定する追加の環境変数。
exit_timeoutRuby Type:Integer
launchdがSIGKILL信号を送信する前に待機する時間(秒単位)。
hard_resource_limitsRuby Type:Hash
ジョブに課されるリソース制限のハッシュ。
inetd_compatibilityRuby Type:Hash
デーモンがinetdから起動されたかのように実行されることを期待するかどうかを指定します。 標準入力、出力、およびエラーファイル記述子を渡すには、wait => trueに設定します。 ジョブの代わりにacceptシステムコールを呼び出し、標準入力、出力、およびエラーファイル記述子を渡すには、wait => falseに設定します。
init_groupsRuby Type:true,false
ジョブを実行する前にinitgroupsを呼び出すかどうかを指定します。
keep_aliveルビータイプ: true,false,Hash
ジョブを継続的に実行し続ける(true)か、ノード上のdemand and conditionsがジョブが実行し続けるかどうかを判断できるようにする(false)。
Chef Client12.14の新機能
launch_eventsRuby Type:Hash
launch-on-demandイベントソースとして使用される上位レベルのイベントタイプを指定します。
Chef Infra Client15.1の新機能
launch_only_onceRuby Type:true,false
ジョブを一度だけ実行できるかどうかを指定します。 マシンを完全に再起動しないとジョブを再起動できない場合は、この値をtrueに設定します。
limit_load_from_hostsルビータイプ: Array
この設定ファイルが適用されないホストの配列、つまり”この配列で指定されていないすべてのホストにこの設定ファイルを適用する”。
limit_load_to_hostsRuby Type:Array
この設定ファイルが適用されるホストの配列。
limit_load_to_session_typeRuby Type:Array,String
この設定ファイルが適用されるセッションタイプ。
low_priority_ioRuby Type:true,false
ノード上のカーネルがファイルシステムI/O中にこのデーモンを低優先度とみなすかどうかを指定します。
mach_servicesRuby Type:Hash
ブートストラップサブシステムに登録するサービスを指定します。
niceルビタイプ:整数
-20から20の範囲内のプログラムスケジューリング優先度の値。
on_demandRuby Type:true,false
ジョブを生き続ける。 新しいバージョンでは代わりにkeep_aliveを使用してください。
process_typeRuby Type:String
ジョブの意図された目的: Adaptive, Background, Interactive, またはStandard。
programRuby Type:String
execvpの最初の引数、通常は実行されるファイルに関連付けられたファイル名。 この値は、program_argumentsが指定されていない場合は指定する必要があり、その逆も同様です。
program_argumentsルビータイプ: 配列
execvpの2番目の引数。 programが指定されていない場合は、thispropertyを指定する必要があり、最初の引数であるかのように処理されます。
queue_directoriesRuby Type:Array
空でないディレクトリの配列で、変更されている場合はジョブが開始されます。
root_directoryRuby Type:String
chrootこのディレクトリに移動し、ジョブを実行します。
run_at_loadRuby Type:true,false
ジョブを一度起動します(ロードされた時点で)。
socketsRuby Type:Hash
ジョブを実行する必要があるときにlaunchdに通知するオンデマンドソケットのハッシュ。
soft_resource_limitsルビータイプ: Array
ジョブに課されるリソース制限のハッシュ。
standard_error_pathRuby Type:String
標準エラー(stderr)が送信されるファイル。
standard_in_pathRuby Type:String
標準入力(stdin)が送信されるファイル。
standard_out_pathRuby Type:String
標準出力(stdout)が送信されるファイル。
start_calendar_intervalRuby Type:Hash
ジョブが開始されるときのカレンダー頻度を定義するハッシュ(crontabと同様)。 たとえば、{ Minute => "0", Hour => "20", Day => "*", Weekday => "1-5", Month => "*" }は、毎日、月曜日から金曜日、年のeverygonthの午後8:00にジョブを実行します。
start_intervalルビータイプ: Integer
ジョブが開始される頻度(秒単位)。
start_on_mountRuby Type:true,false
ファイルシステムがマウントされるたびにジョブを開始します。
throttle_intervalルビタイプ:整数|デフォルト値:10
ジョブのスポーンが許可される頻度(秒単位)。
time_outRuby Type:Integer
ジョブがタイムアウトするまでにアイドル状態になる可能性のある時間(秒単位)。 値が指定されていない場合、launchdwillのデフォルトのタイムアウト値が使用されます。
umaskRuby Type:Integer
ジョブを実行する前にumaskに渡す10進数値。
usernameルビータイプ: String
launchdがrootユーザーとして実行される場合、ジョブを実行するユーザーとして。
wait_for_debuggerRuby Type:true,false
launchdにジョブがあるかどうかを指定し、コードを実行する前にデバッガがアタッチされるのを待ちます。
watch_pathsRuby Type:Array
変更された場合、ジョブが開始されるパスの配列。
working_directoryRuby 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プロパティはnginxservicewheneverを再ロードします。/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リソースを使用するためのさまざまなアプローチを示しています。
クックブックファイルから起動デーモンを作成します