如何使用Centos Vagrant来宾(类似Amazon Linux)在Linux(Debian9)上本地调试Opsworks / Chef 11.10.4食谱

时间:2018-09-27 22:08:30

标签: amazon-web-services chef aws-opsworks test-kitchen

我搜索了3周,但没有找到真正的答案。

主要目标是在部署到AWS上的生产之前,节省时间在本地测试dev Chef食谱。

我发现的只是使用Ubuntu和Vagrant的一些提示:

是否有经验丰富的人与Centos来宾一起在本地运行厨房,而Centos来宾带有
JSON(Chef节点配置)作为节点环境(如opsworks中)的Chef Cookbooks库?

我的.kitchen.yml文件和树目录:

---
driver:
  # specifies the software that manages the machine. We're using the Vagrant Test Kitchen driver
  name: vagrant

provisioner:
  #  specifies how to run Chef. We use chef_zero because it enables you to mimic a Chef server environment on your local machine. This allows us to work with node attributes and other Chef server feature
  name: chef_zero
  environments_path: './env' # JSON file (node config) is not used !:  env/preprod.json
  client_rb:
    environment: preprod

verifier:
  # specifies which application to use when running automated tests. You'll learn more about automated testing in a future module.
  name: inspec

platforms:
  - name: centos-7

suites:
  - name: default
    run_list:
      # list of cookbooks
      - recipe[nginx::default]
    attributes:

没有存储库内容的树,没有所有文件,只有目录名:

(缩小)

├── foobar-cookbooks
│   ├── agent_version
│   ├── apache2
│   │   └── templates
│   │       ├── default
│   ├── foobar
│   │   ├── attributes
│   │   ├── definitions
│   │   ├── recipes
│   │   └── templates
│   │       └── default
│   ├── foobar_app_akeneo
│   │   ├── definitions
│   │   ├── metadata.rb
│   │   └── templates
│   │       └── default
│   ├── foobar_app_drupal
│   │   ├── attributes
│   │   ├── definitions
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   └── templates
│   ├── foobar_app_joomla
│   │   ├── attributes
│   │   ├── definitions
│   │   ├── metadata.rb
│   │   └── recipes
│   ├── Config
│   ├── dependencies
│   │   ├── attributes
│   │   ├── libraries
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   └── specs
│   ├── deploy
│   │   ├── attributes
│   │   ├── definitions
│   │   ├── libraries
│   │   ├── metadata.rb
│   │   ├── specs
│   │   └── templates
│   │       └── default
│   ├── ebs
│   │   ├── attributes
│   │   ├── files
│   │   │   └── default
│   │   ├── libraries
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   ├── specs
│   │   └── templates
│   │       └── default
│   ├── gem_support
│   │   ├── libraries
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   └── specs
│   ├── haproxy
│   │   ├── attributes
│   │   ├── metadata.rb
│   │   ├── README.rdoc
│   │   ├── recipes
│   │   ├── specs
│   │   └── templates
│   │       └── default
│   ├── LICENSE
│   ├── memcached
│   │   ├── attributes
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   ├── specs
│   │   └── templates
│   │       └── default
│   ├── mod_php5_apache2
│   │   ├── attributes
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   ├── specs
│   │   └── templates
│   │       └── default
│   ├── mysql
│   │   ├── attributes
│   │   ├── files
│   │   │   └── default
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   ├── specs
│   │   └── templates
│   │       └── default
│   ├── nginx
│   │   ├── attributes
│   │   ├── definitions
│   │   ├── metadata.rb
│   │   ├── specs
│   │   └── templates
│   │       └── default
│   ├── opsworks_agent_monit
│   │   ├── attributes
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   ├── specs
│   │   └── templates
│   │       ├── default
│   ├── opsworks_aws_flow_ruby
│   │   ├── attributes
│   │   ├── definitions
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   └── templates
│   │       └── default
│   ├── opsworks_berkshelf
│   │   ├── attributes
│   │   ├── libraries
│   │   ├── metadata.rb
│   │   ├── providers
│   │   ├── recipes
│   │   └── resources
│   ├── opsworks_bundler
│   │   ├── attributes
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   └── specs
│   ├── opsworks_cleanup
│   │   ├── attributes
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   └── specs
│   ├── opsworks_commons
│   │   ├── attributes
│   │   ├── definitions
│   │   ├── libraries
│   │   ├── metadata.rb
│   │   ├── providers
│   │   ├── recipes
│   │   └── resources
│   ├── opsworks_custom_cookbooks
│   │   ├── attributes
│   │   ├── libraries
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   └── specs
│   ├── opsworks_ecs
│   │   ├── attributes
│   │   ├── files
│   │   │   └── default
│   │   ├── libraries
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   └── templates
│   │       └── default
│   ├── opsworks_ganglia
│   │   ├── attributes
│   │   ├── files
│   │   │   └── default
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   ├── specs
│   │   └── templates
│   │       └── default
│   ├── opsworks_initial_setup
│   │   ├── attributes
│   │   ├── libraries
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   ├── specs
│   │   └── templates
│   │       └── default
│   ├── opsworks_java
│   │   ├── attributes
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   ├── specs
│   │   └── templates
│   │       ├── amazon
│   │       ├── default
│   ├── opsworks_nodejs
│   │   ├── attributes
│   │   ├── definitions
│   │   ├── libraries
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   ├── specs
│   │   └── templates
│   │       └── default
│   ├── opsworks_rubygems
│   │   ├── attributes
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   └── specs
│   ├── opsworks_shutdown
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   └── specs
│   ├── opsworks_stack_state_sync
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   └── templates
│   │       └── default
│   ├── packages
│   │   ├── attributes
│   │   ├── libraries
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   └── specs
│   ├── passenger_apache2
│   │   ├── attributes
│   │   ├── definitions
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   ├── specs
│   │   └── templates
│   │       └── default
│   ├── php
│   │   ├── attributes
│   │   │   └── default.rb
│   │   ├── recipes
│   │   ├── specs
│   │   └── templates
│   │       └── default
│   ├── Rakefile
│   ├── README.md
│   ├── ruby
│   │   ├── attributes
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   └── specs
│   ├── scm_helper
│   ├── ssh_host_keys
│   ├── ssh_users
│   ├── test_suite
├── attributes
├── Berksfile
├── chefignore
├── definitions
├── env
├── layers.json
├── metadata.rb
├── recipes
├── spec
├── specs
├── test

1 个答案:

答案 0 :(得分:1)

”使用测试厨房来管理测试环境 尽管您可以在生产环境中启动私有代码之前先在其专用服务器上测试Chef代码,但是运行该代码时,Chef将对服务器的配置进行更改。

在开发过程中测试Chef代码的明智方法是建立一个与生产环境非常相似的沙盒环境。这将为您提供一个安全的地方来测试您的厨师食谱。 Chef带有Test Kitchen,它可以帮助您创建用于测试的沙箱环境。 Test Kitchen利用Vagrant和Virtual Box完成工作。

Test Kitchen在Vagrant上运行,您可以在Test Kitchen顶部创建沙箱环境。 Test Kitchen作为Chef开发套件的一部分安装,如果您使用Chef Client,则需要单独安装。

要使用Test Kitchen创建虚拟环境,请使用kitchen create命令:

$ kitchen create default-centos65

此示例显示了如何创建运行CentO的虚拟环境。该命令将下载Vagrant基本框,并配置和启动VM实例。 Test Kitchen将拉出Chef软件可以通过VagrantCloud在Internet上使用的基本框。最后一条命令创建的CentOS实例将设置一个准系统CentOS安装,其中包含足以让Chef运行的内容。

您可以通过以下方式登录到CentOS VM:

$ kitchen login default-centos65
Last login: Fri May 28 10:41:48 2016 
from 10.0.1.1

欢迎使用Packer构建的虚拟机。 在此Test Kitchen支持的沙箱环境中运行所有测试Chef代码。

Test Kitchen对其配置文件使用YAML文件格式。 YAML文件使用两种类型的数据-键值对和列表。”-Alapati,S。(2018年3月)。Modern Linux Administration