Create the AWS credentials file from a Chef Data Bag
When a process on a server instance needs access to an AWS account, the user who will execute the AWS CLI commands needs to be able to automatically authenticate in AWS. For automatic AWS authentication, the AWS CLI creates two files in the…
Dynamically set Chef resource attributes
When you need to set a Chef resource attribute based on the current state of the environment, there is a way to dynamically provide the value. Set the value of a boolean variable with a test, Declare the Chef resource and assign a reference to it to a…
No instances for regex `’, try running `kitchen list’ in Chef Test Kitchen
When I tried to execute the “kitchen list” command in Chef Test Kitchen the following error came up: No instances for regex `’, try running `kitchen list’ I could not find the reason for the error, so I opened the…
Chef Attributes
Chef attributes are global variables that are available for every cookbook on the node. There are multiple formats to declare and use an attribute. For important notes on the syntax, please see Undefined method or attribute error in a Chef recipe. To…
Getting started with InSpec
InSpec is an open-source testing framework to verify your infrastructure satisfies the design requirements. In this article, we will learn to install and use InSpec with Chef. Install InSpec Navigate to https://downloads.chef.io/inspec, and download the…
Undefined method or attribute error in a Chef recipe
There are multiple reasons Chef can display the following error message NoMethodError ------------- Undefined method or attribute `...' on `node' There are many ways to reference an attribute in a Chef recipe: node['ATTRIBUTE_NAME'] (the…
Add SSH key to a Jenkins Git step
To access a Git repository Jenkins can use an SSH key. To add the SSH key to the Jenkins server use the following Chef script Store the SSH key in an encrypted data bag called “keys”. { "id": "ci_private_keys", "ci_github_key": "-----BEGIN…
Generate a GUID in Chef with Ruby
When you need a unique string to name a resource in your Chef scrip, generate a GUID with SecureRandom.uuid To make sure the resource always gets a unique name: log "#{SecureRandom.uuid}" do message 'My message' level :info end
Chef custom resource is using the same property name as the called resource
When you create a Chef custom resource, you can call other resources including custom resources you have created. For ease of use it can be convenient to use the same property name as the called resource use. property :delay_mins, Fixnum,…
NoMethodError: undefined method `exists?’ for Chef::Resource::File:Class
When you create a Chef custom resource and use the File class, you need to make slight a change in the syntax you use. In a Chef recipe you can use if File.exists?("#{FileName}") to check for the existence of a file. If we use the same line in a Chef…