launchdリソース

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\useruser@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リソースを使用するためのさまざまなアプローチを示しています。

クックブックファイルから起動デーモンを作成します



+