我正在同时学习 Chef 和 berkshelf.com。Berkshelf 让学习 Chef 变得更加容易,我使用 vagrant VM 来测试我的食谱。
我能够很好地配置我的 Vagrant VM,但是在配置期间没有创建用户(来自刀数据包)和 sysadmin 组。
以下是我采取的步骤:
/opt/chefdk/bin/knife data bag create users
/opt/chefdk/bin/knife data bag create users foo
这是json:
{
"id": "foo",
"groups": [ "sysadmin" ]
}
这是我的 default.rb 配方:
include_recipe "users::sysadmins"
这是我的 Vagrantfile(我删除了我的私人信息并替换为 xxx):
VAGRANTFILE_API_VERSION = '2'
Vagrant.require_version '>= 1.5.0'
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.hostname = 'chef-user-management-berkshelf'
if Vagrant.has_plugin? 'vagrant-omnibus'
config.omnibus.chef_version = 'latest'
end
config.vm.box = 'chef/centos-6.5'
config.vm.network :private_network, type: 'dhcp'
config.berkshelf.enabled = true
config.vm.provision :chef_client do |chef|
chef.validation_client_name = "xxxx"
chef.chef_server_url = "xxx"
chef.validation_key_path = "/my/path/to/the.pem"
chef.json = {
mysql: {
server_root_password: 'rootpass',
server_debian_password: 'debpass',
server_repl_password: 'replpass'
}
}
chef.run_list = [
'recipe[user-management::default]'
]
end
end
然后运行:
vagrant provision
我还验证了我的主厨服务器上的数据包,并将 vagrant 作为:chef_client 运行。运行成功有什么想法我可能会错过吗?
注意:我制作了 Chef用户说明书的包装说明书,以添加我自己的用户逻辑/配置。