เชฟ - พิมพ์เขียว

ใน Chef พิมพ์เขียวเป็นเครื่องมือในการค้นหาและบันทึกสิ่งที่มีอยู่บนเซิร์ฟเวอร์ พิมพ์เขียวบันทึกทุกสิ่งที่จำเป็นเช่นกรรมการแพ็คเกจไฟล์กำหนดค่าและอื่น ๆ พิมพ์เขียวมีความสามารถในการแยกข้อมูลเซิร์ฟเวอร์ในรูปแบบต่างๆ หนึ่งในนั้นคือสูตรเชฟ สิ่งนี้ช่วยในการกำหนดค่าเซิร์ฟเวอร์เฉพาะโดยใช้ Chef

วิธีการ Woring

เราจำเป็นต้องติดตั้ง Python และ Git บนโหนดที่เราต้องการเรียกใช้พิมพ์เขียว

Step 1 - ติดตั้งพิมพ์เขียว

vipin@server:~$ pip install blueprint

Step 2 - สร้างพิมพ์เขียว

user@server:~$ sudo blueprint create internal-cookbook 
# [blueprint] using cached blueprintignore(5) rules 
# [blueprint] searching for Python packages 
# [blueprint] searching for PEAR/PECL packages 
# [blueprint] searching for Yum packages 
# [blueprint] searching for Ruby gems 
# [blueprint] searching for npm packages 
# [blueprint] searching for software built from source 
# [blueprint] searching for configuration files 
# [blueprint] /etc/ssl/certs/AC_Ra\xc3\xadz_Certic\xc3\ 
xa1mara_S.A..pem not UTF-8 - skipping it 
# [blueprint] /etc/ssl/certs/NetLock_Arany_=Class_Gold=_F\xc5\ 
x91tan\xc3\xbas\xc3\xadtv\xc3\xa1ny.pem not UTF-8 - skipping it 
# [blueprint] /etc/ssl/certs/EBG_Elektronik_Sertifika_Hizmet_Sa\ 
xc4\x9flay\xc4\xb1c\xc4\xb1s\xc4\xb1.pem not UTF-8 - skipping it 
# [blueprint] /etc/ssl/certs/Certinomis_-_Autorit\xc3\xa9_Racine. 
pem not UTF-8 - skipping it 
# [blueprint] /etc/ssl/certs/T\xc3\x9cB\xc4\xb0TAK_UEKAE_K\xc3\ 
xb6k_Sertifika_Hizmet_Sa\xc4\x9flay\xc4\xb1c\xc4\xb1s\xc4\xb1_-_S\ 
xc3\xbcr\xc3\xbcm_3.pem not UTF-8 - skipping it 
# [blueprint] searching for APT packages 
# [blueprint] searching for service dependencies

Step 3 - สร้างตำราอาหารจากพิมพ์เขียว

user@server:~$ blueprint show -C internal-cookbook my-server/recipes/default.rb

Step 4 - ตรวจสอบเนื้อหาของไฟล์ที่สร้างขึ้น

user@server:~$ cat internal-cookbook /recipes/default.rb 
# 
# Automatically generated by blueprint(7). Edit at your own risk. 
# 
cookbook_file('/tmp/96468fd1cc36927a027045b223c61065de6bc575.tar') 
do 
   backup false 
   group 'root' 
   mode '0644' 
   owner 'root' 
   source 'tmp/96468fd1cc36927a027045b223c61065de6bc575.tar' 
end 
execute('/tmp/96468fd1cc36927a027045b223c61065de6bc575.tar') do 
   command 'tar xf "/tmp/96468fd1cc36927a027045b223c61065de6bc575.tar"' 
   cwd '/usr/local' 
end 
directory('/etc/apt/apt.conf.d') do 
...TRUNCATED OUTPUT... 
service('ssh') do 
   action [:enable, :start] 
   subscribes :restart, resources('cookbook_file[/etc/default/ 
      keyboard]', 'cookbook_file[/etc/default/console-setup]', 
      'cookbook_file[/etc/default/ntfs-3g]', 'package[openssh-server]', 
      'execute[96468fd1cc36927a027045b223c61065de6bc575.tar]') 
end

สคริปต์เวิร์กโฟลว์

Blueprint เป็นแพ็คเกจ Python ที่ค้นหาข้อมูลการกำหนดค่าที่เกี่ยวข้องทั้งหมดของเซิร์ฟเวอร์และเก็บไว้ใน Git repo พิมพ์เขียวแต่ละตัวมีชื่อของตัวเอง

เราสามารถขอให้พิมพ์เขียวแสดงเนื้อหาของ Git repo ในรูปแบบต่างๆ

user@server:~$ ls -l internal-cookbook / 
total 8 
drwxrwxr-x 3 vagrant vagrant 4096 Jun 28 06:01 files 
-rw-rw-r-- 1 vagrant vagrant 0 Jun 28 06:01 metadata.rb 
drwxrwxr-x 2 vagrant vagrant 4096 Jun 28 06:01 recipes

พิมพ์เขียวแสดงคำสั่ง

user@server:~$ blueprint show-packages my-server 
...TRUNCATED OUTPUT... 
apt wireless-regdb 2011.04.28-1ubuntu3 
apt zlib1g-dev 1:1.2.3.4.dfsg-3ubuntu4 
python2.7 distribute 0.6.45 
python2.7 pip 1.3.1 
pip blueprint 3.4.2 
pip virtualenv 1.9.1

คำสั่งก่อนหน้านี้แสดงแพ็คเกจที่ติดตั้งทุกชนิด คำสั่งการแสดงอื่น ๆ มีดังนี้ -

  • show-files
  • show-services
  • show-sources