我是Chef的新手,我想执行一个脚本来添加系统中的用户。 我有一个名为usersinto的厨师食谱和属性:
node.default["usersinto"]["users"] = [ " user1 user2 user3 .... userN " ]
并在食谱中调用:
bash "launch-add" do
code <<-EOH
sh /home/user/addusers.sh "#{node["usersinto"]["users"]}"
EOH
end
我会尝试很多东西,如果我在属性中使用&#34; [&#34 ;,脚本捕获&#34; [&#34;作为参数$ 1,如果我不使用&#34; []&#34;该脚本仅捕获第一个用户。 我怎么能这样做?
提前致谢:)
答案 0 :(得分:0)
你拥有它的方式,let request = NSMutableURLRequest()
request.HTTPMethod = "GET"
request.URL = coverPhotoUrl // A presigned url to an image on S3
// The operation succeeds if I uncomment the NSURLSession line
// and comment out the AFHTTPSessionManager line.
//NSURLSession.sharedSession().dataTaskWithRequest(request) {
AFHTTPSessionManager().dataTaskWithRequest(request) {
date, response, error in
if let error = error {
Log.error?.message("request failed: \(error.localizedDescription)")
} else {
Log.debug?.message("request succeeded.")
}
}
.resume()
的值是一个包含一个元素(这是一个字符串)的数组。这可能不是你想要的,要么是单个字符串,要么是多个字符串的数组。在任何一种情况下,如您所写,您需要node["usersinto"]["users"]
。
答案 1 :(得分:0)
您的脚本似乎接受一个参数。我无法判断该参数是单个用户还是单个用户串。如果它只接受一个用户,则需要将node["usersinto"]["users"]
属性设为一个数组(在任何情况下,它看起来都应该是一个数组)。
node.default["usersinto"]["users"] = %w{user1 user2 user3}
获得数组后,迭代执行每个用户的bash脚本。
node["usersinto"]["users"].each do |user|
bash "launch-add" do
code <<-EOH
sh /home/user/addusers.sh #{user}
EOH
end
end
如果您的脚本接受多个参数(每个参数是不同的用户)
bash "launch-add" do
code <<-EOH
sh /home/user/addusers.sh #{node['usersinto']['users'].join(' ')}
EOH
end
答案 2 :(得分:0)
如果您是厨师的新手,那么您应该考虑使用一些社区烹饪书来解决用户管理等常见问题。例如&#34;用户&#34; cookbook非常适合管理用户帐户
用户信息在数据包中指定,而不是属性。
可以使用chef命令
生成样本食谱chef generate cookbook demo
创建一个名为&#34; demo&#34;可以扩展如下:
├── 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
测试厨房是与chefdk捆绑在一起的工具,可用于测试食谱逻辑
$ 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)
&#34;用户&#34; cookbook被添加为依赖
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"
#
# Cookbook Name:: demo
# Recipe:: default
#
# Copyright (c) 2016 The Authors, All Rights Reserved.
users_manage "admins"
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
{
"id": "user1",
"ssh_keys": [
"ssh-rsa I AM A DUMMY KEY 1"
],
"groups": [
"admins"
],
"uid": 2001
}
{
"id": "user2",
"ssh_keys": [
"ssh-rsa I AM A DUMMY KEY 2"
],
"groups": [
"admins"
],
"uid": 2002
}