Đầu bếp - Thiết lập Bếp thử nghiệm

Test Kitchen là khung kiểm tra tích hợp của Chef's. Nó cho phép viết các công thức nấu ăn thử nghiệm, sẽ chạy trên máy ảo sau khi chúng được khởi tạo và hội tụ bằng cách sử dụng sách nấu ăn. Các công thức thử nghiệm chạy trên máy ảo đó và có thể xác minh xem mọi thứ có hoạt động như mong đợi hay không.

ChefSpeclà một cái gì đó chỉ mô phỏng một Chef run. Thử nghiệm nhà bếp khởi động nút thực và chạy Chef trên đó.

Step 1 - Cài đặt viên đá quý Ruby của nhà bếp thử nghiệm và viên đá quý thử nghiệm trong nhà bếp để cho phép nhà bếp thử nghiệm sử dụng đá quý thử nghiệm để quay thử.

$ gem install kitchen 
$ gem install kitchen-vagrant

Step 2- Đặt bếp thử. Điều này có thể được thực hiện bằng cách tạo.kitchen.yml trong thư mục sách nấu ăn.

driver_plugin: vagrant 
driver_config: 
   require_chef_omnibus: true 
platforms: 
   - name: ubuntu-12.04 
   driver_config: 
      box: opscode-ubuntu-12.04 
      box_url: https://opscode-vm.s3.amazonaws.com/vagrant/opscode_ 
      ubuntu-12.04_provisionerless.box 
suites: 
   - name: default 
run_list: 
   - recipe[minitest-handler] 
   - recipe[my_cookbook_test] 
attributes: { my_cookbook: { greeting: 'Ohai, Minitest!'} }

Trong đoạn mã trên, một phần xác định rằng vagrant cần quay các máy ảo và nó xác định rằng bạn muốn Omnibus cài đặt Chef trên nút đích.

Phần thứ hai xác định nền tảng nào bạn muốn kiểm tra sách nấu ăn. Vagrant sẽ luôn tạo và hủy các phiên bản mới. Bạn không phải lo lắng về các tác dụng phụ với máy ảo ảo mà bạn tạo ra bằng cách sử dụng tệp Vagrant.

Thử nghiệm bếp có thể được coi là một môi trường tạm thời giúp chạy và thử nghiệm sách nấu ăn trong một môi trường tạm thời tương tự như sản xuất. Khi bật bếp thử nghiệm, người ta có thể đảm bảo rằng đoạn mã đã cho đang hoạt động, trước khi nó thực sự được triển khai vào môi trường thử nghiệm, tiền sản xuất và sản xuất. Tính năng này của nhà bếp thử nghiệm được nhiều tổ chức tuân theo như một bộ trước khi đưa sách nấu ăn vào môi trường làm việc thực tế.

Kiểm tra quy trình làm việc của nhà bếp

Sau đây là các bước liên quan đến Quy trình làm việc của Nhà bếp Thử nghiệm.

Tạo sách dạy nấu ăn bằng Chef

Sử dụng mã sau để tạo sách nấu ăn.

$ chef generate cookbook motd_rhel 
Installing Cookbook Gems: 

Compiling Cookbooks... 
Recipe: code_generator::cookbook
   * directory[C:/chef/cookbooks/motd_rhel] action create
      - create new directory C:/chef/cookbooks/motd_rhel
   
   * template[C:/chef/cookbooks/motd_rhel/metadata.rb] action create_if_missing
      - create new file C:/chef/cookbooks/motd_rhel/metadata.rb
      - update content in file C:/chef/cookbooks/motd_rhel/metadata.rb from none to 
      d6fcc2 (diff output suppressed by config)
   
   * template[C:/chef/cookbooks/motd_rhel/README.md] action create_if_missing
      - create new file C:/chef/cookbooks/motd_rhel/README.md
      - update content in file C:/chef/cookbooks/motd_rhel/README.md from none to 50deab
         (diff output suppressed by config)
   
   * cookbook_file[C:/chef/cookbooks/motd_rhel/chefignore] action create
      - create new file C:/chef/cookbooks/motd_rhel/chefignore
      - update content in file C:/chef/cookbooks/motd_rhel/chefignore from none to 15fac5
         (diff output suppressed by config)
   
   * cookbook_file[C:/chef/cookbooks/motd_rhel/Berksfile] action create_if_missing
      - create new file C:/chef/cookbooks/motd_rhel/Berksfile
      - update content in file C:/chef/cookbooks/motd_rhel/Berksfile from none to 9f08dc
         (diff output suppressed by config)
   
   * template[C:/chef/cookbooks/motd_rhel/.kitchen.yml] action create_if_missing
      - create new file C:/chef/cookbooks/motd_rhel/.kitchen.yml
      - update content in file C:/chef/cookbooks/motd_rhel/.kitchen.yml
         from none to 49b92b (diff output suppressed by config)
   
   * directory[C:/chef/cookbooks/motd_rhel/test/integration/default/serverspec]
      action create 
      - create new directory 
         C:/chef/cookbooks/motd_rhel/test/integration/default/serverspec
   
   * directory[C:/chef/cookbooks/motd_rhel/test/integration/helpers/serverspec]
      action create 
      - create new directory 
         C:/chef/cookbooks/motd_rhel/test/integration/helpers/serverspec
   
   * cookbook_file
      [C:/chef/cookbooks/motd_rhel/test/integration/helpers/serverspec/spec_helper.rb]
      action create_if_missing
      - create new file 
         C:/chef/cookbooks/motd_rhel/test/integration/helpers/serverspec/spec_helper.rb
      - update content in file
         C:/chef/cookbooks/motd_rhel/test/integration/helpers/serverspec/spec_helper.rb
            from none to d85df4 (diff output suppressed by config)
   
   * template
      [C:/chef/cookbooks/motd_rhel/test/integration/default/serverspec/defaul t_spec.rb]
      action create_if_missing
      - create new file
         C:/chef/cookbooks/motd_rhel/test/integration/default/serverspec/default_spec.rb
      - update content in file
         C:/chef/cookbooks/motd_rhel/test/integration/default/serverspec/default_spec.rb
            from none to 3fbdbd (diff output suppressed by config)
   
   * directory[C:/chef/cookbooks/motd_rhel/spec/unit/recipes] action create
      - create new directory C:/chef/cookbooks/motd_rhel/spec/unit/recipes
   
   * cookbook_file
      [C:/chef/cookbooks/motd_rhel/spec/spec_helper.rb] action create_if_missing
      - create new file C:/chef/cookbooks/motd_rhel/spec/spec_helper.rb
      - update content in file
         C:/chef/cookbooks/motd_rhel/spec/spec_helper.rb from none to 587075
            (diff output suppressed by config)
   
   * template
      [C:/chef/cookbooks/motd_rhel/spec/unit/recipes/default_spec.rb]
      action create_if_missing
      - create new file C:/chef/cookbooks/motd_rhel/spec/unit/recipes/default_spec.rb
      - update content in file
         C:/chef/cookbooks/motd_rhel/spec/unit/recipes/default_spec.rb
            from none to ff3b17 (diff output suppressed by config)
   
   * directory[C:/chef/cookbooks/motd_rhel/recipes] action create
      - create new directory C:/chef/cookbooks/motd_rhel/recipes
   
   * template[C:/chef/cookbooks/motd_rhel/recipes/default.rb] action create_if_missing
      - create new file C:/chef/cookbooks/motd_rhel/recipes/default.rb
      - update content in file
         C:/chef/cookbooks/motd_rhel/recipes/default.rb from none to c4b029
            (diff output suppressed by config) 
   
   * execute[initialize-git] action run 
      - execute git init . 
   
   * cookbook_file[C:/chef/cookbooks/motd_rhel/.gitignore] action create
      - create new file C:/chef/cookbooks/motd_rhel/.gitignore
      - update content in file C:/chef/cookbooks/motd_rhel/.gitignore from none to 33d469
         (diff output suppressed by config)
   
   * execute[git-add-new-files] action run
      - execute git add .
   
   * execute[git-commit-new-files] action run 
      - execute git commit -m "Add generated cookbook content"

Sau đây là Cấu trúc Sách dạy nấu ăn đã Tạo dưới dạng đầu ra của đoạn mã trên.

Kiểm tra tệp cấu hình nhà bếp

tệp .kitchen.yaml

driver: 
   name: vagrant 
provisioner: 
   name: chef_zero 
# verifier: 
# name: inspec 
# format: doc 
platforms: 
   - name: ubuntu-14.04 
suites: 
   - name: default 
   run_list: 
      - recipe[motd_rhel::default] 
   attributes:

Drivers - Nó chỉ định phần mềm quản lý máy.

Provisioner- Nó cung cấp đặc điểm kỹ thuật về cách Chef điều hành. Chúng tôi đang sử dụng Chef_zero vì nó cho phép bắt chước môi trường máy chủ Chef trên máy cục bộ. Điều này cho phép làm việc với các thuộc tính nút và thông số kỹ thuật của máy chủ Chef.

Platform - Điều này chỉ định hệ điều hành đích.

Suites- Nó xác định những gì người ta muốn áp dụng trên môi trường ảo. Ở đây, bạn xác định nhiều định nghĩa. Đó là vị trí mà bạn xác định danh sách chạy, chỉ định công thức nào sẽ chạy và chúng ta cần chạy theo trình tự nào.

Chạy các lệnh theo trình tự

Danh sách nhà bếp

$ kitchen list 
Instance  Driver  Provisioner Verifier   Transport Last Action 
ubuntu-1404 Vagrant ChefZero   Busser       Ssh   <Not Created>

Bếp Tạo

$ kitchen create
-----> Starting Kitchen (v1.4.2)
-----> Creating <default-centos-72>...
      Bringing machine 'default' up with 'virtualbox' provider...
      ==> default: Box 'opscode-centos-7.2' could not be found.
         Attempting to find and install...
      default: Box Provider: virtualbox
      default: Box Version: >= 0
      ==> default: Box file was not detected as metadata. Adding it directly...
         ==> default: Adding box 'opscode-centos-7.2' (v0) for provider: virtualbox
         default: Downloading:
            https://opscode-vmbento.s3.amazonaws.com/vagrant/virtualbox/
            opscode_centos-7.1_chefprovisionerless.box[...]
         Vagrant instance <default-centos-72> created.
         Finished creating <default-centos-72> (3m12.01s).
         -----> Kitchen is finished. (3m12.60s)

Hội tụ nhà bếp

$ kitchen converge 
-----> Converging <default-centos-72>...        
      Preparing files for transfer        
      Preparing dna.json        
      Resolving cookbook dependencies with Berkshelf 4.0.1...
      Removing non-cookbook files before transfer       
      Preparing validation.pem        
      Preparing client.rb 
-----> Chef Omnibus   installation detected (install only if missing)        
      Transferring files to <default-centos-72>       
      Starting Chef Client, version 12.6.0        
      resolving cookbooks for run list: ["motd_rhel::default"]
      Synchronizing Cookbooks: - motd_rhel (0.1.0)       
      Compiling Cookbooks...       Converging 1 resources        
      Recipe: motd_rhel::default        (up to date)         
      Running handlers:       Running handlers complete       
      Chef Client finished, 0/1 resources updated in 01 seconds        
      Finished converging <default-centos-72> (0m3.57s). 
      -----> Kitchen is finished. (0m4.55s)

Thiết lập thử nghiệm

Đăng nhập nhà bếp được sử dụng để kiểm tra xem máy ảo thử nghiệm có được cung cấp chính xác hay không.

$ kitchen login 
Last login: Thu Jan 30 19:02:14 2017 from 10.0.2.2 
hostname:  default-centos-72 
fqdn:      default-centos-72 
memory:    244180kBcpu count: 1

Cuối cùng thoát

$ exit 
Logout 
Connection to 127.0.0.1 closed.

Phá hủy thiết lập

$ Kitchen destroy 
-----> Starting Kitchen (v1.4.2) 
-----> Destroying <default-centos-72>...       
   ==> default: Forcing shutdown of VM...        
   ==> default: Destroying VM and associated drives...        
   Vagrant instance <default-centos-72> destroyed.        
   Finished destroying <default-centos-72> (0m4.94s). 
-----> Kitchen is finished. (0m5.93s)