接受版本 >= 14 的 Chef Infra 客户端许可协议
Accepting Chef Infra Client license agreement for version >= 14
我正在尝试 bootstrap 使用命令 knife bootstrap <host> --ssh-user '<username>' -i <my-identity>.pem --sudo --use-sudo-password --node-name <node-name> --run-list 'recipe[<cookbook-name>::default]'
使用 chef 的节点
但是,它失败了,因为我不能接受许可
4 -----> Existing Chef installation detected
137.252.24.94 Starting the first Chef Client run...
137.252.24.94 +---------------------------------------------+
137.252.24.94 Chef License Acceptance
137.252.24.94
137.252.24.94 Before you can continue, 2 product licenses
137.252.24.94 must be accepted. View the license at
137.252.24.94 https://www.chef.io/end-user-license-agreement/
137.252.24.94
137.252.24.94 Licenses that need accepting:
137.252.24.94 * Chef Infra Client
137.252.24.94 * Chef InSpec
137.252.24.94
137.252.24.94 Do you accept the 2 product licenses (yes/no)?
而且我无法从主机输入答案。在 Chef 14.0 之前,我曾经能够轻松地 运行 chef boostrap
命令。好像他们升级到 Chef 14.0 并且新升级对许可协议有强制性要求。我如何同意从主机到客户机的许可?
基本上,根据我的发现,这个问题可能会在两种不同的情况下发生:
当你运行正在 kitchen converge
时。这可以很容易地通过在 kitchen.yml
as
中添加一段代码来解决
provisioner:
client_rb:
chef_license: accept
当您 运行 设置 knife bootstrap
时,这可能需要一些额外的工作。 page 解释了所有需要做的事情。在 .chef
目录中。
> mkdir bootstrap
> cd bootstrap && touch template.erb
> find /opt/chefdk/embedded/lib/ruby -type f -name chef-full.erb -exec cat {} \; > template.erb
找到说
的那一行
cat > /etc/chef/client.rb <<'EOP
<%= config_content %>
EOP
并将其替换为
cat > /etc/chef/client.rb <<'EOP'
<%= config_content %>
chef_license "accept"
EOP
接下来,运行 命令 knife bootstrap <host> --ssh-user '<username>' -i <my-identity>.pem --sudo --use-sudo-password --node-name <node-name> --boostrap-template "template" --run-list 'recipe[<cookbook-name>::default]'
。这就解决了。
您可以使用下面的行来接受许可。
chef-client --chef-license accept > /dev/null
我正在尝试 bootstrap 使用命令 knife bootstrap <host> --ssh-user '<username>' -i <my-identity>.pem --sudo --use-sudo-password --node-name <node-name> --run-list 'recipe[<cookbook-name>::default]'
但是,它失败了,因为我不能接受许可
4 -----> Existing Chef installation detected
137.252.24.94 Starting the first Chef Client run...
137.252.24.94 +---------------------------------------------+
137.252.24.94 Chef License Acceptance
137.252.24.94
137.252.24.94 Before you can continue, 2 product licenses
137.252.24.94 must be accepted. View the license at
137.252.24.94 https://www.chef.io/end-user-license-agreement/
137.252.24.94
137.252.24.94 Licenses that need accepting:
137.252.24.94 * Chef Infra Client
137.252.24.94 * Chef InSpec
137.252.24.94
137.252.24.94 Do you accept the 2 product licenses (yes/no)?
而且我无法从主机输入答案。在 Chef 14.0 之前,我曾经能够轻松地 运行 chef boostrap
命令。好像他们升级到 Chef 14.0 并且新升级对许可协议有强制性要求。我如何同意从主机到客户机的许可?
基本上,根据我的发现,这个问题可能会在两种不同的情况下发生:
当你运行正在
中添加一段代码来解决kitchen converge
时。这可以很容易地通过在kitchen.yml
asprovisioner: client_rb: chef_license: accept
当您 运行 设置
knife bootstrap
时,这可能需要一些额外的工作。 page 解释了所有需要做的事情。在.chef
目录中。
> mkdir bootstrap
> cd bootstrap && touch template.erb
> find /opt/chefdk/embedded/lib/ruby -type f -name chef-full.erb -exec cat {} \; > template.erb
找到说
的那一行cat > /etc/chef/client.rb <<'EOP
<%= config_content %>
EOP
并将其替换为
cat > /etc/chef/client.rb <<'EOP'
<%= config_content %>
chef_license "accept"
EOP
接下来,运行 命令 knife bootstrap <host> --ssh-user '<username>' -i <my-identity>.pem --sudo --use-sudo-password --node-name <node-name> --boostrap-template "template" --run-list 'recipe[<cookbook-name>::default]'
。这就解决了。
您可以使用下面的行来接受许可。
chef-client --chef-license accept > /dev/null