- 厨师教程
- 厨师 - 主页
- 厨师 - 概述
- 厨师 - 建筑
- Chef - 版本控制系统设置
- 厨师 - 工作站设置
- Chef - 客户端设置
- 厨师 - 测试厨房设置
- 厨师 - 刀具设置
- 厨师 - 独奏设置
- 厨师 - 食谱
- Chef - 食谱依赖项
- 厨师 - 角色
- 厨师 - 环境
- Chef - Chef-Client 作为守护进程
- 厨师 - Chef-Shell
- 厨师 - 测试食谱
- 厨师 - 美食评论家
- 厨师 - ChefSpec
- 使用测试厨房测试食谱
- 厨师 - 节点
- 厨师 - 厨师-客户运行
- 高级厨师
- 动态配置菜谱
- 厨师 - 模板
- Chef - 带有 Chef DSL 的纯 Ruby
- 厨师 - 红宝石宝石与食谱
- 厨师 - 图书馆
- 厨师 - 定义
- Chef - 环境变量
- 厨师 - 数据袋
- Chef - 数据包脚本
- Chef - 跨平台食谱
- 厨师 - 资源
- 轻量级资源提供者
- 厨师 - 蓝图
- Chef - 文件和包
- 厨师 - 社区食谱
- 厨师有用的资源
- 厨师 - 快速指南
- 厨师 - 有用的资源
- 厨师 - 讨论
厨师 - 测试厨房设置
Test Kitchen 是 Chef 的集成测试框架。它允许编写测试配方,一旦使用说明书实例化并聚合虚拟机,测试配方将在虚拟机上运行。测试配方在该虚拟机上运行,可以验证一切是否按预期运行。
ChefSpec仅模拟 Chef 运行。测试厨房启动真实节点并在其上运行 Chef。
步骤 1 - 安装 test kitchen Ruby gem 和 test kitchen vagrant gem 以使 test kitchen 能够使用 vagrant 进行启动测试。
$ gem install kitchen $ gem install kitchen-vagrant
步骤 2 - 设置测试厨房。这可以通过在 Cookbook 目录中创建.kitchen.yml来完成。
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!'} }
在上面的代码中,一部分定义了 vagrant 需要启动虚拟机,并且定义了您希望 Omnibus 在目标节点上安装 Chef。
第二部分定义您要测试食谱的平台。Vagrant 总是会创建和销毁新实例。您不必担心使用 Vagrant 文件启动的 vagrant VM 的副作用。
测试厨房可以被视为一个临时环境,有助于在类似于生产的临时环境中运行和测试食谱。启用测试厨房后,我们可以确保给定的代码片段在实际部署到测试、预生产和生产环境之前正常运行。许多组织在将烹饪书放入实际工作环境之前都会遵循测试厨房的这一特征。
测试厨房工作流程
以下是测试厨房工作流程涉及的步骤。
使用 Chef 创建食谱
使用以下代码创建食谱。
$ 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"
以下是作为上述代码的输出的创建的食谱结构。
测试厨房配置文件
.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:
驱动程序- 它指定管理机器的软件。
Provisioner - 它提供了 Chef 如何运行的规范。我们使用 Chef_zero 是因为它能够模拟本地计算机上的 Chef 服务器环境。这允许使用节点属性和 Chef 服务器规范。
平台- 这指定了目标操作系统。
套件- 它定义了人们想要在虚拟环境上应用的内容。在这里,您定义了多个定义。它是您定义运行列表的位置,它指定要运行的配方以及我们需要运行的顺序。
按顺序运行命令
厨房清单
$ kitchen list Instance Driver Provisioner Verifier Transport Last Action ubuntu-1404 Vagrant ChefZero Busser Ssh <Not Created>
厨房创造
$ 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)
厨房融合
$ 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)
测试设置
Kitchen 登录用于测试测试虚拟机是否已正确配置。
$ 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
最后退出
$ exit Logout Connection to 127.0.0.1 closed.
破坏设置
$ 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)