wombat-cli 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +23 -23
  3. data/.travis.yml +27 -27
  4. data/CHANGELOG.md +77 -70
  5. data/DESIGN.md +49 -49
  6. data/Gemfile +5 -5
  7. data/README.md +146 -146
  8. data/Rakefile +26 -26
  9. data/bin/wombat +24 -24
  10. data/generator_files/Vagrantfile +120 -120
  11. data/generator_files/cookbooks/automate/.gitignore +16 -16
  12. data/generator_files/cookbooks/automate/.kitchen.ec2.yml +34 -34
  13. data/generator_files/cookbooks/automate/.kitchen.yml +24 -24
  14. data/generator_files/cookbooks/automate/Berksfile +6 -6
  15. data/generator_files/cookbooks/automate/README.md +4 -4
  16. data/generator_files/cookbooks/automate/chefignore +102 -102
  17. data/generator_files/cookbooks/automate/libraries/_helper.rb +52 -52
  18. data/generator_files/cookbooks/automate/libraries/delivery_api.rb +204 -204
  19. data/generator_files/cookbooks/automate/libraries/delivery_project.rb +31 -31
  20. data/generator_files/cookbooks/automate/libraries/dsl.rb +4 -4
  21. data/generator_files/cookbooks/automate/metadata.rb +11 -11
  22. data/generator_files/cookbooks/automate/recipes/default.rb +112 -112
  23. data/generator_files/cookbooks/automate/recipes/update-users.rb +48 -48
  24. data/generator_files/cookbooks/automate/templates/delivery.erb +6 -6
  25. data/generator_files/cookbooks/automate/test/fixtures/cookbooks/mock_data/files/automate.crt +26 -26
  26. data/generator_files/cookbooks/automate/test/fixtures/cookbooks/mock_data/files/automate.key +27 -27
  27. data/generator_files/cookbooks/automate/test/fixtures/cookbooks/mock_data/files/chef.crt +25 -25
  28. data/generator_files/cookbooks/automate/test/fixtures/cookbooks/mock_data/files/chef.key +27 -27
  29. data/generator_files/cookbooks/automate/test/fixtures/cookbooks/mock_data/files/compliance.crt +26 -26
  30. data/generator_files/cookbooks/automate/test/fixtures/cookbooks/mock_data/files/compliance.key +27 -27
  31. data/generator_files/cookbooks/automate/test/fixtures/cookbooks/mock_data/files/private.pem +27 -27
  32. data/generator_files/cookbooks/automate/test/fixtures/cookbooks/mock_data/files/public.pub +1 -1
  33. data/generator_files/cookbooks/automate/test/fixtures/cookbooks/mock_data/metadata.rb +3 -3
  34. data/generator_files/cookbooks/automate/test/fixtures/cookbooks/mock_data/recipes/default.rb +27 -27
  35. data/generator_files/cookbooks/automate/test/integration/default/automate_spec.rb +56 -56
  36. data/generator_files/cookbooks/build_node/.gitignore +16 -16
  37. data/generator_files/cookbooks/build_node/.kitchen.ec2.yml +37 -37
  38. data/generator_files/cookbooks/build_node/.kitchen.yml +23 -23
  39. data/generator_files/cookbooks/build_node/Berksfile +8 -8
  40. data/generator_files/cookbooks/build_node/README.md +4 -4
  41. data/generator_files/cookbooks/build_node/chefignore +102 -102
  42. data/generator_files/cookbooks/build_node/metadata.rb +12 -12
  43. data/generator_files/cookbooks/build_node/recipes/default.rb +38 -38
  44. data/generator_files/cookbooks/build_node/templates/client.erb +2 -2
  45. data/generator_files/cookbooks/build_node/test/fixtures/cookbooks/mock_data/files/automate.crt +26 -26
  46. data/generator_files/cookbooks/build_node/test/fixtures/cookbooks/mock_data/files/automate.key +27 -27
  47. data/generator_files/cookbooks/build_node/test/fixtures/cookbooks/mock_data/files/chef.crt +25 -25
  48. data/generator_files/cookbooks/build_node/test/fixtures/cookbooks/mock_data/files/chef.key +27 -27
  49. data/generator_files/cookbooks/build_node/test/fixtures/cookbooks/mock_data/files/compliance.crt +26 -26
  50. data/generator_files/cookbooks/build_node/test/fixtures/cookbooks/mock_data/files/compliance.key +27 -27
  51. data/generator_files/cookbooks/build_node/test/fixtures/cookbooks/mock_data/files/private.pem +27 -27
  52. data/generator_files/cookbooks/build_node/test/fixtures/cookbooks/mock_data/files/public.pub +1 -1
  53. data/generator_files/cookbooks/build_node/test/fixtures/cookbooks/mock_data/metadata.rb +2 -2
  54. data/generator_files/cookbooks/build_node/test/fixtures/cookbooks/mock_data/recipes/default.rb +18 -18
  55. data/generator_files/cookbooks/build_node/test/integration/default/build-node_spec.rb +40 -40
  56. data/generator_files/cookbooks/chef_server/.gitignore +16 -16
  57. data/generator_files/cookbooks/chef_server/.kitchen.ec2.yml +34 -34
  58. data/generator_files/cookbooks/chef_server/.kitchen.yml +24 -24
  59. data/generator_files/cookbooks/chef_server/Berksfile +6 -6
  60. data/generator_files/cookbooks/chef_server/README.md +4 -4
  61. data/generator_files/cookbooks/chef_server/chefignore +102 -102
  62. data/generator_files/cookbooks/chef_server/metadata.rb +11 -11
  63. data/generator_files/cookbooks/chef_server/recipes/bootstrap_users.rb +91 -91
  64. data/generator_files/cookbooks/chef_server/recipes/default.rb +113 -113
  65. data/generator_files/cookbooks/chef_server/test/fixtures/cookbooks/mock_data/files/automate.crt +26 -26
  66. data/generator_files/cookbooks/chef_server/test/fixtures/cookbooks/mock_data/files/automate.key +27 -27
  67. data/generator_files/cookbooks/chef_server/test/fixtures/cookbooks/mock_data/files/chef.crt +25 -25
  68. data/generator_files/cookbooks/chef_server/test/fixtures/cookbooks/mock_data/files/chef.key +27 -27
  69. data/generator_files/cookbooks/chef_server/test/fixtures/cookbooks/mock_data/files/compliance.crt +26 -26
  70. data/generator_files/cookbooks/chef_server/test/fixtures/cookbooks/mock_data/files/compliance.key +27 -27
  71. data/generator_files/cookbooks/chef_server/test/fixtures/cookbooks/mock_data/files/private.pem +27 -27
  72. data/generator_files/cookbooks/chef_server/test/fixtures/cookbooks/mock_data/files/public.pub +1 -1
  73. data/generator_files/cookbooks/chef_server/test/fixtures/cookbooks/mock_data/metadata.rb +2 -2
  74. data/generator_files/cookbooks/chef_server/test/fixtures/cookbooks/mock_data/recipes/default.rb +23 -23
  75. data/generator_files/cookbooks/chef_server/test/integration/default/chef_server_spec.rb +50 -50
  76. data/generator_files/cookbooks/compliance/.gitignore +16 -16
  77. data/generator_files/cookbooks/compliance/.kitchen.ec2.yml +34 -34
  78. data/generator_files/cookbooks/compliance/.kitchen.yml +24 -24
  79. data/generator_files/cookbooks/compliance/Berksfile +7 -7
  80. data/generator_files/cookbooks/compliance/README.md +4 -4
  81. data/generator_files/cookbooks/compliance/chefignore +102 -102
  82. data/generator_files/cookbooks/compliance/metadata.rb +11 -11
  83. data/generator_files/cookbooks/compliance/recipes/default.rb +57 -57
  84. data/generator_files/cookbooks/compliance/spec/spec_helper.rb +2 -2
  85. data/generator_files/cookbooks/compliance/spec/unit/recipes/default_spec.rb +20 -20
  86. data/generator_files/cookbooks/compliance/test/fixtures/cookbooks/mock_data/files/automate.crt +26 -26
  87. data/generator_files/cookbooks/compliance/test/fixtures/cookbooks/mock_data/files/automate.key +27 -27
  88. data/generator_files/cookbooks/compliance/test/fixtures/cookbooks/mock_data/files/chef.crt +25 -25
  89. data/generator_files/cookbooks/compliance/test/fixtures/cookbooks/mock_data/files/chef.key +27 -27
  90. data/generator_files/cookbooks/compliance/test/fixtures/cookbooks/mock_data/files/compliance.crt +26 -26
  91. data/generator_files/cookbooks/compliance/test/fixtures/cookbooks/mock_data/files/compliance.key +27 -27
  92. data/generator_files/cookbooks/compliance/test/fixtures/cookbooks/mock_data/files/private.pem +27 -27
  93. data/generator_files/cookbooks/compliance/test/fixtures/cookbooks/mock_data/files/public.pub +1 -1
  94. data/generator_files/cookbooks/compliance/test/fixtures/cookbooks/mock_data/metadata.rb +4 -4
  95. data/generator_files/cookbooks/compliance/test/fixtures/cookbooks/mock_data/recipes/default.rb +21 -21
  96. data/generator_files/cookbooks/compliance/test/integration/default/compliance.rb +28 -28
  97. data/generator_files/cookbooks/infranodes/.gitignore +16 -16
  98. data/generator_files/cookbooks/infranodes/.kitchen.ec2.yml +48 -48
  99. data/generator_files/cookbooks/infranodes/.kitchen.yml +21 -21
  100. data/generator_files/cookbooks/infranodes/Berksfile +6 -6
  101. data/generator_files/cookbooks/infranodes/README.md +4 -4
  102. data/generator_files/cookbooks/infranodes/attributes/default.rb +2 -2
  103. data/generator_files/cookbooks/infranodes/chefignore +102 -102
  104. data/generator_files/cookbooks/infranodes/metadata.rb +13 -13
  105. data/generator_files/cookbooks/infranodes/recipes/default.rb +57 -57
  106. data/generator_files/cookbooks/infranodes/spec/spec_helper.rb +2 -2
  107. data/generator_files/cookbooks/infranodes/spec/unit/recipes/default_spec.rb +20 -20
  108. data/generator_files/cookbooks/infranodes/templates/default/client.rb.erb +5 -5
  109. data/generator_files/cookbooks/infranodes/test/fixtures/cookbooks/mock_data/files/automate.crt +26 -26
  110. data/generator_files/cookbooks/infranodes/test/fixtures/cookbooks/mock_data/files/automate.key +27 -27
  111. data/generator_files/cookbooks/infranodes/test/fixtures/cookbooks/mock_data/files/chef.crt +25 -25
  112. data/generator_files/cookbooks/infranodes/test/fixtures/cookbooks/mock_data/files/chef.key +27 -27
  113. data/generator_files/cookbooks/infranodes/test/fixtures/cookbooks/mock_data/files/compliance.crt +26 -26
  114. data/generator_files/cookbooks/infranodes/test/fixtures/cookbooks/mock_data/files/compliance.key +27 -27
  115. data/generator_files/cookbooks/infranodes/test/fixtures/cookbooks/mock_data/files/private.pem +27 -27
  116. data/generator_files/cookbooks/infranodes/test/fixtures/cookbooks/mock_data/files/public.pub +1 -1
  117. data/generator_files/cookbooks/infranodes/test/fixtures/cookbooks/mock_data/metadata.rb +3 -3
  118. data/generator_files/cookbooks/infranodes/test/fixtures/cookbooks/mock_data/recipes/default.rb +27 -27
  119. data/generator_files/cookbooks/infranodes/test/integration/default/infranodes_spec.rb +22 -22
  120. data/generator_files/cookbooks/infranodes/test/integration/helpers/serverspec/spec_helper.rb +8 -8
  121. data/generator_files/cookbooks/wombat/.gitignore +16 -16
  122. data/generator_files/cookbooks/wombat/.kitchen.yml +43 -43
  123. data/generator_files/cookbooks/wombat/Berksfile +5 -5
  124. data/generator_files/cookbooks/wombat/README.md +4 -4
  125. data/generator_files/cookbooks/wombat/attributes/default.rb +74 -74
  126. data/generator_files/cookbooks/wombat/attributes/packer.rb +18 -18
  127. data/generator_files/cookbooks/wombat/chefignore +102 -102
  128. data/generator_files/cookbooks/wombat/metadata.rb +13 -13
  129. data/generator_files/cookbooks/wombat/recipes/authorized-keys.rb +20 -20
  130. data/generator_files/cookbooks/wombat/recipes/default.rb +111 -111
  131. data/generator_files/cookbooks/wombat/recipes/etc-hosts.rb +51 -51
  132. data/generator_files/cookbooks/workstation/.gitignore +16 -16
  133. data/generator_files/cookbooks/workstation/.kitchen.ec2.yml +30 -30
  134. data/generator_files/cookbooks/workstation/.kitchen.yml +22 -22
  135. data/generator_files/cookbooks/workstation/Berksfile +7 -7
  136. data/generator_files/cookbooks/workstation/README.md +3 -3
  137. data/generator_files/cookbooks/workstation/chefignore +102 -102
  138. data/generator_files/cookbooks/workstation/files/atom.apm.list +7 -7
  139. data/generator_files/cookbooks/workstation/files/atom.config.cson +3 -3
  140. data/generator_files/cookbooks/workstation/metadata.rb +14 -14
  141. data/generator_files/cookbooks/workstation/recipes/browser.rb +59 -59
  142. data/generator_files/cookbooks/workstation/recipes/certs-keys.rb +45 -45
  143. data/generator_files/cookbooks/workstation/recipes/chef.rb +29 -29
  144. data/generator_files/cookbooks/workstation/recipes/default.rb +20 -20
  145. data/generator_files/cookbooks/workstation/recipes/dotnet.rb +17 -17
  146. data/generator_files/cookbooks/workstation/recipes/editor.rb +19 -19
  147. data/generator_files/cookbooks/workstation/recipes/profile.rb +42 -42
  148. data/generator_files/cookbooks/workstation/recipes/terminal.rb +13 -13
  149. data/generator_files/cookbooks/workstation/templates/default/bookmarks.html.erb +23 -23
  150. data/generator_files/cookbooks/workstation/templates/default/data_collector.rb.erb +2 -2
  151. data/generator_files/cookbooks/workstation/templates/default/ise_profile.ps1.erb +11 -11
  152. data/generator_files/cookbooks/workstation/templates/default/knife.rb.erb +10 -10
  153. data/generator_files/cookbooks/workstation/templates/default/master_preferences.json.erb +28 -28
  154. data/generator_files/cookbooks/workstation/templates/default/ssh_config.erb +16 -16
  155. data/generator_files/cookbooks/workstation/test/fixtures/cookbooks/mock_data/files/automate.crt +26 -26
  156. data/generator_files/cookbooks/workstation/test/fixtures/cookbooks/mock_data/files/automate.key +27 -27
  157. data/generator_files/cookbooks/workstation/test/fixtures/cookbooks/mock_data/files/chef.crt +26 -26
  158. data/generator_files/cookbooks/workstation/test/fixtures/cookbooks/mock_data/files/chef.key +27 -27
  159. data/generator_files/cookbooks/workstation/test/fixtures/cookbooks/mock_data/files/compliance.crt +26 -26
  160. data/generator_files/cookbooks/workstation/test/fixtures/cookbooks/mock_data/files/compliance.key +27 -27
  161. data/generator_files/cookbooks/workstation/test/fixtures/cookbooks/mock_data/files/private.pem +27 -27
  162. data/generator_files/cookbooks/workstation/test/fixtures/cookbooks/mock_data/files/public.pub +1 -1
  163. data/generator_files/cookbooks/workstation/test/fixtures/cookbooks/mock_data/metadata.rb +2 -2
  164. data/generator_files/cookbooks/workstation/test/fixtures/cookbooks/mock_data/recipes/default.rb +21 -21
  165. data/generator_files/cookbooks/workstation/test/integration/default/workstation_spec.rb +37 -37
  166. data/generator_files/packer/automate.json +131 -131
  167. data/generator_files/packer/build-node.json +137 -137
  168. data/generator_files/packer/chef-server.json +132 -132
  169. data/generator_files/packer/compliance.json +128 -128
  170. data/generator_files/packer/infranodes-windows.json +138 -138
  171. data/generator_files/packer/infranodes.json +129 -129
  172. data/generator_files/packer/workstation.json +136 -136
  173. data/generator_files/templates/arm.json.erb +575 -575
  174. data/generator_files/templates/arm.tidy.json.erb +31 -31
  175. data/generator_files/templates/bootstrap-aws.erb +36 -36
  176. data/generator_files/templates/cfn.json.erb +674 -674
  177. data/generator_files/wombat.yml +71 -71
  178. data/lib/wombat/aws.rb +67 -67
  179. data/lib/wombat/build.rb +338 -338
  180. data/lib/wombat/cli.rb +238 -238
  181. data/lib/wombat/common.rb +347 -347
  182. data/lib/wombat/crypto.rb +64 -64
  183. data/lib/wombat/delete.rb +94 -94
  184. data/lib/wombat/deploy.rb +101 -101
  185. data/lib/wombat/init.rb +32 -32
  186. data/lib/wombat/latest.rb +27 -27
  187. data/lib/wombat/output.rb +86 -86
  188. data/lib/wombat/update.rb +20 -20
  189. data/lib/wombat/version.rb +3 -3
  190. data/lib/wombat.rb +8 -8
  191. data/spec/functional/common_spec.rb +26 -26
  192. data/spec/spec_helper.rb +103 -103
  193. data/spec/unit/common_spec.rb +116 -116
  194. data/terraform/README.md +13 -13
  195. data/terraform/templates/terraform.tfvars.erb +12 -12
  196. data/terraform/wombat.tf +328 -328
  197. data/wombat-cli.gemspec +34 -34
  198. metadata +2 -2
data/README.md CHANGED
@@ -1,146 +1,146 @@
1
- [![Gem Version](https://badge.fury.io/rb/wombat-cli.svg)](http://badge.fury.io/rb/wombat-cli)
2
- [![Build Status](https://travis-ci.org/chef-cft/wombat.svg?branch=master)](https://travis-ci.org/chef-cft/wombat)
3
- [![Stories in Ready](https://badge.waffle.io/chef-cft/wombat.png?label=ready&title=Ready)](https://waffle.io/chef-cft/wombat)
4
-
5
- # Wombat
6
- Wombat (`wombat-cli`) is a gem that builds and creates demo environments using cloud-specific deployment
7
- tools like CloudFormation. The demo environments are comprised of instances built
8
- from the included packer templates:
9
-
10
- * Chef Server
11
- * Chef Automate
12
- * Chef Compliance
13
- * _N_ Automate Build Node(s)
14
- * _N_ Infrastructure Nodes
15
- * _N_ Windows Workstation
16
-
17
- ## Pre-requisites
18
-
19
- We'll need a few things before we can get started with Wombat.
20
-
21
- ##### Install and Configure ChefDK
22
-
23
- Follow the instructions at https://docs.chef.io/install_dk.html to install and configure ChefDK (0.19.6+) as your default version of Ruby.
24
-
25
- *Note:* If not using ChefDK, Ruby 2.3+ is required.
26
-
27
- ##### Install Packer
28
-
29
- Downloads are here: https://www.packer.io/downloads.html. The binary must be in $PATH for `wombat build`
30
-
31
- ##### Download your Automate license key
32
- Automate requires a valid license to activate successfully. **If you do
33
- not have a license key, you can request one from your CHEF account
34
- representative.**
35
-
36
- You will need to have the `delivery.license` file present inside the `files/`
37
- directory of your wombat project.
38
-
39
- ## Usage
40
-
41
- ### From Rubygems
42
-
43
- If you are a developer or you prefer to install from Rubygems, we've got you covered.
44
-
45
- Add Wombat to your repository's `Gemfile`:
46
-
47
- ```ruby
48
- gem 'wombat-cli'
49
- ```
50
-
51
- *Note:* if using Bundler, make sure to `bundle install` and prefix commands as appropriate, ex `bundle exec wombat`
52
-
53
-
54
- Or run it as a standalone:
55
-
56
- ```shell
57
- $ gem install wombat-cli
58
- ```
59
-
60
- ##### Get Started with Wombat
61
-
62
- ```
63
- $ wombat init
64
- ```
65
-
66
- This will generate a wombat skeleton project and example configuration file `wombat.yml`
67
-
68
- *NOTE:* workstation-passwd must meet the minimum Microsoft [Complexity Requirements](https://technet.microsoft.com/en-us/library/hh994562(v=ws.11).aspx)
69
-
70
- *NOTE:* The `googlecompute` and `azure` builders exist but not all images will build nor is there deployment support for either at this time.
71
-
72
- ##### Build images with Packer
73
-
74
- ```
75
- # build one or more templates
76
- $ wombat build [-o BUILDER] TEMPLATE [TEMPLATE2]
77
-
78
- # build all templates (sequentially)
79
- $ wombat build [-o BUILDER]
80
-
81
- # build all images (parallel)
82
- $ wombat build [-o BUILDER] --parallel
83
- ```
84
-
85
- *NOTE:* If the builder is not provided it defaults to `amazon-ebs`
86
-
87
- ##### Deploy CloudFormation template
88
-
89
- ###### via AWS CloudFormation Web UI
90
-
91
- Upload the created template from the `cloudformation` directory.
92
-
93
- ###### via CLI
94
-
95
- ```
96
- # Deploy CloudFormation template
97
- $ wombat deploy --update-lock --update-template
98
- ==> Updating wombat.lock
99
- ==> Generate CloudFormation JSON: STACK.json
100
- ==> Creating CloudFormation stack
101
- Created: arn:aws:cloudformation:us-east-1:862552916454:stack/STACK/2160c580-713e-11e6-b392-50a686e4bb82
102
- ```
103
-
104
- ```
105
- # Deploy an already generated template (pre-existing template)
106
- # where STACK is the name of the template (w/o file extention) in the `stack_dir`
107
- wombat deploy STACK
108
- ```
109
-
110
- ##### Login to Windows Workstation
111
-
112
- ```
113
- # Get Windows Workstation(s) IP(s)
114
- # where STACK is the name of the running CloudFormation stack
115
- $ wombat outputs STACK
116
- WindowsWorkstation (i-xxxxxxxx) => XX.XXX.XX.XXX
117
- ```
118
-
119
- ## TODO
120
-
121
- * Complete support for Azure
122
- * Complete support for Google Cloud Engine
123
-
124
- From the AWS CloudFormation UI, select the Outputs tab for the desired stack.
125
- Use an RDP compatible client to login to the workstation with the embedded credentials.
126
-
127
- LICENSE AND AUTHORS
128
- ===================
129
- * [Andre Elizondo](https://github.com/andrewelizondo)
130
- * [Seth Thomas](https://github.com/cheeseplus)
131
-
132
- ```text
133
- Copyright:: 2016 Chef Software, Inc
134
-
135
- Licensed under the Apache License, Version 2.0 (the "License");
136
- you may not use this file except in compliance with the License.
137
- You may obtain a copy of the License at
138
-
139
- http://www.apache.org/licenses/LICENSE-2.0
140
-
141
- Unless required by applicable law or agreed to in writing, software
142
- distributed under the License is distributed on an "AS IS" BASIS,
143
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
144
- See the License for the specific language governing permissions and
145
- limitations under the License.
146
- ```
1
+ [![Gem Version](https://badge.fury.io/rb/wombat-cli.svg)](http://badge.fury.io/rb/wombat-cli)
2
+ [![Build Status](https://travis-ci.org/chef-cft/wombat.svg?branch=master)](https://travis-ci.org/chef-cft/wombat)
3
+ [![Stories in Ready](https://badge.waffle.io/chef-cft/wombat.png?label=ready&title=Ready)](https://waffle.io/chef-cft/wombat)
4
+
5
+ # Wombat
6
+ Wombat (`wombat-cli`) is a gem that builds and creates demo environments using cloud-specific deployment
7
+ tools like CloudFormation. The demo environments are comprised of instances built
8
+ from the included packer templates:
9
+
10
+ * Chef Server
11
+ * Chef Automate
12
+ * Chef Compliance
13
+ * _N_ Automate Build Node(s)
14
+ * _N_ Infrastructure Nodes
15
+ * _N_ Windows Workstation
16
+
17
+ ## Pre-requisites
18
+
19
+ We'll need a few things before we can get started with Wombat.
20
+
21
+ ##### Install and Configure ChefDK
22
+
23
+ Follow the instructions at https://docs.chef.io/install_dk.html to install and configure ChefDK (0.19.6+) as your default version of Ruby.
24
+
25
+ *Note:* If not using ChefDK, Ruby 2.3+ is required.
26
+
27
+ ##### Install Packer
28
+
29
+ Downloads are here: https://www.packer.io/downloads.html. The binary must be in $PATH for `wombat build`
30
+
31
+ ##### Download your Automate license key
32
+ Automate requires a valid license to activate successfully. **If you do
33
+ not have a license key, you can request one from your CHEF account
34
+ representative.**
35
+
36
+ You will need to have the `delivery.license` file present inside the `files/`
37
+ directory of your wombat project.
38
+
39
+ ## Usage
40
+
41
+ ### From Rubygems
42
+
43
+ If you are a developer or you prefer to install from Rubygems, we've got you covered.
44
+
45
+ Add Wombat to your repository's `Gemfile`:
46
+
47
+ ```ruby
48
+ gem 'wombat-cli'
49
+ ```
50
+
51
+ *Note:* if using Bundler, make sure to `bundle install` and prefix commands as appropriate, ex `bundle exec wombat`
52
+
53
+
54
+ Or run it as a standalone:
55
+
56
+ ```shell
57
+ $ gem install wombat-cli
58
+ ```
59
+
60
+ ##### Get Started with Wombat
61
+
62
+ ```
63
+ $ wombat init
64
+ ```
65
+
66
+ This will generate a wombat skeleton project and example configuration file `wombat.yml`
67
+
68
+ *NOTE:* workstation-passwd must meet the minimum Microsoft [Complexity Requirements](https://technet.microsoft.com/en-us/library/hh994562(v=ws.11).aspx)
69
+
70
+ *NOTE:* The `googlecompute` and `azure` builders exist but not all images will build nor is there deployment support for either at this time.
71
+
72
+ ##### Build images with Packer
73
+
74
+ ```
75
+ # build one or more templates
76
+ $ wombat build [-o BUILDER] TEMPLATE [TEMPLATE2]
77
+
78
+ # build all templates (sequentially)
79
+ $ wombat build [-o BUILDER]
80
+
81
+ # build all images (parallel)
82
+ $ wombat build [-o BUILDER] --parallel
83
+ ```
84
+
85
+ *NOTE:* If the builder is not provided it defaults to `amazon-ebs`
86
+
87
+ ##### Deploy CloudFormation template
88
+
89
+ ###### via AWS CloudFormation Web UI
90
+
91
+ Upload the created template from the `cloudformation` directory.
92
+
93
+ ###### via CLI
94
+
95
+ ```
96
+ # Deploy CloudFormation template
97
+ $ wombat deploy --update-lock --update-template
98
+ ==> Updating wombat.lock
99
+ ==> Generate CloudFormation JSON: STACK.json
100
+ ==> Creating CloudFormation stack
101
+ Created: arn:aws:cloudformation:us-east-1:862552916454:stack/STACK/2160c580-713e-11e6-b392-50a686e4bb82
102
+ ```
103
+
104
+ ```
105
+ # Deploy an already generated template (pre-existing template)
106
+ # where STACK is the name of the template (w/o file extention) in the `stack_dir`
107
+ wombat deploy STACK
108
+ ```
109
+
110
+ ##### Login to Windows Workstation
111
+
112
+ ```
113
+ # Get Windows Workstation(s) IP(s)
114
+ # where STACK is the name of the running CloudFormation stack
115
+ $ wombat outputs STACK
116
+ WindowsWorkstation (i-xxxxxxxx) => XX.XXX.XX.XXX
117
+ ```
118
+
119
+ ## TODO
120
+
121
+ * Complete support for Azure
122
+ * Complete support for Google Cloud Engine
123
+
124
+ From the AWS CloudFormation UI, select the Outputs tab for the desired stack.
125
+ Use an RDP compatible client to login to the workstation with the embedded credentials.
126
+
127
+ LICENSE AND AUTHORS
128
+ ===================
129
+ * [Andre Elizondo](https://github.com/andrewelizondo)
130
+ * [Seth Thomas](https://github.com/cheeseplus)
131
+
132
+ ```text
133
+ Copyright:: 2016 Chef Software, Inc
134
+
135
+ Licensed under the Apache License, Version 2.0 (the "License");
136
+ you may not use this file except in compliance with the License.
137
+ You may obtain a copy of the License at
138
+
139
+ http://www.apache.org/licenses/LICENSE-2.0
140
+
141
+ Unless required by applicable law or agreed to in writing, software
142
+ distributed under the License is distributed on an "AS IS" BASIS,
143
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
144
+ See the License for the specific language governing permissions and
145
+ limitations under the License.
146
+ ```
data/Rakefile CHANGED
@@ -1,26 +1,26 @@
1
- require 'bundler/gem_tasks'
2
-
3
- begin
4
- require "rspec/core/rake_task"
5
-
6
- RSpec::Core::RakeTask.new do |t|
7
- t.pattern = "spec/**/*_spec.rb"
8
- end
9
- rescue LoadError
10
- desc "rspec is not installed, this task is disabled"
11
- task :spec do
12
- abort "rspec is not installed. `(sudo) gem install rspec` to run unit tests"
13
- end
14
- end
15
-
16
- task :default => :spec
17
-
18
- begin
19
- require "chefstyle"
20
- require "rubocop/rake_task"
21
- RuboCop::RakeTask.new(:style) do |task|
22
- task.options += ["--display-cop-names", "--no-color"]
23
- end
24
- rescue LoadError
25
- puts "chefstyle/rubocop is not available. gem install chefstyle to do style checking."
26
- end
1
+ require 'bundler/gem_tasks'
2
+
3
+ begin
4
+ require "rspec/core/rake_task"
5
+
6
+ RSpec::Core::RakeTask.new do |t|
7
+ t.pattern = "spec/**/*_spec.rb"
8
+ end
9
+ rescue LoadError
10
+ desc "rspec is not installed, this task is disabled"
11
+ task :spec do
12
+ abort "rspec is not installed. `(sudo) gem install rspec` to run unit tests"
13
+ end
14
+ end
15
+
16
+ task :default => :spec
17
+
18
+ begin
19
+ require "chefstyle"
20
+ require "rubocop/rake_task"
21
+ RuboCop::RakeTask.new(:style) do |task|
22
+ task.options += ["--display-cop-names", "--no-color"]
23
+ end
24
+ rescue LoadError
25
+ puts "chefstyle/rubocop is not available. gem install chefstyle to do style checking."
26
+ end
data/bin/wombat CHANGED
@@ -1,24 +1,24 @@
1
- #!/usr/bin/env ruby
2
- # -*- encoding: utf-8 -*-
3
- def shut_down
4
- puts "\nShutting down gracefully..."
5
- sleep 1
6
- end
7
-
8
- Signal.trap("INT") {
9
- shut_down
10
- exit
11
- }
12
-
13
- $stdout.sync = true
14
- $stderr.sync = true
15
-
16
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), %w[.. lib])
17
- require "wombat/cli"
18
-
19
- begin
20
- Wombat::Runner.new(Wombat::Options.parse(ARGV)).start
21
- rescue => ex
22
- $stderr.puts ">>> #{ex.message}"
23
- exit(($? && $?.exitstatus) || 99)
24
- end
1
+ #!/usr/bin/env ruby
2
+ # -*- encoding: utf-8 -*-
3
+ def shut_down
4
+ puts "\nShutting down gracefully..."
5
+ sleep 1
6
+ end
7
+
8
+ Signal.trap("INT") {
9
+ shut_down
10
+ exit
11
+ }
12
+
13
+ $stdout.sync = true
14
+ $stderr.sync = true
15
+
16
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), %w[.. lib])
17
+ require "wombat/cli"
18
+
19
+ begin
20
+ Wombat::Runner.new(Wombat::Options.parse(ARGV)).start
21
+ rescue => ex
22
+ $stderr.puts ">>> #{ex.message}"
23
+ exit(($? && $?.exitstatus) || 99)
24
+ end
@@ -1,120 +1,120 @@
1
- # -*- mode: ruby -*-
2
- # vi: set ft=ruby :
3
-
4
- # All Vagrant configuration is done below. The "2" in Vagrant.configure
5
- # configures the configuration version (we support older styles for
6
- # backwards compatibility). Please don't change it unless you know what
7
- # you're doing.
8
- Vagrant.configure(2) do |config|
9
-
10
- config.vm.box = "bento/ubuntu-14.04"
11
-
12
- # cache rules everything around me
13
- if Vagrant.has_plugin?("vagrant-cachier")
14
- config.cache.scope = :box
15
- config.cache.auto_detect = true
16
- config.cache.enable :apt
17
- end
18
-
19
- # Provision a Chef server with push jobs installed
20
- config.vm.define "chef-server" do |cs|
21
- cs.vm.hostname = "chef"
22
- cs.vm.network "private_network", ip: "172.31.54.10"
23
- cs.vm.provider "virtualbox" do |v|
24
- v.memory = 1024
25
- v.cpus = 1
26
- end
27
-
28
- cs.vm.provision "chef_solo" do |chef|
29
- chef.cookbooks_path = "vendored-cookbooks/chef-server"
30
- chef.add_recipe "mock-data"
31
- chef.add_recipe "chef-server"
32
- chef.json = {
33
- "demo" => {
34
- "admin-user" => "vagrant"
35
- }
36
- }
37
- end
38
- end
39
-
40
- config.vm.define "automate" do |d|
41
- d.vm.hostname = "automate"
42
- d.vm.network "private_network", ip: "172.31.54.11"
43
- d.vm.provider "virtualbox" do |v|
44
- v.memory = 1024
45
- v.cpus = 1
46
- end
47
-
48
- d.vm.provision "chef_solo" do |chef|
49
- chef.cookbooks_path = "vendored-cookbooks/automate"
50
- chef.add_recipe "mock_data"
51
- chef.add_recipe "automate"
52
- chef.json = {
53
- "demo" => {
54
- "admin-user" => "vagrant"
55
- }
56
- }
57
- end
58
- end
59
-
60
- config.vm.define "compliance" do |cc|
61
- cc.vm.hostname = "compliance"
62
- cc.vm.network "private_network", ip: "172.31.54.12"
63
- cc.vm.provider "virtualbox" do |v|
64
- v.memory = 1024
65
- v.cpus = 1
66
- end
67
-
68
- cc.vm.provision "chef_solo" do |chef|
69
- chef.cookbooks_path = "vendored-cookbooks/compliance"
70
- chef.add_recipe "mock_data"
71
- chef.add_recipe "compliance"
72
- chef.json = {
73
- "demo" => {
74
- "admin-user" => "vagrant"
75
- }
76
- }
77
- end
78
- end
79
-
80
- config.vm.define "build-node-1" do |bn|
81
- bn.vm.hostname = "build-node-1"
82
- bn.vm.network "private_network", ip: "172.31.54.101"
83
- bn.vm.provider "virtualbox" do |v|
84
- v.memory = 768
85
- v.cpus = 1
86
- end
87
-
88
- bn.vm.provision "chef_solo" do |chef|
89
- chef.cookbooks_path = "vendored-cookbooks/build_node"
90
- chef.add_recipe "mock_data"
91
- chef.add_recipe "build_node"
92
- chef.json = {
93
- "demo" => {
94
- "admin-user" => "vagrant"
95
- }
96
- }
97
- end
98
- end
99
-
100
- config.vm.define "workstation", primary: true do |wk|
101
- wk.vm.box = "mwrock/Windows2012R2"
102
- wk.vm.hostname = "workstation"
103
- wk.vm.network "private_network", ip: "172.31.54.99"
104
- wk.vm.provider "virtualbox" do |v|
105
- v.memory = 4096
106
- v.cpus = 2
107
- end
108
-
109
- wk.vm.provision "chef_solo" do |chef|
110
- chef.cookbooks_path = "vendored-cookbooks/workstation"
111
- chef.add_recipe "mock_data"
112
- chef.add_recipe "workstation"
113
- chef.json = {
114
- "demo" => {
115
- "admin-user" => "vagrant"
116
- }
117
- }
118
- end
119
- end
120
- end
1
+ # -*- mode: ruby -*-
2
+ # vi: set ft=ruby :
3
+
4
+ # All Vagrant configuration is done below. The "2" in Vagrant.configure
5
+ # configures the configuration version (we support older styles for
6
+ # backwards compatibility). Please don't change it unless you know what
7
+ # you're doing.
8
+ Vagrant.configure(2) do |config|
9
+
10
+ config.vm.box = "bento/ubuntu-14.04"
11
+
12
+ # cache rules everything around me
13
+ if Vagrant.has_plugin?("vagrant-cachier")
14
+ config.cache.scope = :box
15
+ config.cache.auto_detect = true
16
+ config.cache.enable :apt
17
+ end
18
+
19
+ # Provision a Chef server with push jobs installed
20
+ config.vm.define "chef-server" do |cs|
21
+ cs.vm.hostname = "chef"
22
+ cs.vm.network "private_network", ip: "172.31.54.10"
23
+ cs.vm.provider "virtualbox" do |v|
24
+ v.memory = 1024
25
+ v.cpus = 1
26
+ end
27
+
28
+ cs.vm.provision "chef_solo" do |chef|
29
+ chef.cookbooks_path = "vendored-cookbooks/chef-server"
30
+ chef.add_recipe "mock-data"
31
+ chef.add_recipe "chef-server"
32
+ chef.json = {
33
+ "demo" => {
34
+ "admin-user" => "vagrant"
35
+ }
36
+ }
37
+ end
38
+ end
39
+
40
+ config.vm.define "automate" do |d|
41
+ d.vm.hostname = "automate"
42
+ d.vm.network "private_network", ip: "172.31.54.11"
43
+ d.vm.provider "virtualbox" do |v|
44
+ v.memory = 1024
45
+ v.cpus = 1
46
+ end
47
+
48
+ d.vm.provision "chef_solo" do |chef|
49
+ chef.cookbooks_path = "vendored-cookbooks/automate"
50
+ chef.add_recipe "mock_data"
51
+ chef.add_recipe "automate"
52
+ chef.json = {
53
+ "demo" => {
54
+ "admin-user" => "vagrant"
55
+ }
56
+ }
57
+ end
58
+ end
59
+
60
+ config.vm.define "compliance" do |cc|
61
+ cc.vm.hostname = "compliance"
62
+ cc.vm.network "private_network", ip: "172.31.54.12"
63
+ cc.vm.provider "virtualbox" do |v|
64
+ v.memory = 1024
65
+ v.cpus = 1
66
+ end
67
+
68
+ cc.vm.provision "chef_solo" do |chef|
69
+ chef.cookbooks_path = "vendored-cookbooks/compliance"
70
+ chef.add_recipe "mock_data"
71
+ chef.add_recipe "compliance"
72
+ chef.json = {
73
+ "demo" => {
74
+ "admin-user" => "vagrant"
75
+ }
76
+ }
77
+ end
78
+ end
79
+
80
+ config.vm.define "build-node-1" do |bn|
81
+ bn.vm.hostname = "build-node-1"
82
+ bn.vm.network "private_network", ip: "172.31.54.101"
83
+ bn.vm.provider "virtualbox" do |v|
84
+ v.memory = 768
85
+ v.cpus = 1
86
+ end
87
+
88
+ bn.vm.provision "chef_solo" do |chef|
89
+ chef.cookbooks_path = "vendored-cookbooks/build_node"
90
+ chef.add_recipe "mock_data"
91
+ chef.add_recipe "build_node"
92
+ chef.json = {
93
+ "demo" => {
94
+ "admin-user" => "vagrant"
95
+ }
96
+ }
97
+ end
98
+ end
99
+
100
+ config.vm.define "workstation", primary: true do |wk|
101
+ wk.vm.box = "mwrock/Windows2012R2"
102
+ wk.vm.hostname = "workstation"
103
+ wk.vm.network "private_network", ip: "172.31.54.99"
104
+ wk.vm.provider "virtualbox" do |v|
105
+ v.memory = 4096
106
+ v.cpus = 2
107
+ end
108
+
109
+ wk.vm.provision "chef_solo" do |chef|
110
+ chef.cookbooks_path = "vendored-cookbooks/workstation"
111
+ chef.add_recipe "mock_data"
112
+ chef.add_recipe "workstation"
113
+ chef.json = {
114
+ "demo" => {
115
+ "admin-user" => "vagrant"
116
+ }
117
+ }
118
+ end
119
+ end
120
+ end
@@ -1,16 +1,16 @@
1
- .vagrant
2
- Berksfile.lock
3
- *~
4
- *#
5
- .#*
6
- \#*#
7
- .*.sw[a-z]
8
- *.un~
9
-
10
- # Bundler
11
- Gemfile.lock
12
- bin/*
13
- .bundle/*
14
-
15
- .kitchen/
16
- .kitchen.local.yml
1
+ .vagrant
2
+ Berksfile.lock
3
+ *~
4
+ *#
5
+ .#*
6
+ \#*#
7
+ .*.sw[a-z]
8
+ *.un~
9
+
10
+ # Bundler
11
+ Gemfile.lock
12
+ bin/*
13
+ .bundle/*
14
+
15
+ .kitchen/
16
+ .kitchen.local.yml