Chef infra 如何将chef客户端日志输出捕获到厨房运行中的文件?

Chef infra 如何将chef客户端日志输出捕获到厨房运行中的文件?,chef-infra,test-kitchen,Chef Infra,Test Kitchen,我试图将chef client配置为在测试厨房运行时将日志输出到文件,但我在.kitchen.yml中的配置似乎没有反映在准备好并注入测试节点的client.rb中 我正在使用ChefDK 0.3.6,chef_zero供应器和virtualbox上的流浪司机 我的.kitchen.yml文件摘录: ... provisioner: name: chef_zero ... - name: install-only run_list: - recipe[my_cookbook:

我试图将chef client配置为在测试厨房运行时将日志输出到文件,但我在
.kitchen.yml
中的配置似乎没有反映在准备好并注入测试节点的
client.rb中

我正在使用ChefDK 0.3.6,chef_zero供应器和virtualbox上的流浪司机

我的
.kitchen.yml
文件摘录:

...
provisioner:
  name: chef_zero
...
- name: install-only
    run_list:
    - recipe[my_cookbook::test_recipe]
    attributes:
      chef_client:
        config:
          log_location: "/var/log/chef/chef-client.log"
...
另一个摘录,来自厨房诊断的输出:

...
provisioner:
  attributes:
    chef_client:
      config:
        log_location: "/var/log/chef/chef-client.log"
  chef_client_path: "/opt/chef/bin/chef-client"
  chef_omnibus_install_options: 
  chef_omnibus_root: "/opt/chef"
...
最后,测试节点上
/tmp/kitchen/client.rb
的内容:

[root@TRSTWPRTSTAPV99 log]# cat /tmp/kitchen/client.rb 
node_name "install-only-rhel65-x86-64"
checksum_path "/tmp/kitchen/checksums"
file_cache_path "/tmp/kitchen/cache"
file_backup_path "/tmp/kitchen/backup"
cookbook_path ["/tmp/kitchen/cookbooks", "/tmp/kitchen/site-cookbooks"]
data_bag_path "/tmp/kitchen/data_bags"
environment_path "/tmp/kitchen/environments"
node_path "/tmp/kitchen/nodes"
role_path "/tmp/kitchen/roles"
client_path "/tmp/kitchen/clients"
user_path "/tmp/kitchen/users"
validation_key "/tmp/kitchen/validation.pem"
client_key "/tmp/kitchen/client.pem"
chef_server_url "http://127.0.0.1:8889"
encrypted_data_bag_secret "/tmp/kitchen/encrypted_data_bag_secret"
正如您所看到的,预期的
log\u位置
条目未包含在
client.rb
中,我想这就是为什么没有在指定路径中创建日志文件的原因

您能帮助我理解如何正确地通过厨房的厨师客户端登录到文件吗

迄今为止使用的参考资料:

  • client.rb
    参考:
  • .kitchen.yml
    中的厨师客户端特定设置:
  • 根据和阅读:

    它没有考虑属性,听起来很有逻辑,因为它们是真实世界中烹饪书要使用的属性

    可以做的事情(我认为从代码中)是沿着chef_omnibus_url在provisioner定义中定义一个
    log_文件
    (上面provisioner代码的第42行):

    you.kitche.yml可以成为:

    ...
    provisioner:
      name: chef_zero
      log_file: "/var/log/chef/chef-client.log"
    ...
    - name: install-only
        run_list:
        - recipe[my_cookbook::test_recipe]
    ...
    


    如果您确实使用chef_client cookbook在节点上配置chef,我会将其包含在运行列表中,以尽可能接近实际情况。

    您的运行列表中是否包含chef_client cookbook?IIRC提到的属性供
    chef_client::config
    配方使用。(我可能错了,因为我没有使用测试厨房)@Tensibai我没有在我的运行列表中包括
    chef_client::config
    ,因为供应器(chef_zero)有自己的功能。我正试图为配置日志记录的provisioner中嵌入的chef客户端。在provisioner下添加
    log\u文件
    属性对我有效,谢谢!
    ...
    provisioner:
      name: chef_zero
    ...
    - name: install-only
        run_list:
        - recipe[chef-client::config]
        - recipe[my_cookbook::test_recipe]
    attributes:
      chef_client:
        config:
          log_location: "/var/log/chef/chef-client.log"
    ...