Do you think IIT Guwahati certified course can help you in your career?
No
Introduction
Cookstyle is a code linting tool that aids in the improvement of your Chef Infra cookbooks. It improves by identifying and automatically fixing any errors in style, grammar, and logic. Cookstyle is tailored for Chef Cookbook code and is more reliable than Rubocop. As a result, linting Cookbooks using Cookstyle will be more reliable and less likely to result in failed CI tests. In this article, we will be learning about Cookstyle. We will also discuss macos_desktop_screensaver resources, its syntax, properties, action, and Common Resource Functionality.
Chef
Infrastructure provisioning is automated using Chef, a configuration management tool. It was developed on top of the Ruby DSL programming language. It makes it easier to manage and configure the company's server. It can combine with any type of cloud technology.
DevOps makes use of Chef to install and maintain servers and apps both locally and in the cloud.
Features of Chef
The following list of Chef's key attributes:
Chef uses the popular Ruby language to develop domain-specific languages.
The chef makes no assumptions about the current status of a node. It uses its mechanics to ascertain the machine's status at the moment.
Chef is the best technology to deploy and manage the server, software, and cloud storage.
macos_firewall Resource
To activate the firewall on macOS systems, use the resource macos_firewall.
Syntax
The complete syntax for every property that the macos_firewall resource can use is as follows:
macos_firewall 'name' do
action Symbol # defaults to : enable if not specified
end
Where:
The source is macos_firewall.
The resource block's name is specified by the author.
Action specifies the actions the Chef Infra Client will perform to put the node in the desired state.
Actions
The actions of the resource macos_firewall are as follows:
:disable
:enable
:nothing
Unless another resource alerts it to do so, this resource block accomplishes nothing. When alerted, this resource block either executes right away or is scheduled to execute at the conclusion of a Chef Infra Client run.
Properties
There are no properties for this resource.
Common Resource Functionality
Every resource shares the following characteristics:
Common Properties
Every resource shares the following characteristics:
compile_time
Ruby Type: true, false | Default Value: false
Control the stage of the node's resource execution. Run while the resource collection is being constructed by setting the value to true (the compile phase). Run when the Chef Infra Client is configuring the node by setting false (the converge phase).
If a resource fails for any reason, the recipe will still be executed. Quiet won't show the complete stack trace if a resource fails.
retries
Ruby Integer Type | 0 Default Value
The number of times the resource will be tried once any exceptions are caught.
Retry_delay
Ruby Type: Integer | Default Value: 2
seconds that pass between retry attempts.
Sensitive
Ruby Type: false, true, default: false
Make sure that Chef Infra Client does not record critical resource information.
Notifications
notifies
Ruby Type: Symbol, 'Chef::Resource[String]'
When one resource's state changes, it may alert another resource to take appropriate action. Name the resource, specify the activity it should perform, and then set a timer for that action. When notifying multiple resources, use a notifies statement for each resource that needs to be informed.
An error is triggered if the referenced resource is missing. In contrast, if the source resource cannot be located, subscribes will not fail.
When a notification is run during the course of a Chef Infra Client run is determined by a timer. There are the upcoming timings available:
:before
Specifies that the action on a resource that has received a notification should be executed. It should be executed before processing the resource block that contains the notification.
:delayed
Default. Specifies that execution of notification should be queued up for execution. At the conclusion of a run of the Chef Infra Client.
:immediate,:immediately
Specifies that for each resource informed, a notification should be run right away.
The notifications syntax is:
notifies :action, 'resource[name]', :timer
subscribes
Ruby Type: Symbol, 'Chef::Resource[String]'
If the status of the resource being listened to changes, the resource listening to it may take action. Name the resource, describe the action that will be taken, and then set a timer for that action.
Be aware that when you use subscribes, the resource you are listening to is not affected by the action you specify. For instance:
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 instance, whenever the certificate file for nginx, found at /etc/nginx/ssl/example.crt, is modified. The subscribes property reloads the nginx service. The:reload action is executed for the resource (in this case, nginx) when a change is noticed by subscribes. It makes no modifications to the certificate file itself.
There won't be a problem with the subscription if the other resource is nonexistent. In contrast, notifications have stricter semantics and will report an error if the other resource isn't there.
When a notification is run during the course of a Chef Infra Client run is determined by a timer. There are the upcoming timings available:
:before
Specifies that the action on a resource that has received a notification should be executed. It should be executed before processing the resource block that contains the notification.
:delayed
Default. Specifies that the execution of notification should be queued up for execution. At the conclusion of a run of the Chef Infra Client.
:immediate,:immediately
Specifies that for each resource informed, a notification should be run right away.
The subscribes syntax is as follows:
subscribes :action, 'resource[name]', :timer
Guards
During the execution stage of a Chef Infra Client run, the condition of a node can be assessed using a guard property. A guard property is then used to inform Chef Infra Client whether it should keep running a resource in response to the findings of this assessment. Both a Ruby block value and a string value are acceptable values for a guard property:
A string is used to run a command in the shell. The guard is applied if the command returns 0. The guard property is not used if the command returns any other value. In a PowerShell script, string guards can return true in addition to 0 and launch Windows PowerShell commands.
The Ruby code that executes a block must return either true or false. The guard property is used if the block returns true. The guard attribute is not used if the block returns false.
By allowing a resource to check for the desired state as it is being performed. And then do nothing if the required state is present. A guard property is helpful for guaranteeing that a resource is idempotent.
Properties
A guard that is evaluated during the execution phase of a Chef Infra Client run can be defined using the following properties:
not_if
Prevent the execution of a resource when a condition evaluates to true.
only_if
Only permit the use of a resource if the condition returns true.
Examples
The examples below show different methods for utilizing the macos firewall resource in recipes:
Turn on the macOS Firewall:
macos_firewall 'Enable Firewall Protection' do
action :enable
end
Turn off the macOS Firewall:
macos_firewall 'Disable Firewall Protection' do
action :disable
end
Frequently Asked Questions
Explain the major components of Chef.
The major components of the chef are the chef server, chef node, and chef workstation.
What exactly is a Chef Node, and why is it significant?
The node, a component of the Chef design, can be viewed as a physical server or a virtual machine. With Chef, any resource may be used.
What distinguishes a recipe in Chef from a cookbook?
A Recipe is created when resources are combined, and this is helpful for carrying out settings and policy. Combining Recipes creates a Cookbook, which is much easier to maintain than a single Recipe.
Why are SSL certificates used in Chef?
The Chef's initial configuration, as well as the creation of the certificate and private keys in Nginx, require the SSL certificate. This makes sure that between the Chef Client and Chef Server, the appropriate data can be obtained.
Conclusion
In this article, we have extensively discussed CHEF- RESOURCES - macos_firewall Resource.