【问题标题】:Can't figure out the complete path of JSON environment for Kitchen/Chef无法弄清楚 Kitchen/Chef 的 JSON 环境的完整路径
【发布时间】:2018-10-08 07:09:09
【问题描述】:

我不知道如何设置环境JSON文件的完整路径。

我猜路径是由多个层级组成的,但doc中没有描述

路径现在是environment/dev.json,正确的路径/名称是什么?我在食谱中对哈希的测试失败了

示例 JSON:

{ "foo": { "bar": "base" } }

我需要从我的食谱中测试:

if node[:foo][:bar] == "base"
    puts "ok"
end

对于这个 sn-p,任何人都可以解释这种语法来查询哈希吗?是 Ruby 还是 Chef 特定的语法?为什么不node['foo']['bar']

我的 .kitchen.yml 文件:

---
driver:
  name: vagrant

provisioner:
  name: chef_zero
  environments_path: 'environment'
  client_rb:
    environment: dev

platforms:
  - name: ubuntu-1204

suites:
  - name: default
    run_list:
      - recipe[mysql::default]
    attributes:

【问题讨论】:

    标签: ruby chef-infra test-kitchen


    【解决方案1】:

    要回答您关于 Ruby/Chef 语法的问题,那就是 Ruby 语法。

    Ruby 哈希(在其他语言中也称为哈希表或字典)可以将任何对象作为键,但在 Ruby 世界中,最常见的是使用 symbols

    JSON 对象只能将字符串作为其键,因此当您将 JSON 转换为 Ruby 哈希时,实际上取决于开发人员是选择将键保留为字符串还是将其转换为符号以更符合习惯。

    您可以看到JSON.parse 中有一个名为symbolize_names 的标志,它会自动为您转换它们。

    【讨论】:

      【解决方案2】:

      那不是环境文件,需要看it says in the docs,但默认路径是test/integration/environments/

      【讨论】:

      • 请问如何命名 JSON 文件?
      • 在你的情况下,dev.json
      猜你喜欢
      • 1970-01-01
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-19
      相关资源
      最近更新 更多