如果您是 chef is 新手,那么您应该考虑使用一些社区食谱来解决常见问题,例如用户管理。例如,“用户”食谱非常适合管理用户帐户
用户信息在数据包中指定,而不是在属性中。
示例
可以使用 chef 命令生成示例食谱
chef generate cookbook demo
创建一个名为“demo”的食谱,可以按如下方式展开:
├── Berksfile
├── Berksfile.lock
├── .kitchen.yml <-- Test kitchen file
├── metadata.rb
├── README.md
├── recipes
│ └── default.rb <-- Recipe to be tested
└── test
└── integration
├── data_bags <-- Test data
│ └── users
│ ├── user1.json
│ └── user2.json
├── default
│ └── serverspec
│ └── default_spec.rb <-- Test
└── helpers
└── serverspec
└── spec_helper.rb
Test kitchen是chefdk绑定的工具,可以用来测试cookbook逻辑
$ kitchen verify default-ubuntu-1404
-----> Starting Kitchen (v1.4.2)
..
..
..
User "user1"
should exist
should belong to group "admins"
should have uid 2001
should have authorized key "ssh-rsa I AM A DUMMY KEY 1"
User "user2"
should exist
should belong to group "admins"
should have uid 2002
should have authorized key "ssh-rsa I AM A DUMMY KEY 2"
Finished in 0.12919 seconds (files took 0.31869 seconds to load)
8 examples, 0 failures
Finished verifying <default-ubuntu-1404> (0m8.42s).
-----> Kitchen is finished. (0m9.14s)
元数据.rb
“用户”食谱被添加为依赖项
name 'demo'
maintainer 'Mark O''Connor'
maintainer_email 'me@demo.com'
license 'all_rights'
description 'Installs/Configures demo'
long_description 'Installs/Configures demo'
version '0.1.0'
depends "users"
食谱/default.rb
#
# Cookbook Name:: demo
# Recipe:: default
#
# Copyright (c) 2016 The Authors, All Rights Reserved.
users_manage "admins"
test/integration/default/serverspec/default_spec.rb
require 'spec_helper'
describe user('user1') do
it { should exist }
it { should belong_to_group 'admins' }
it { should have_uid 2001 }
it { should have_authorized_key 'ssh-rsa I AM A DUMMY KEY 1' }
end
describe user('user2') do
it { should exist }
it { should belong_to_group 'admins' }
it { should have_uid 2002 }
it { should have_authorized_key 'ssh-rsa I AM A DUMMY KEY 2' }
end
测试/集成/data_bags/users/user1.json
{
"id": "user1",
"ssh_keys": [
"ssh-rsa I AM A DUMMY KEY 1"
],
"groups": [
"admins"
],
"uid": 2001
}
测试/集成/data_bags/users/user2.json
{
"id": "user2",
"ssh_keys": [
"ssh-rsa I AM A DUMMY KEY 2"
],
"groups": [
"admins"
],
"uid": 2002
}