macosx_service Resource
This page is generated from the Chef Infra Client source code.To suggest a change, edit the macosx_service.rb file and submit a pull request to the Chef Infra Client repository.
Use the macosx_service resource to manage services on the macOS platform.
Syntax
The full syntax for all of the properties that are available to the macosx_service resource is:
macosx_service 'name' do init_command String options Array, String parameters Hash pattern String plist String priority Integer, String, Hash reload_command String, false restart_command String, false run_levels Array service_name String # default value: 'name' unless specified session_type String start_command String, false status_command String, false stop_command String, false supports Hash # default value: {"restart"=>nil, "reload"=>nil, "status"=>nil} timeout Integer # default value: 900 user String action Symbol # defaults to :nothing if not specified endwhere:
macosx_serviceis the resource.nameis the name given to the resource block.actionidentifies which steps Chef Infra Client will take to bring the node into the desired state.init_command,options,parameters,pattern,plist,priority,reload_command,restart_command,run_levels,service_name,session_type,start_command,status_command,stop_command,supports,timeout, anduserare the properties available to this resource.
Actions
The macosx_service resource has the following actions:
:disable- Disable a service.
:enable- Enable a service at boot.
:nothing- This resource block doesn’t act unless notified by another resource to take action. Once notified, this resource block either runs immediately or is queued up to run at the end of a Chef Infra Client run.
:reload- Reload the configuration for this service.
:restart- Stop and then start a service again.
:start- Start a service, and keep it running until stopped or disabled.
:stop- Stop a service. It will stay stopped until restarted.
Properties
The macosx_service resource has the following properties:
init_command- Ruby Type: String
The path to the init script that is associated with the service. Use
init_commandto prevent the need to specify overrides for thestart_command,stop_command, andrestart_commandproperties. When this property is not specified, the Chef Infra Client will use the default init command for the service provider being used.
options- Ruby Type: Array, String
Solaris platform only. Options to pass to the
servicecommand. See the svcadm manual for details of possible options.
parameters- Ruby Type: Hash
Upstart only. A hash of parameters to pass to the
servicecommand for use in the service definition.
pattern- Ruby Type: String | Default Value:
The value provided to `service_name` or the resource block's nameThe pattern to look for in the process table.
plist- Ruby Type: String
A plist to use in the case where the filename and label for the service do not match.
priority- Ruby Type: Integer, String, Hash
Debian platform only. The relative priority of the program for start and shutdown ordering. May be an integer or a Hash. An integer is used to define the start run levels; stop run levels are then 100-integer. A Hash is used to define values for specific run levels. For example, { 2 => [:start, 20], 3 => [:stop, 55] } will set a priority of twenty for run level two and a priority of fifty-five for run level three.
reload_command- Ruby Type: String, false
The command used to tell a service to reload its configuration.
restart_command- Ruby Type: String, false
The command used to restart a service.
run_levels- Ruby Type: Array
RHEL platforms only. Specific run levels the service will run under.
service_name- Ruby Type: String | Default Value:
The resource block's nameAn optional property to set the service name if it differs from the resource block’s name.
session_type- Ruby Type: String
The type of plist to be created
start_command- Ruby Type: String, false
The command used to start a service.
status_command- Ruby Type: String, false
The command used to check the run status for a service.
stop_command- Ruby Type: String, false
The command used to stop a service.
supports- Ruby Type: Hash | Default Value:
{"restart"=>nil, "reload"=>nil, "status"=>nil}A list of properties that controls how Chef Infra Client is to attempt to manage a service: :restart, :reload, :status. For :restart, the init script or other service provider can use a restart command; if :restart is not specified, the chef-client attempts to stop and then start a service. For :reload, the init script or other service provider can use a reload command. For :status, the init script or other service provider can use a status command to determine if the service is running; if :status is not specified, the chef-client attempts to match the service_name against the process table as a regular expression, unless a pattern is specified as a parameter property. Default value: { restart: false, reload: false, status: false } for all platforms (except for the Red Hat platform family, which defaults to { restart: false, reload: false, status: true }.)
timeout- Ruby Type: Integer | Default Value:
900The amount of time (in seconds) to wait before timing out.
user- Ruby Type: String
systemd only: A username to run the service under.
New in Chef Client 12.21
Common Resource Functionality
Chef resources include common properties, notifications, and resource guards.
Common Properties
The following properties are common to every resource:
compile_timeRuby Type: true, false | Default Value:
falseControl the phase during which the resource is run on the node. Set to true to run while the resource collection is being built (the
compile phase). Set to false to run while Chef Infra Client is configuring the node (theconverge phase).ignore_failureRuby Type: true, false, :quiet | Default Value:
falseContinue running a recipe if a resource fails for any reason.
:quietwon’t display the full stack trace and the recipe will continue to run if a resource fails.retriesRuby Type: Integer | Default Value:
0The number of attempts to catch exceptions and retry the resource.
retry_delayRuby Type: Integer | Default Value:
2The delay in seconds between retry attempts.
sensitiveRuby Type: true, false | Default Value:
falseEnsure that sensitive resource data isn’t logged by Chef Infra Client.
Notifications
notifiesRuby Type: Symbol, 'Chef::Resource[String]'
A resource may notify another resource to take action when its state changes. Specify a
'resource[name]', the:actionthat resource should take, and then the:timerfor that action. A resource may notify more than one resource; use anotifiesstatement for each resource to be notified.If the referenced resource doesn’t exist, an error is raised. In contrast,
subscribeswon’t fail if the source resource isn’t found.
A timer specifies the point during a Chef Infra Client run at which a notification is run. The following timers are available:
:beforeSpecifies that the action on a notified resource should be run before processing the resource block in which the notification is located.
:delayedDefault. Specifies that a notification should be queued up, and then executed at the end of a Chef Infra Client run.
:immediate,:immediatelySpecifies that a notification should be run immediately, for each resource notified.
The syntax for notifies is:
notifies :action, 'resource[name]', :timer subscribesRuby Type: Symbol, 'Chef::Resource[String]'
A resource may listen to another resource, and then take action if the state of the resource being listened to changes. Specify a 'resource[name]', the :action to be taken, and then the :timer for that action.
Note that subscribes doesn’t apply the specified action to the resource that it listens to - for example:
file '/etc/nginx/ssl/example.crt' do mode '0600' owner 'root' end service 'nginx' do subscribes :reload, 'file[/etc/nginx/ssl/example.crt]', :immediately end In this case the subscribes property reloads the nginx service whenever its certificate file, located under /etc/nginx/ssl/example.crt, is updated. subscribes doesn’t make any changes to the certificate file itself, it merely listens for a change to the file, and executes the :reload action for its resource (in this example nginx) when a change is detected.
If the other resource doesn’t exist, the subscription won’t raise an error. Contrast this with the stricter semantics of notifies, which will raise an error if the other resource doesn’t exist.
A timer specifies the point during a Chef Infra Client run at which a notification is run. The following timers are available:
:beforeSpecifies that the action on a notified resource should be run before processing the resource block in which the notification is located.
:delayedDefault. Specifies that a notification should be queued up, and then executed at the end of a Chef Infra Client run.
:immediate,:immediatelySpecifies that a notification should be run immediately, for each resource notified.
The syntax for subscribes is:
subscribes :action, 'resource[name]', :timer Guards
A guard property can be used to evaluate the state of a node during the execution phase of a Chef Infra Client run. Based on the results of this evaluation, a guard property is then used to tell Chef Infra Client if it should continue executing a resource. A guard property accepts either a string value or a Ruby block value:
- A string is executed as a shell command. If the command returns
0, the guard is applied. If the command returns any other value, then the guard property isn’t applied. String guards in a powershell_script run Windows PowerShell commands and may returntruein addition to0. - A block is executed as Ruby code that must return either
trueorfalse. If the block returnstrue, the guard property is applied. If the block returnsfalse, the guard property isn’t applied.
A guard property is useful for ensuring that a resource is idempotent by allowing that resource to test for the desired state as it’s being executed, and then if the desired state is present, for Chef Infra Client to do nothing.
PropertiesThe following properties can be used to define a guard that’s evaluated during the execution phase of a Chef Infra Client run:
not_ifPrevent a resource from executing when the condition returns
true.only_ifAllow a resource to execute only if the condition returns
true.
Examples
This resource does not have any examples.