cheatsheets/chef.md

110 lines
1.6 KiB
Markdown

---
title: Chef
category: Devops
layout: 2017/sheet
---
### Install
In your server:
{: .-setup}
```bash
$ sudo apt-get install curl
```
```bash
$ curl -L https://www.opscode.com/chef/install.sh | bash
Thank you for installing Chef!
```
```bash
$ chef-solo -v
...
Chef: 11.4.0
```
### Start the cookbook
```bash
wget http://github.com/opscode/chef-repo/tarball/master -O - | tar xzf - --strip-components=1
```
### Knife
```bash
$ knife cookbook site download mysql
```
### Invoking chef-solo
```bash
$ chef-solo -c solo.rb -j web.json
```
## Examples
### Simple compile-from-source
```ruby
execute "tar --no-same-owner -zxf hi.tar.gz" do
cwd "/usr/local/src"
creates "/usr/local/src/node-v#{version}"
end
```
```ruby
bash "compile" do
cwd "/usr/local/src/node-v#{version}"
code %[
PATH=/usr/local/bin:$PATH
./configure
make
]
creates "/usr/local/src/node-v#{version}/node"
end
```
### remote file
```ruby
remote_file "/usr/local/src/hi.tar.gz" do
source "http://..."
checksum "ab83be..."
mode 0644
action :create_if_missing
end
```
### ruby_block
```ruby
ruby_block "name" do
block { File.read ... }
not_if { File.exists?(...) }
end
```
### Execute
```ruby
execute "name" do
cwd "..."
environment({ "PATH" => "..." })
command "make install"
creates "..."
end
```
### Conditions
```ruby
creates "/usr/local/src/node-v#{version}/node"
not_if { File.exists?('...') }
```
## Also see
* [Getting started with Chef](http://gettingstartedwithchef.com/) _(gettingstartedwithchef.com)_
* [install_from_source.rb recipe](https://github.com/mdxp/nodejs-cookbook/blob/master/recipes/install_from_source.rb) _(github.com)_