我正在使用刀独奏在 Linode 配置我的第一台服务器。一切正常,但我刚刚添加了一个步骤,通过该步骤禁用 root 登录以提高安全性。我的理解是,每当我向我的配置添加新项目时,我应该重新运行 chef 以应用它们,而不是手动执行,但是一旦我锁定这是不可能的。
这些(或替代)方法中的哪一个会更好:
- 我可以在脚本开始时解锁 root 访问权限并在最后再次锁定它。
- 我可以将其锁定为第一步,并以另一个用户身份安装所有软件包,包括服务器(在我的情况下为 nginx)。
我正在组合一个结构来运行 Rails 应用程序。应用程序本身在 Heroku 上运行。但是,它向集群发出请求,集群通过 C 中的程序执行调用。
为了能够更快地从崩溃中恢复,我想使用 Chef 创建一个例程。我设法写了一本安装你需要的一切的“食谱”,当我使用 Vagrant 虚拟机时它工作得很好。
但是,当我申请真实服务器时,它失败了。另外我用的是Chef Solo,运行脚本前需要在机器上手动安装一些东西,不太实用。
我不知道在这种情况下我是否应该使用 Chef Server。恐怕这是满足“小”需求的“大”工具。
这个集群只有三台机器组成,这个应该不会增加太多。然而,该应用程序也向另一个稍大的集群(6 台机器)发出请求,尽管安装速度非常快,但也可以使用 Chef 服务器。
应该和 Chef 还是 Chef Solo Server 一起去?有没有关于它的教学指南?开发人员文档非常混乱。
我有一个像下面这样的简单配方,目前我正在使用本地文件来指示命令是否已运行
execute "test" do
command "sh test.sh && touch /opt/myapp/done.log"
only_if {File.exists?("/opt/myapp/done.log")}
end
有更好的方法吗?这是推荐的方式吗?
是否可以从刀命令(ssh)获取属性,
例如
knife ssh ‘role:server’ ‘sudo chef-client’ <-- how to pass attributes to remote?
我正在尝试使用 Chef Solo 和以下食谱安装 Maven 3:
http://community.opscode.com/cookbooks/maven
该说明书默认安装 Maven 2,我第一次运行它时,它按预期安装了 Maven 2。
后来我修改了我的solo.json
文件,看起来像这样:
{
"maven": {
"version": "3"
},
"run_list": [
"recipe[java]",
"recipe[maven]"
]
}
但是 Chef 没有将 Maven 更新到版本 3。我不知道这是因为我错误地指定了 override 属性还是存在其他问题。我用这个作为参考:
http://wiki.opscode.com/display/chef/Chef+Solo#ChefSolo-JSON%2CAttributesandRecipes
谢谢。