【问题标题】:Chef environment concepts厨师环境概念
【发布时间】:2023-10-20 15:21:01
【问题描述】:

我需要一些关于两个概念的说明:rolesenvironments。我知道它们代表什么,但我不太明白:

  • 我应该在哪里设置它们?在我的工作站上,然后我需要上传它们?或者我必须在我的主厨服务器上定义它们?
  • 我的recipes 文件夹中有几个食谱。我应该在哪里定义角色?

编辑

目前,我正在使用这个文件夹结构:

├───.delivery
│   └───build_cookbook
│       ├───data_bags
│       │   └───keys
│       ├───recipes
│       ├───secrets
│       └───test
│           └───...
├───.kitchen
│   ├───kitchen-vagrant
│   │   ├───kitchen-development-default-centos-72
│   │   │   └───...
│   │   └───kitchen-development-default-ubuntu-1604
│   │       └───...
│   └───logs
├───files
│   ├───elasticsearch
│   │   └───scripts
│   └───mongo
├───recipes
├───spec
│   └───unit
│       └───recipes
└───test
    ├───integration
    │   └───data_bags
    │       └───aws
    └───smoke
        └───default

我正在使用berkshelf 来管理包食谱依赖项并将我的“食谱”或“食谱”上传到我的厨师服务器。

为了使用环境、角色我应该改变什么...

【问题讨论】:

    标签: chef-infra


    【解决方案1】:

    角色和环境分别存储在rolesenvironments 目录中。

    基础架构上的所有代码和 json 数据都应存储在 chef-repo 中。如果您在工作站上安装了 chef-dk (the Chef Development Kit) - 我强烈建议您这样做 - 您可以使用 chef generate repo 命令生成这样的 chef-repo。这样一个 repo 的结构看起来像这样,即使不使用chef generateREADME 文件是可选的 :)),您也应该遵循它:

    test
    ├── chefignore
    ├── cookbooks
    │   ├── example
    │   │   ├── attributes
    │   │   │   └── default.rb
    │   │   ├── metadata.rb
    │   │   ├── README.md
    │   │   └── recipes
    │   │       └── default.rb
    │   └── README.md
    ├── data_bags
    │   ├── example
    │   │   └── example_item.json
    │   └── README.md
    ├── environments
    │   ├── example.json
    │   └── README.md
    ├── LICENSE
    ├── README.md
    └── roles
        ├── example.json
        └── README.md
    

    然后,您可以使用 knife upload 从这些目录(文件或整个文件夹)上传任何内容。

    【讨论】:

    • 你能看看我编辑过的帖子吗?我正在使用berks。您能否提供一些提示以适应我当前的项目结构?请记住,我需要使用环境和角色。我是否应该将rolesenvironments 文件夹添加到我当前的项目结构中。我应该重新创建一个新的项目结构吗?