我有一个Vagrant VM标准问题lucid32.box正在运行.在此设置LAMP的完整说明是什么?
我看过刀(厨师的一部分)并试图:
vagrant@lucid32:~$ knife cookbook site install apache2
Run Code Online (Sandbox Code Playgroud)
但得到了
WARNING: No knife configuration file found
Run Code Online (Sandbox Code Playgroud)
如何设置刀具配置文件以及我应该在其中包含哪些内容?
我一直在网上搜索很多答案,但是部分解决方案不能解释他们的起点/先决条件.
更新
我的目标是自己回答这个问题,因为其他人似乎并不想这样做.这是我目前的理解 - 我的目标是稍后用红色解决我的未知/问题.

更新:我认为这个问题一般与solr语法有关,而不是特别是Chef.因此,当我遇到与Chef合作时,我认为任何与Solr一起工作的人也会遇到这个......
我正在开发一个与Chef服务器的搜索API进行通信的应用程序,以查找特定节点.
基于此http://docs.opscode.com/essentials_search.html#special-characters,似乎需要转义许多特殊字符.
注意:我只关注精确匹配模式,而不是通配符.我意识到其中一些字符是通配符的原因.
这是撰写本文时的列表,从上面的URL复制:
+ - && | | ! ( ) { } [ ] ^ " ~ * ? : \
Run Code Online (Sandbox Code Playgroud)
knife search但是,当我尝试使用这些字符的各种命令时,我会看到不一致的行为.
对于以下示例,我设置了一个标记有的节点 +&|!(){}[]^\"~*?:\\"
这些命令是从bash shell中的Linux机器上运行的:
$ knife search node 'tags:+&|!(){}[]^"~*?:\'
ERROR: knife search failed: invalid search query: 'tags:+&|!(){}[]^"~*?:\'
Run Code Online (Sandbox Code Playgroud)
这表现得如预期,因为没有任何东西被逃脱.现在,我\按照文档建议的方式逃避一切:
$ knife search node 'tags:\+\&\|\!\(\)\{\}\[\]\^\"\~\*\?\:\\'
ERROR: knife search failed: invalid search query: 'tags:\+\&\|\!\(\)\{\}\[\]\^\"\~\*\?\:\\'
Run Code Online (Sandbox Code Playgroud)
奇怪.
任何人都可以对此有所了解,也许可以建议一个能够匹配该标签的查询?
显然,任何人都不可能拥有包含所有这些特殊字符的属性,但我想更好地理解如何转义特殊字符.
谢谢!
虽然我写了相当数量的厨师,但我对AWS/VPC和管理网络流量(尤其是堡垒主机)都很陌生.
使用刀ec2插件,我希望能够从我的开发人员工作站动态创建和引导VM.VM应该能够存在于我的VPC的公共或私有子网中.我想在不使用弹性IP的情况下完成所有这些工作.我也希望我的堡垒主机可以放手(即我希望避免在我的堡垒主机上创建明确的每个VM侦听隧道)
我已成功使用刀ec2插件在传统EC2模型中创建VM(例如,在我的VPC之外).我现在正在尝试在我的VPC中创建一个实例.在knife命令行中,我指定了一个网关,安全组,子网等.虚拟机被创建,但是之后刀无法ssh到它.
这是我的刀命令行:
knife ec2 server create \
--flavor t1.micro \
--identity-file <ssh_private_key> \
--image ami-3fec7956 \
--security-group-ids sg-9721e1f8 \
--subnet subnet-e4764d88 \
--ssh-user ubuntu \
--server-connect-attribute private_ip_address \
--ssh-port 22 \
--ssh-gateway <gateway_public_dns_hostname (route 53)> \
--tags isVPC=true,os=ubuntu-12.04,subnet_type=public-build-1c \
--node-name <VM_NAME>
Run Code Online (Sandbox Code Playgroud)
我怀疑我的问题与我的堡垒主机的配置有关.经过一天的谷歌搜索,我无法找到有效的配置.我可以ssh到堡垒主机,从那里我可以ssh到新创建的VM.我无法使用gateway参数成功复制此刀.
我玩过/ etc/ssh/ssh_config.今天它是如何存在的:
ForwardAgent yes
#ForwardX11 no
#ForwardX11Trusted yes
#RhostsRSAAuthentication no
#RSAAuthentication yes
#PasswordAuthentication no
#HostbasedAuthentication yes
#GSSAPIAuthentication no
#GSSAPIDelegateCredentials no
#GSSAPIKeyExchange no
#GSSAPITrustDNS no
#BatchMode no
CheckHostIP no
#AddressFamily any
#ConnectTimeout 0
StrictHostKeyChecking no
IdentityFile ~/.ssh/identity …Run Code Online (Sandbox Code Playgroud) 配置文件写入/ home/ubuntu/sudo /home/ubuntu/chef-repo/.chef/knife.rb
ubuntu@mychefclient:~$ knife client list
WARNING: No knife configuration file found
ERROR: Your private key could not be loaded from /etc/chef/client.pem
Check your configuration file and ensure that your private key is readable
Run Code Online (Sandbox Code Playgroud) 使用案例: DevOps团队不久前推出了一个节点,我的团队想知道run_list中使用的一个/几个cookbook的版本是什么.我们的DevOps团队正在进行消防,因此我们希望找到一种自给自足的方法.
命令已尝试:
knife cookbook show COOKBOOK提供所有可能的版本,但不指定正在使用的版本.
knife node show NODE 显示所有烹饪书,但没有附加版本信息.
问:是否有一个命令(类似的东西来knife search,ohai)查询厨师服务器部署在节点上的版本?
我正在尝试理解Chef客户端和验证器的概念,以及它们与引导过程的关系.
根据这篇文章,chef-client将使用/etc/chef/validation.pem私钥对初始运行进行身份验证,因为/etc/chef/client.pem它还不存在.这个初始运行将以某种方式产生,client.pem然后用于所有后续客户端请求.
我的问题:
/etc/chef/validation.pem文件放在chef-client节点上?引导程序?有人可以提供一个刀具命令的例子来做到这一点吗?/etc/chef/client.pem文件.我遵循了OpsCode 快速入门指南,事情进展顺利,但现在我遇到了试验角色的问题.我在我的仓库中有一个"起始"角色,由OpsCode提供.当我按照第一份官方文档,我可以找到并从我的厨师回购顶部运行以下内容:
knife upload roles
Run Code Online (Sandbox Code Playgroud)
它只是返回而没有任何反应.我的厨师服务器上没有任何角色(新的或更新的).下面这行做工作,为创建和更新:
knife role from file .\roles\starter.rb
Run Code Online (Sandbox Code Playgroud)
但我发现它过于繁琐,我更喜欢把我的整个回购推送到服务器(或至少所有角色)的东西,让我更自信一切都是最新的.
我不知道我的安排有什么问题:
siegfried@ubuntu:~/chef-repo$ knife ssh -a ipaddress 'name:chefnode' 'uptime'
WARNING: Failed to connect to -- Net::SSH::AuthenticationFailed: Authentication failed for user siegfried@192.168.1.73@192.168.1.73
failed for user siegfried@192.168.1.73@192.168.1.73
Run Code Online (Sandbox Code Playgroud)
它有两倍@.我完全不知道如何解决它.
我试图使用以下命令从chef-repo目录中创建一个Chef数据包:
knife data bag create users deployer
Run Code Online (Sandbox Code Playgroud)
我收到了回复:
Created data_bag[users]
Created data_bag_item[deployer]
Run Code Online (Sandbox Code Playgroud)
但我无法找到数据包用户及其数据包项目.它不在data_bags文件夹中或我可以看到的任何其他位置.如果我做了
knife data bag show users
Run Code Online (Sandbox Code Playgroud)
它会显示数据包项目名称.所以它必须保存在某个地方.文档告诉我数据包应该在chef-repo - > data_bags - > users文件夹中.但我的data_bags文件夹似乎是空的.那么我刚刚创建的数据包在哪里?
假设我想使用社区食谱(即http://community.opscode.com/cookbooks/gerrit).所以我将使用'knife cookbook site download'下载并上传到我当地的厨师服务器.我需要为每个直接和瞬态依赖重复此步骤.
是否有单个命令或工具来解析/下载食谱的所有直接和瞬态依赖性?
knife ×10
chef-infra ×9
cookbook ×2
amazon-ec2 ×1
amazon-vpc ×1
chef-recipe ×1
databags ×1
installation ×1
lamp ×1
lucene ×1
solr ×1
ssh ×1
ubuntu ×1
vagrant ×1
windows-7 ×1