标签: knife

如何通过厨师食谱加载JSON属性?

我有一个Web服务器,基本上接受刀ec2 create server命令的输入.

在我的刀具命令中,我传入

-j '{"branch":"clone"}'
Run Code Online (Sandbox Code Playgroud)

从文档中我认为我可以在我正在加载的食谱中执行此操作:

@@branch = node['branch']
...
git clone git@github.com/blah -b #{@@branch}
Run Code Online (Sandbox Code Playgroud)

但是,git克隆失败,因为@@branch没有返回.或至少厨师日志说开始输出结果:

git clone git@github.com/blah -b

~Git error showing options and appropriate input~
Run Code Online (Sandbox Code Playgroud)

如何加载我传递的JSON属性?什么是正确的方法?

编辑:

我手动输入了knife命令,并且JSON属性似乎使用Ruby哈希而不是JSON加载

JSON Attributes: {"branch"=>"Air"}

最后编辑:

我的命令:

sudo knife ec2 server create -x ubuntu -i ~/.ssh/key.pem -I ami-0eca6e67 -d ubuntu-12.04 -j '{ "branch" : "clone" }' -Z us-east-1a -s subnet-6827ec00 -f c1.medium -g sg-bc9d86d0 -r 'role[role]'

答案如下.

attributes chef-infra knife

5
推荐指数
1
解决办法
4129
查看次数

Chef节点 - 检查配方是否会在其上运行,同时查看内部​​角色

我想知道是否将在不同配方内的节点上运行特定配方.我可以使用node.recipe?(recipe_name)方法,但是我的一些收件人是由角色和配方管理的?似乎没有查看角色运行列表.

有没有一种简单的方法可以找出我的recipie [redis]是否会在当前节点上运行?

chef-infra chef-recipe knife

5
推荐指数
1
解决办法
5534
查看次数

使用刀 ssh 时如何跳过无法访问的节点

我正在尝试使用knife ssh以下方式在多个节点上运行 shell 命令:

knife ssh -V "role:web" --ssh-gateway ec2-user@aws_ssh_gateway \
          --ssh-user ubuntu \
          "sudo chef-client"
Run Code Online (Sandbox Code Playgroud)

当我所有角色为“web”的实例都启动时,它工作正常,但是当我只删除一个实例时,此命令会挂起此消息:

WARNING: Failed to connect to  -- Net::SSH::Disconnect: connection closed by remote host
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉刀跳过无法访问的节点并继续那些已启动的节点?

更新:默认情况下,Knife 应该跳过无法访问的节点,但这不会发生。可能的原因是 SSH 网关。调查。

chef-infra knife

5
推荐指数
1
解决办法
1421
查看次数

如何使用Chef设置/更改主机名?

我在运行模式下有几个节点,我必须将主机名设置为这些节点.

有没有Cookbook,因为我们可以设置属性host_name并在各自的节点上运行该配方?

ubuntu chef-infra knife

5
推荐指数
1
解决办法
1万
查看次数

使用刀在食谱中创建新食谱

我使用刀具独奏使用.chef/knife.rb定义的自定义模板创建一个新文件夹和一个带有默认配方的食谱.我的问题是我使用什么命令刀来创建使用该模板而不是使用cp的新配方?

就像是 knife cookbook addrecipe somerecipe

chef-infra knife

5
推荐指数
2
解决办法
6714
查看次数

删除名称中带换行符的客户端

好的,所以这开始是因为我试图让自动缩放的节点自己注册Chef.我的client.rb文件中有以下内容:

node_name "some_prefix-#{`hostname`}"
Run Code Online (Sandbox Code Playgroud)

我们的想法是每个节点都有相同的前缀,但基于主机名的后缀.可悲的是,hostname返回一个带有a的字符串\n.厨师高兴地让我创建这个客户端,但它无法以任何方式实际访问它.

knife client show some_prefix-myHostname
knife client show "some_prefix-myHostname\n"
knife client show "some_prefix-myHostname%0A"
Run Code Online (Sandbox Code Playgroud)

这三个结果都是404

knife client list
Run Code Online (Sandbox Code Playgroud)

会显示客户端,并在其后显示空白换行符.

我修复了我的client.rb模板,但我无法摆脱我用名字中的换行创建的节点.我尝试过使用knife,webui,甚至手动使用irb中的Chef :: REST库,但是所有内容都会产生404.

有任何想法吗?

编辑:我也试过,knife client bulk delete但也失败了.在尝试发送请求之前,REST库似乎清理了url并删除了换行符.

chef-infra knife

5
推荐指数
1
解决办法
246
查看次数

CHEF - 当当前目录在存储库路径之外时尝试使用相对路径 'foo

当我尝试运行knife upload rolesknife upload /roles出现以下错误时

cd ~/my-chef-repo
knife upload roles -n -V
INFO: Using configuration from /Users/sowen/.chef/knife.rb
ERROR: Attempt to use relative path 'roles' when current directory is outside the repository path
Run Code Online (Sandbox Code Playgroud)

我的小刀.rb文件

cookbook_path            "/Users/me/my-chef-repo"
Run Code Online (Sandbox Code Playgroud)

chef-infra knife

5
推荐指数
1
解决办法
8777
查看次数

关闭单个Chef配方或资源的verbose_logging

我有一个配方,将secret_key复制到我的节点.实际上文件内容已登录到我的shell中.我想为这个单一食谱关闭它,因为我不希望将文件内容保存到我的shell历史记录中.我知道可以使用client.rb中的verbose_logging设置完全停用日志记录.

verbose_logging:设置日志级别.选项:true,nil和false.当此设置为false时,将禁止有关正在处理的各个资源的通知(并在以下位置输出:info logging level).当chef-client作为守护进程运行时,将此设置为false会很有用.默认值:nil.

但是,是否可以仅为单个配方停用日志记录?

chef-infra knife chef-solo knife-solo

5
推荐指数
1
解决办法
1369
查看次数

刀具引导错误 - 成功验证但未获得此操作的授权

ERROR: You authenticated successfully to https:<chef_server_url> as <user> but you are not authorized for this action Response: missing create permission

我正在为Windows AWS实例运行一个非常基本的bootstrap命令

knife bootstrap windows winrm ....

目前正在现场运行Chef服务器,此时尚未托管.使用knife尝试创建新组时,我也会得到同样的错误.我通过SSH连接到Chef服务器并在运行时验证了我的用户是否已列出

sudo chef-server-ctl list-server-admins

所以看来我已被授予服务器管理员权限.尝试通过Web UI查看和创建内容时,我也看到了相同的错误.我几乎整天都在试图解决这个问题而没有运气

chef-infra knife

5
推荐指数
1
解决办法
3303
查看次数

如何在厨师服务器上查看食谱?

knife search node '*:*' -a recipes
Run Code Online (Sandbox Code Playgroud)

给我所有的节点和他们的食谱。

knife node show NODE_ID -a recipes
Run Code Online (Sandbox Code Playgroud)

给我一个特定节点使用的食谱NODE_ID

我需要获取这些命令获取的配方的内容。即使是在厨师服务器上查看特定食谱的命令也足够了。

chef-infra chef-recipe knife

5
推荐指数
2
解决办法
2353
查看次数