崔先生烹飪課

崔先生烹飪課 - 初識chef

前言

chef 是DevOps中常用的自動化平臺,一般用來創建、部署、變更基礎設施環境和應用。說人話,chef就是一個指揮中心,可以管理很多服務器,在這些服務器上按照自動化腳本來運行相應命令。計算機中的自動化平臺類似於一個菜譜,根據這個菜譜其他人都可以去做出菜品來。從今天開始,崔先生將帶大家一起開始烹飪之旅,我們的目標是用chef征服自動化平臺!

安裝chef

崔先生是一個實戰派,既然要開始學習烹飪,首先要準備好烹飪環境。熟悉崔先生的朋友都知道,我比較喜歡吃海鮮,鯨魚就很美味,所以我們先去捕鯨魚做為食材。

第一步肯定是去,菜市場買條鯨魚。

# 自動化安裝docker和docker-compose
cat /root/dockerInstall.sh
```
#!/bin/bash
getPath(){
 this_dir=`pwd`
 dirname $0 | grep "^/" >/dev/null
 if [ $? -eq 0 ];then
 this_dir=`dirname $0`
 else
 dirname $0 | grep "^\." >/dev/null
 retval=$?
 if [ $retval -eq 0 ];the
 this_dir=`dirname $0 | sed "s#^.#$this_dir#"`
 else
 this_dir=`dirname $0 | sed "s#^#$this_dir/#"`
 fi
 fi
 echo `dirname $this_dir`
}
​
## usage
usage(){
 cat<

菜譜

鯨魚都買好了,菜板也準備好了,接下來就是正在的烹飪時刻了!不過為了做出完美的食材,我們需要一份菜譜。

好在我們現在已經擁有了一份菜譜,那就是recipe.rb。別急我們剛剛用docker-compose部署了一個官方chef環境,我們只需進入到workstation容器既可以看到,官方為我們準備的菜譜,我們只需要理解菜譜,並按照菜譜料理即可。

# 進入workstation容器
docker exec -it workstation bash
# 查看recipe.rd菜譜
cat recipe.rd
```
apt_update
 
package 'figlet'
 
directory '/tmp'
 
execute 'write_hello_world' do
 command 'figlet Hello World! > /tmp/hello.txt'
 not_if { File.exist?('/tmp/hello.txt') }
end
```
# 執行菜譜,開始料理
chef-run web1 recipe.rb
# 查看最終的成品
ssh web1 cat /tmp/hello.txt

這裡我解釋一下,一些概念。

由於之前docker-compose部署了官方chef實例。我們現在有這幾個容器,workstation是我們運行chef命令的中樞容器,web1是我們管理的其中一個容器。我們通過在workstation容器上運行chef命令,直接控制web1容器進行菜譜操作。查看了菜譜之後,我們可以發現菜譜中指定了軟件包應當是最新的,應當安裝一個figlet包,執行的目錄應該是/tmp,執行command中設置的命令,最後檢查一下有沒有生成hello.txt文件。

recipe.rd 這個菜譜的效果:在指定的機器上,安裝figlet包,然後將Hello World!用空體字體寫到hello.txt文件中。

今天的就到此結束了,若明天還能抽出時間,我們將繼續烹飪鯨魚~~

崔先生烹飪課


分享到:


相關文章: