我正在尝试将chef-client配置为在测试厨房运行中将日志输出到文件,但.kitchen.yml
中的配置似乎没有反映在client.rb
准备中并注入测试节点。
我使用ChefDK 0.3.6,chef_zero配置器和虚拟盒上的流浪汉驱动程序。
我.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"
...
另一个摘录,来自kitchen diagnose
的输出:
...
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_location
条目未包含在client.rb
中,我猜这是在指定路径中未创建日志文件的原因。
您能帮我理解如何通过厨房里的厨师 - 客户端正确启用日志记录吗?
到目前为止使用的参考文献:
client.rb
参考:https://docs.chef.io/config_rb_client.html .kitchen.yml
中的主厨客户特定设置:https://docs.chef.io/config_yml_kitchen.html#chef-client-specific-settings 答案 0 :(得分:2)
根据chef-zero provisionner doc并阅读provisioner code:
它没有考虑属性,它听起来像逻辑,因为它们是现实世界中烹饪书所消耗的属性。
可以做什么(我想从代码中)是沿着chef_omnibus_url(上面的供应商代码第42行)在供应商定义中定义log_file
:
...
provisioner:
name: chef_zero
log_file: "/var/log/chef/chef-client.log"
...
- name: install-only
run_list:
- recipe[my_cookbook::test_recipe]
...
或
...
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"
...
如果您确实使用chef_client食谱来配置节点上的厨师,我会将其包含在运行列表中,以尽可能接近现实。