Commit 366093d809b6d45d3639c951fc14b3bdd8020dd8
0 parents
v0.1.0. Initial release of cfe-users cookbook.
Showing
13 changed files
with
580 additions
and
0 deletions
.chef/knife.rb
0 → 100644
.gitignore
0 → 100644
.kitchen.yml
0 → 100644
1 | +--- | |
2 | +driver: | |
3 | + name: ec2 | |
4 | + security_group_ids: ["sg-7f6fda18"] | |
5 | + region: us-west-2 | |
6 | + availability_zone: b | |
7 | + subnet_id: subnet-d530d8b1 | |
8 | + instance_type: t2.micro | |
9 | + associate_public_ip: true | |
10 | + require_chef_omnibus: 12.12.15 | |
11 | + shared_credentials_profile: earth | |
12 | + aws_ssh_key_id: cfe_stg_20160222 | |
13 | + iam_profile_name: CFE_ops-test | |
14 | + | |
15 | +provisioner: | |
16 | + name: chef_zero | |
17 | + | |
18 | +platforms: | |
19 | + - name: ubuntu-14.04 | |
20 | + driver: | |
21 | + image_id: ami-a24598c2 | |
22 | + transport: | |
23 | + username: ubuntu | |
24 | + ssh_key: ~/.ssh/cfe_stg_20160222.pem | |
25 | + | |
26 | +suites: | |
27 | + - name: default | |
28 | + data_bags_path: "data_bags" | |
29 | + run_list: | |
30 | + - recipe[cfe-users::default] | |
31 | + attributes: | ... | ... |
CHANGELOG.md
0 → 100644
Gemfile
0 → 100644
LICENSE
0 → 100644
1 | + Apache License | |
2 | + Version 2.0, January 2004 | |
3 | + http://www.apache.org/licenses/ | |
4 | + | |
5 | + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | |
6 | + | |
7 | + 1. Definitions. | |
8 | + | |
9 | + "License" shall mean the terms and conditions for use, reproduction, | |
10 | + and distribution as defined by Sections 1 through 9 of this document. | |
11 | + | |
12 | + "Licensor" shall mean the copyright owner or entity authorized by | |
13 | + the copyright owner that is granting the License. | |
14 | + | |
15 | + "Legal Entity" shall mean the union of the acting entity and all | |
16 | + other entities that control, are controlled by, or are under common | |
17 | + control with that entity. For the purposes of this definition, | |
18 | + "control" means (i) the power, direct or indirect, to cause the | |
19 | + direction or management of such entity, whether by contract or | |
20 | + otherwise, or (ii) ownership of fifty percent (50%) or more of the | |
21 | + outstanding shares, or (iii) beneficial ownership of such entity. | |
22 | + | |
23 | + "You" (or "Your") shall mean an individual or Legal Entity | |
24 | + exercising permissions granted by this License. | |
25 | + | |
26 | + "Source" form shall mean the preferred form for making modifications, | |
27 | + including but not limited to software source code, documentation | |
28 | + source, and configuration files. | |
29 | + | |
30 | + "Object" form shall mean any form resulting from mechanical | |
31 | + transformation or translation of a Source form, including but | |
32 | + not limited to compiled object code, generated documentation, | |
33 | + and conversions to other media types. | |
34 | + | |
35 | + "Work" shall mean the work of authorship, whether in Source or | |
36 | + Object form, made available under the License, as indicated by a | |
37 | + copyright notice that is included in or attached to the work | |
38 | + (an example is provided in the Appendix below). | |
39 | + | |
40 | + "Derivative Works" shall mean any work, whether in Source or Object | |
41 | + form, that is based on (or derived from) the Work and for which the | |
42 | + editorial revisions, annotations, elaborations, or other modifications | |
43 | + represent, as a whole, an original work of authorship. For the purposes | |
44 | + of this License, Derivative Works shall not include works that remain | |
45 | + separable from, or merely link (or bind by name) to the interfaces of, | |
46 | + the Work and Derivative Works thereof. | |
47 | + | |
48 | + "Contribution" shall mean any work of authorship, including | |
49 | + the original version of the Work and any modifications or additions | |
50 | + to that Work or Derivative Works thereof, that is intentionally | |
51 | + submitted to Licensor for inclusion in the Work by the copyright owner | |
52 | + or by an individual or Legal Entity authorized to submit on behalf of | |
53 | + the copyright owner. For the purposes of this definition, "submitted" | |
54 | + means any form of electronic, verbal, or written communication sent | |
55 | + to the Licensor or its representatives, including but not limited to | |
56 | + communication on electronic mailing lists, source code control systems, | |
57 | + and issue tracking systems that are managed by, or on behalf of, the | |
58 | + Licensor for the purpose of discussing and improving the Work, but | |
59 | + excluding communication that is conspicuously marked or otherwise | |
60 | + designated in writing by the copyright owner as "Not a Contribution." | |
61 | + | |
62 | + "Contributor" shall mean Licensor and any individual or Legal Entity | |
63 | + on behalf of whom a Contribution has been received by Licensor and | |
64 | + subsequently incorporated within the Work. | |
65 | + | |
66 | + 2. Grant of Copyright License. Subject to the terms and conditions of | |
67 | + this License, each Contributor hereby grants to You a perpetual, | |
68 | + worldwide, non-exclusive, no-charge, royalty-free, irrevocable | |
69 | + copyright license to reproduce, prepare Derivative Works of, | |
70 | + publicly display, publicly perform, sublicense, and distribute the | |
71 | + Work and such Derivative Works in Source or Object form. | |
72 | + | |
73 | + 3. Grant of Patent License. Subject to the terms and conditions of | |
74 | + this License, each Contributor hereby grants to You a perpetual, | |
75 | + worldwide, non-exclusive, no-charge, royalty-free, irrevocable | |
76 | + (except as stated in this section) patent license to make, have made, | |
77 | + use, offer to sell, sell, import, and otherwise transfer the Work, | |
78 | + where such license applies only to those patent claims licensable | |
79 | + by such Contributor that are necessarily infringed by their | |
80 | + Contribution(s) alone or by combination of their Contribution(s) | |
81 | + with the Work to which such Contribution(s) was submitted. If You | |
82 | + institute patent litigation against any entity (including a | |
83 | + cross-claim or counterclaim in a lawsuit) alleging that the Work | |
84 | + or a Contribution incorporated within the Work constitutes direct | |
85 | + or contributory patent infringement, then any patent licenses | |
86 | + granted to You under this License for that Work shall terminate | |
87 | + as of the date such litigation is filed. | |
88 | + | |
89 | + 4. Redistribution. You may reproduce and distribute copies of the | |
90 | + Work or Derivative Works thereof in any medium, with or without | |
91 | + modifications, and in Source or Object form, provided that You | |
92 | + meet the following conditions: | |
93 | + | |
94 | + (a) You must give any other recipients of the Work or | |
95 | + Derivative Works a copy of this License; and | |
96 | + | |
97 | + (b) You must cause any modified files to carry prominent notices | |
98 | + stating that You changed the files; and | |
99 | + | |
100 | + (c) You must retain, in the Source form of any Derivative Works | |
101 | + that You distribute, all copyright, patent, trademark, and | |
102 | + attribution notices from the Source form of the Work, | |
103 | + excluding those notices that do not pertain to any part of | |
104 | + the Derivative Works; and | |
105 | + | |
106 | + (d) If the Work includes a "NOTICE" text file as part of its | |
107 | + distribution, then any Derivative Works that You distribute must | |
108 | + include a readable copy of the attribution notices contained | |
109 | + within such NOTICE file, excluding those notices that do not | |
110 | + pertain to any part of the Derivative Works, in at least one | |
111 | + of the following places: within a NOTICE text file distributed | |
112 | + as part of the Derivative Works; within the Source form or | |
113 | + documentation, if provided along with the Derivative Works; or, | |
114 | + within a display generated by the Derivative Works, if and | |
115 | + wherever such third-party notices normally appear. The contents | |
116 | + of the NOTICE file are for informational purposes only and | |
117 | + do not modify the License. You may add Your own attribution | |
118 | + notices within Derivative Works that You distribute, alongside | |
119 | + or as an addendum to the NOTICE text from the Work, provided | |
120 | + that such additional attribution notices cannot be construed | |
121 | + as modifying the License. | |
122 | + | |
123 | + You may add Your own copyright statement to Your modifications and | |
124 | + may provide additional or different license terms and conditions | |
125 | + for use, reproduction, or distribution of Your modifications, or | |
126 | + for any such Derivative Works as a whole, provided Your use, | |
127 | + reproduction, and distribution of the Work otherwise complies with | |
128 | + the conditions stated in this License. | |
129 | + | |
130 | + 5. Submission of Contributions. Unless You explicitly state otherwise, | |
131 | + any Contribution intentionally submitted for inclusion in the Work | |
132 | + by You to the Licensor shall be under the terms and conditions of | |
133 | + this License, without any additional terms or conditions. | |
134 | + Notwithstanding the above, nothing herein shall supersede or modify | |
135 | + the terms of any separate license agreement you may have executed | |
136 | + with Licensor regarding such Contributions. | |
137 | + | |
138 | + 6. Trademarks. This License does not grant permission to use the trade | |
139 | + names, trademarks, service marks, or product names of the Licensor, | |
140 | + except as required for reasonable and customary use in describing the | |
141 | + origin of the Work and reproducing the content of the NOTICE file. | |
142 | + | |
143 | + 7. Disclaimer of Warranty. Unless required by applicable law or | |
144 | + agreed to in writing, Licensor provides the Work (and each | |
145 | + Contributor provides its Contributions) on an "AS IS" BASIS, | |
146 | + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | |
147 | + implied, including, without limitation, any warranties or conditions | |
148 | + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | |
149 | + PARTICULAR PURPOSE. You are solely responsible for determining the | |
150 | + appropriateness of using or redistributing the Work and assume any | |
151 | + risks associated with Your exercise of permissions under this License. | |
152 | + | |
153 | + 8. Limitation of Liability. In no event and under no legal theory, | |
154 | + whether in tort (including negligence), contract, or otherwise, | |
155 | + unless required by applicable law (such as deliberate and grossly | |
156 | + negligent acts) or agreed to in writing, shall any Contributor be | |
157 | + liable to You for damages, including any direct, indirect, special, | |
158 | + incidental, or consequential damages of any character arising as a | |
159 | + result of this License or out of the use or inability to use the | |
160 | + Work (including but not limited to damages for loss of goodwill, | |
161 | + work stoppage, computer failure or malfunction, or any and all | |
162 | + other commercial damages or losses), even if such Contributor | |
163 | + has been advised of the possibility of such damages. | |
164 | + | |
165 | + 9. Accepting Warranty or Additional Liability. While redistributing | |
166 | + the Work or Derivative Works thereof, You may choose to offer, | |
167 | + and charge a fee for, acceptance of support, warranty, indemnity, | |
168 | + or other liability obligations and/or rights consistent with this | |
169 | + License. However, in accepting such obligations, You may act only | |
170 | + on Your own behalf and on Your sole responsibility, not on behalf | |
171 | + of any other Contributor, and only if You agree to indemnify, | |
172 | + defend, and hold each Contributor harmless for any liability | |
173 | + incurred by, or claims asserted against, such Contributor by reason | |
174 | + of your accepting any such warranty or additional liability. | |
175 | + | |
176 | + END OF TERMS AND CONDITIONS | |
177 | + | |
178 | + APPENDIX: How to apply the Apache License to your work. | |
179 | + | |
180 | + To apply the Apache License to your work, attach the following | |
181 | + boilerplate notice, with the fields enclosed by brackets "{}" | |
182 | + replaced with your own identifying information. (Don't include | |
183 | + the brackets!) The text should be enclosed in the appropriate | |
184 | + comment syntax for the file format. We also recommend that a | |
185 | + file or class name and description of purpose be included on the | |
186 | + same "printed page" as the copyright notice for easier | |
187 | + identification within third-party archives. | |
188 | + | |
189 | + Copyright 2016 Chromedia Far East, Inc. | |
190 | + | |
191 | + Licensed under the Apache License, Version 2.0 (the "License"); | |
192 | + you may not use this file except in compliance with the License. | |
193 | + You may obtain a copy of the License at | |
194 | + | |
195 | + http://www.apache.org/licenses/LICENSE-2.0 | |
196 | + | |
197 | + Unless required by applicable law or agreed to in writing, software | |
198 | + distributed under the License is distributed on an "AS IS" BASIS, | |
199 | + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
200 | + See the License for the specific language governing permissions and | |
201 | + limitations under the License. | ... | ... |
README.md
0 → 100644
1 | +# cfe-users-cookbook | |
2 | + | |
3 | +Simplifies setting up of Linux users in Chromedia servers. | |
4 | + | |
5 | +## Supported Platforms | |
6 | + | |
7 | +So far, it's just Ubuntu 14.04. | |
8 | + | |
9 | +## Attributes | |
10 | + | |
11 | +<table> | |
12 | + <tr> | |
13 | + <th>Key</th> | |
14 | + <th>Type</th> | |
15 | + <th>Description</th> | |
16 | + <th>Default</th> | |
17 | + </tr> | |
18 | + <tr> | |
19 | + <td><tt>['cfe-users']['group']</tt></td> | |
20 | + <td>String</td> | |
21 | + <td>Name of group for server users.</td> | |
22 | + <td><tt>'devs'</tt></td> | |
23 | + </tr> | |
24 | + <tr> | |
25 | + <td><tt>['cfe-users']['data_bag']</tt></td> | |
26 | + <td>String</td> | |
27 | + <td>Name of data bag containg user items to be created/removed.</td> | |
28 | + <td><tt>'users_devs'</tt></td> | |
29 | + </tr> | |
30 | + <tr> | |
31 | + <td><tt>['cfe-users']['admin_group']</tt></td> | |
32 | + <td>String</td> | |
33 | + <td>Name of group for admin users.</td> | |
34 | + <td><tt>'sysadmins'</tt></td> | |
35 | + </tr> | |
36 | + <tr> | |
37 | + <td><tt>['cfe-users']['admin_data_bag']</tt></td> | |
38 | + <td>String</td> | |
39 | + <td>Name of data bag containing admin user items to be created/removed.</td> | |
40 | + <td><tt>'users_sysadmins'</tt></td> | |
41 | + </tr> | |
42 | + <tr> | |
43 | + <td><tt>['cfe-users']['post_run_reboot']</tt></td> | |
44 | + <td>Boolean</td> | |
45 | + <td>This cookbook should normally request a reboot after the Chef client run. Set to 'false' to disable this behavior.</td> | |
46 | + <td><tt>true</tt></td> | |
47 | + </tr> | |
48 | +</table> | |
49 | + | |
50 | +## Usage | |
51 | + | |
52 | +By default, dev users will be under a group called `devs`, and admins are are called `sysadmins`. | |
53 | + | |
54 | +Simply create a data bag called `users_devs` in your cookbook. Every item inside will correspond to a user under the `devs` group. Similarly, create a data bag called `users_sysadmins`, containing items that correspond to admin users. | |
55 | + | |
56 | +Each user data bag item must contain the following attributes (example for Ubuntu 14.04 user): | |
57 | +```json | |
58 | +john.json | |
59 | +{ | |
60 | + "comment": "John Smith", | |
61 | + "shell": "/bin/bash", | |
62 | + "groups": [ | |
63 | + "john", | |
64 | + "devs", | |
65 | + "adm", | |
66 | + "plugdev", | |
67 | + "netdev" | |
68 | + ], | |
69 | + "ssh_keys": "ssh-rsa XXX... john" | |
70 | + "id": "john" | |
71 | +} | |
72 | +``` | |
73 | + | |
74 | +The above json will create the user `john`. If an attribute `"action": "remove"` exists, then the user will be deleted, instead. Please see the example data bag in `data_bags/users\_example/example\_user.json`. | |
75 | + | |
76 | +### cfe-users::default | |
77 | + | |
78 | +Include `cfe-users` in your node's `run_list`: | |
79 | + | |
80 | +```json | |
81 | +{ | |
82 | + "run_list": [ | |
83 | + "recipe[cfe-users::default]" | |
84 | + ] | |
85 | +} | |
86 | +``` | |
87 | + | |
88 | +## License and Authors | |
89 | + | |
90 | +Author:: Earth U. (<sysadmin @ chromedia.com>) | ... | ... |
attributes/default.rb
0 → 100644
1 | +# | |
2 | +# Author:: Earth U (<sysadmin @ chromedia.com>) | |
3 | +# Cookbook Name:: cfe-users | |
4 | +# Attribute:: default | |
5 | +# | |
6 | +# Copyright 2016, Chromedia Far East, Inc. | |
7 | +# | |
8 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
9 | +# you may not use this file except in compliance with the License. | |
10 | +# You may obtain a copy of the License at | |
11 | +# | |
12 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
13 | +# | |
14 | +# Unless required by applicable law or agreed to in writing, software | |
15 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
16 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
17 | +# See the License for the specific language governing permissions and | |
18 | +# limitations under the License. | |
19 | +# | |
20 | + | |
21 | +default['cfe-users']['group'] = 'devs' | |
22 | +default['cfe-users']['gid'] = 4000 | |
23 | +default['cfe-users']['data_bag'] = 'users_devs' | |
24 | + | |
25 | +default['cfe-users']['admin_group'] = 'sysadmins' | |
26 | +default['cfe-users']['admin_gid'] = 4001 | |
27 | +default['cfe-users']['admin_data_bag'] = 'users_sysadmins' | |
28 | + | |
29 | +default['cfe-users']['post_run_reboot'] = true | |
30 | + | |
31 | +default['authorization']['sudo']['groups'] = [ | |
32 | + node['cfe-users']['group'], | |
33 | + node['cfe-users']['admin_group'] | |
34 | +] | |
35 | + | |
36 | +# Cookbook sudo constants. Do not modify. | |
37 | + | |
38 | +default['authorization']['sudo']['passwordless'] = true | |
39 | +default['authorization']['sudo']['include_sudoers_d'] = false | |
40 | + | |
41 | +if node['platform'] == 'ubuntu' && node['platform_version'].to_f == 14.04 | |
42 | + default['authorization']['sudo']['sudoers_defaults'] = [ | |
43 | + 'env_reset', | |
44 | + 'mail_badpass', | |
45 | + 'secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"' | |
46 | + ] | |
47 | +end | ... | ... |
chefignore
0 → 100644
1 | +# Put files/directories that should be ignored in this file when uploading | |
2 | +# or sharing to the community site. | |
3 | +# Lines that start with '# ' are comments. | |
4 | + | |
5 | +# OS generated files # | |
6 | +###################### | |
7 | +.DS_Store | |
8 | +Icon? | |
9 | +nohup.out | |
10 | +ehthumbs.db | |
11 | +Thumbs.db | |
12 | + | |
13 | +# SASS # | |
14 | +######## | |
15 | +.sass-cache | |
16 | + | |
17 | +# EDITORS # | |
18 | +########### | |
19 | +\#* | |
20 | +.#* | |
21 | +*~ | |
22 | +*.sw[a-z] | |
23 | +*.bak | |
24 | +REVISION | |
25 | +TAGS* | |
26 | +tmtags | |
27 | +*_flymake.* | |
28 | +*_flymake | |
29 | +*.tmproj | |
30 | +.project | |
31 | +.settings | |
32 | +mkmf.log | |
33 | + | |
34 | +## COMPILED ## | |
35 | +############## | |
36 | +a.out | |
37 | +*.o | |
38 | +*.pyc | |
39 | +*.so | |
40 | +*.com | |
41 | +*.class | |
42 | +*.dll | |
43 | +*.exe | |
44 | +*/rdoc/ | |
45 | + | |
46 | +# Testing # | |
47 | +########### | |
48 | +.watchr | |
49 | +.rspec | |
50 | +spec/* | |
51 | +spec/fixtures/* | |
52 | +test/* | |
53 | +features/* | |
54 | +Guardfile | |
55 | +Procfile | |
56 | + | |
57 | +# SCM # | |
58 | +####### | |
59 | +.git | |
60 | +*/.git | |
61 | +.gitignore | |
62 | +.gitmodules | |
63 | +.gitconfig | |
64 | +.gitattributes | |
65 | +.svn | |
66 | +*/.bzr/* | |
67 | +*/.hg/* | |
68 | +*/.svn/* | |
69 | + | |
70 | +# Berkshelf # | |
71 | +############# | |
72 | +cookbooks/* | |
73 | +tmp | |
74 | + | |
75 | +# Cookbooks # | |
76 | +############# | |
77 | +CONTRIBUTING | |
78 | +CHANGELOG* | |
79 | + | |
80 | +# Strainer # | |
81 | +############ | |
82 | +Colanderfile | |
83 | +Strainerfile | |
84 | +.colander | |
85 | +.strainer | |
86 | + | |
87 | +# Vagrant # | |
88 | +########### | |
89 | +.vagrant | |
90 | +Vagrantfile | |
91 | + | |
92 | +# Travis # | |
93 | +########## | |
94 | +.travis.yml | ... | ... |
data_bags/users_example/example_user.json
0 → 100644
1 | +{ | |
2 | + "comment": "Real Name of User", | |
3 | + "shell": "/bin/bash", | |
4 | + "groups": [ | |
5 | + // Always include user's default group | |
6 | + "example_user", | |
7 | + // Always include either the group node['cfe-users']['group'] | |
8 | + // or node['cfe-users']['admin_group'] | |
9 | + "devs", | |
10 | + // Include these three groups in Ubuntu 14.04: | |
11 | + "adm", | |
12 | + "plugdev", | |
13 | + "netdev" | |
14 | + ], | |
15 | + "ssh_keys": "ssh-rsa xxxx cfe_xxx", | |
16 | + | |
17 | + // If "action" is set to "remove", the user will be deleted. If no "action" is set, the default action is to create the user. | |
18 | + //"action": "remove", | |
19 | + | |
20 | + "id": "example_user" | |
21 | +} | ... | ... |
metadata.rb
0 → 100644
1 | +name 'cfe-users' | |
2 | +maintainer 'Chromedia Far East, Inc.' | |
3 | +maintainer_email 'sysadmin@chromedia.com' | |
4 | +license 'Apache License' | |
5 | +description 'Simplifies setting up of users in Linux servers.' | |
6 | +long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) | |
7 | +version '0.1.0' | |
8 | + | |
9 | +depends 'users', '~> 4.0.1' | |
10 | +depends 'sudo', '~> 3.1.0' | |
11 | + | |
12 | +supports 'ubuntu', '>= 14.04' | ... | ... |
recipes/default.rb
0 → 100644
1 | +# | |
2 | +# Author:: Earth U (<sysadmin @ chromedia.com>) | |
3 | +# Cookbook Name:: cfe-users | |
4 | +# Recipes:: default | |
5 | +# | |
6 | +# Copyright 2016, Chromedia Far East, Inc. | |
7 | +# | |
8 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
9 | +# you may not use this file except in compliance with the License. | |
10 | +# You may obtain a copy of the License at | |
11 | +# | |
12 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
13 | +# | |
14 | +# Unless required by applicable law or agreed to in writing, software | |
15 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
16 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
17 | +# See the License for the specific language governing permissions and | |
18 | +# limitations under the License. | |
19 | +# | |
20 | + | |
21 | +users_manage node['cfe-users']['group'] do | |
22 | + group_id node['cfe-users']['gid'] | |
23 | + data_bag node['cfe-users']['data_bag'] | |
24 | + action [:remove, :create] | |
25 | +end | |
26 | + | |
27 | +users_manage node['cfe-users']['admin_group'] do | |
28 | + group_id node['cfe-users']['admin_gid'] | |
29 | + data_bag node['cfe-users']['admin_data_bag'] | |
30 | + action [:remove, :create] | |
31 | + if node['cfe-users']['post_run_reboot'] | |
32 | + notifies :request_reboot, 'reboot[reboot_after_admin_users]' | |
33 | + end | |
34 | +end | |
35 | + | |
36 | +include_recipe 'sudo' | |
37 | + | |
38 | +# We need to reboot in order to refresh temp files and be able to | |
39 | +# run Chef again in the future as the new admin user. | |
40 | +reboot 'reboot_after_admin_users' do | |
41 | + action :nothing | |
42 | + reason 'Reboot after setting up admin users' | |
43 | +end | ... | ... |