Run one simple command to easily set up your Windows or Mac machine for Chef cookbook development in about 20 minutes.
If you are on a Windows machine you will need a minimum of Windows 10.
You will need at least PowerShell 3.0. We recommend PowerShell 5.0
because it supports Microsoft DSC. The user running the install will
need to be able to run powershell commands as Administrator. Powershell command "Set-ExecutionPolicy Unrestricted" may be neeeded to allow commands to run.
If you are on a Mac you will need a minimum of OS/X 11.13.
If you need to use a proxy for internet access, you will need to export these proxy environment variables first.
Copy the PowerShell commands below and paste them into a PowerShell Admin console. These command will download and run the bootstrap script on your workstation.
Invoke-WebRequest -UseBasicParsing https://raw.githubusercontent.com/Nordstrom/chefdk_bootstrap/master/bootstrap.ps1 | Invoke-Expression
install
Copy the command below and paste it into a terminal. This will download and run the bootstrap script on your workstation.
ruby -e "$(curl https://raw.githubusercontent.com/Nordstrom/chefdk_bootstrap/master/bootstrap.rb)"
Follow the instructions in the ChefDK README to complete the Chef workstation setup.
Copy/paste these environment variables into your terminal.
# change these values to your proxy address
$env:http_proxy='http://myproxy.example.com:1234'
$env:https_proxy=$env:http_proxy
# don't go through the proxy for these addresses.
# change example.com to your corporate DNS domain
$env:no_proxy='localhost,127.0.0.1,example.com'
Copy the PowerShell command below and paste them into a PowerShell Admin console. This will execute the bootstrap script on your workstation.
Invoke-WebRequest -UseBasicParsing https://raw.githubusercontent.com/Nordstrom/chefdk_bootstrap/master/bootstrap.ps1 -ProxyUseDefaultCredentials -Proxy $env:https_proxy | Invoke-Expression
install
The ChefDK_bootstrap script will write your environment variables to your Profile.ps1
.
Copy/paste these environment variables into your terminal.
# change these values to your proxy address
export http_proxy=http://myproxy.example.com:1234
export https_proxy=$http_proxy
# don't go through the proxy for these addresses.
# change example.com to your corporate DNS domain
export no_proxy='localhost,127.0.0.1,example.com'
The ChefDK_bootstrap script will write your environment variables to your ~/.bash_profile
.
If you are using a different shell, you will need to export these environment variables in your shell startup file (e.g. .zshrc
).
Now run the Quickstart for Mac
If you want to use your own custom wrapper cookbook, add the name of your cookbook and your private supermarket source to these commands instead of the original Quickstart (examples included below).
You can pass in attributes via URL/path to a JSON file (see the --json-attributes option in chef-client ). For Windows, json_attributes is a named parameter of the bootstrap PowerShell script. For Mac, json-attributes is a named parameter of the bootstrap Ruby script.
$CHEFDK_BOOTSTRAP_JSON_ATTRIBUTES = "http://server/attributes.json"
Invoke-WebRequest -UseBasicParsing https://raw.githubusercontent.com/Nordstrom/chefdk_bootstrap/master/bootstrap.ps1 | Invoke-Expression
install -json_attributes $CHEFDK_BOOTSTRAP_JSON_ATTRIBUTES
ruby -e "$(curl https://raw.githubusercontent.com/Nordstrom/chefdk_bootstrap/master/bootstrap.rb)" - --json-attributes http://server/attributes.json
Deprecated. If you would like to use a custom cookbook, please use an earlier version of ChefDK_bootstrap.
You can specify the version of chefdk to install as a named parameter in the bootstrap script. By default, the bootstrap script will install the latest version of chefdk. The script will not re-install chefdk if the target version is already installed.
Invoke-WebRequest -UseBasicParsing https://raw.githubusercontent.com/Nordstrom/chefdk_bootstrap/master/bootstrap.ps1 | Invoke-Expression
install -version <target version>
ruby -e "$(curl https://raw.githubusercontent.com/Nordstrom/chefdk_bootstrap/master/bootstrap.rb)" - --version <target version>
This cookbook installs these tools:
Atom, a free, general purpose, cross-platform, open source, text editor. Out of the box, Atom supports all the languages you will need for Chef development: Ruby, PowerShell, Bash, XML, JSON, etc.
Git - command line git client and tools. Optionally configures a default global gitconfig file.
Virtualbox - Oracle's free, open source virtualization tool for local cookbook testing.
Vagrant - ChefDK's included [Test Kitchen]() tool uses Vagrant to spin up local VMs for cookbook testing.
Installs Chocolatey for a Windows machine and homebrew for a Mac machine. Both of these are package managers, similar to apt-get
on Ubuntu. Chocolatey is used to install packages like posh-git
and kdiff3
, while homebrew is used to install packages like iterm2
.
Installs all the other tools marked true
in the
node['chefdk_bootstrap']['package']
hash.
On Windows, includes the Powershell profile configuration recipe.
chef shell-init powershell
.Variable | Description |
---|---|
GITUSERNAME | User name set in gitconfig |
GITUSEREMAIL | User email name set in gitconfig |
The attributes defined by this recipe are organized under the
node['chefdk_bootstrap']
namespace.
Attribute | Description | Type | Default |
---|---|---|---|
['atom']['source_url'] | Windows: Atom installer package source URL | URL String | https://atom.io/download/windows |
['atom']['source_url'] | Mac: Atom installer package source URL | URL String | https://atom.io/download/mac |
['package']['atom'] | Whether to install Atom or not | boolean | true |
['package']['chef_ca'] | Whether to install a certificate authority cert bundleA or not | boolean | false |
['package']['kdiff3'] | Whether to install kdiff3 or not | boolean | true |
['package']['vagrant'] | Whether to install Vagrant or not | boolean | true |
['package']['virtualbox'] | Whether to install Virtualbox or not | boolean | true |
['package']['git'] | Whether to install git and related packages or not | boolean | true |
['package']['gitextensions'] | Whether to install gitextensions or not | boolean | true |
['package']['iterm2'] | Whether to install iterm2 or not | boolean | true |
['package']['chefdk_julia'] | Whether to install chefdk_julia or not | boolean | false |
['package']['gitconfig'] | Whether to configure a default gitconfig or not | boolean | false |
Nordstrom, Inc.
Copyright 2015, 2018 Nordstrom, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.