inspec 0.30.0 → 0.31.0

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 (316) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +50 -2
  3. data/Gemfile +2 -1
  4. data/docs/cli.rst +1 -17
  5. data/docs/resources.rst +128 -0
  6. data/docs/shell.rst +130 -0
  7. data/inspec.gemspec +3 -4
  8. data/lib/bundles/inspec-compliance/.kitchen.yml +0 -1
  9. data/lib/bundles/inspec-compliance/README.md +8 -3
  10. data/lib/bundles/inspec-compliance/api.rb +21 -6
  11. data/lib/bundles/inspec-compliance/bootstrap.sh +13 -9
  12. data/lib/bundles/inspec-compliance/cli.rb +23 -19
  13. data/lib/bundles/inspec-compliance/target.rb +1 -0
  14. data/lib/bundles/inspec-compliance/test/integration/default/cli.rb +42 -5
  15. data/lib/bundles/inspec-init/cli.rb +9 -0
  16. data/lib/bundles/inspec-supermarket/cli.rb +9 -0
  17. data/lib/bundles/inspec-supermarket/target.rb +2 -1
  18. data/lib/fetchers/local.rb +5 -2
  19. data/lib/fetchers/url.rb +1 -0
  20. data/lib/inspec/base_cli.rb +2 -1
  21. data/lib/inspec/cli.rb +14 -5
  22. data/lib/inspec/dependencies/dependency_set.rb +38 -0
  23. data/lib/inspec/dependencies/requirement.rb +103 -0
  24. data/lib/inspec/{dependencies.rb → dependencies/resolver.rb} +13 -132
  25. data/lib/inspec/dependencies/vendor_index.rb +98 -0
  26. data/lib/inspec/plugins/source_reader.rb +4 -0
  27. data/lib/inspec/profile.rb +2 -2
  28. data/lib/inspec/resource.rb +2 -0
  29. data/lib/inspec/runner.rb +13 -1
  30. data/lib/inspec/runner_mock.rb +4 -0
  31. data/lib/inspec/runner_rspec.rb +6 -2
  32. data/lib/inspec/shell.rb +22 -1
  33. data/lib/inspec/version.rb +1 -1
  34. data/lib/resources/iis_site.rb +107 -0
  35. data/lib/resources/port.rb +11 -4
  36. data/lib/resources/ssh_conf.rb +10 -2
  37. data/lib/resources/ssl.rb +94 -0
  38. data/lib/resources/xinetd.rb +11 -2
  39. data/lib/utils/parser.rb +6 -1
  40. metadata +17 -561
  41. data/lib/utils/hash_map.rb +0 -37
  42. data/tasks/maintainers.rb +0 -213
  43. data/test/bench/startup/startup.flat.txt +0 -1005
  44. data/test/bench/startup/startup.graph.html +0 -71958
  45. data/test/bench/startup/startup.grind.dat +0 -101602
  46. data/test/bench/startup/startup.stack.html +0 -24516
  47. data/test/bench/startup.flat.txt +0 -998
  48. data/test/bench/startup.graph.html +0 -71420
  49. data/test/bench/startup.grind.dat +0 -103554
  50. data/test/bench/startup.stack.html +0 -25015
  51. data/test/cookbooks/os_prepare/attributes/default.rb +0 -2
  52. data/test/cookbooks/os_prepare/files/empty.iso +0 -0
  53. data/test/cookbooks/os_prepare/files/example.csv +0 -7
  54. data/test/cookbooks/os_prepare/files/example.ini +0 -6
  55. data/test/cookbooks/os_prepare/files/example.json +0 -12
  56. data/test/cookbooks/os_prepare/files/example.yml +0 -7
  57. data/test/cookbooks/os_prepare/metadata.rb +0 -13
  58. data/test/cookbooks/os_prepare/recipes/_runit_service_centos.rb +0 -34
  59. data/test/cookbooks/os_prepare/recipes/_upstart_service_centos.rb +0 -25
  60. data/test/cookbooks/os_prepare/recipes/apache.rb +0 -14
  61. data/test/cookbooks/os_prepare/recipes/apt.rb +0 -20
  62. data/test/cookbooks/os_prepare/recipes/auditctl.rb +0 -8
  63. data/test/cookbooks/os_prepare/recipes/default.rb +0 -29
  64. data/test/cookbooks/os_prepare/recipes/file.rb +0 -46
  65. data/test/cookbooks/os_prepare/recipes/iptables.rb +0 -13
  66. data/test/cookbooks/os_prepare/recipes/json_yaml_csv_ini.rb +0 -34
  67. data/test/cookbooks/os_prepare/recipes/mount.rb +0 -33
  68. data/test/cookbooks/os_prepare/recipes/package.rb +0 -25
  69. data/test/cookbooks/os_prepare/recipes/postgres.rb +0 -20
  70. data/test/cookbooks/os_prepare/recipes/prep_container.rb +0 -15
  71. data/test/cookbooks/os_prepare/recipes/registry_key.rb +0 -87
  72. data/test/cookbooks/os_prepare/recipes/service.rb +0 -19
  73. data/test/cookbooks/os_prepare/templates/default/sv-default-svlog-run.erb +0 -2
  74. data/test/docker_run.rb +0 -162
  75. data/test/docker_test.rb +0 -58
  76. data/test/functional/helper.rb +0 -37
  77. data/test/functional/inheritance_test.rb +0 -62
  78. data/test/functional/inspec_archive_test.rb +0 -80
  79. data/test/functional/inspec_compliance_test.rb +0 -61
  80. data/test/functional/inspec_exec_json_test.rb +0 -122
  81. data/test/functional/inspec_exec_jsonmin_test.rb +0 -59
  82. data/test/functional/inspec_exec_test.rb +0 -123
  83. data/test/functional/inspec_json_profile_test.rb +0 -103
  84. data/test/functional/inspec_test.rb +0 -91
  85. data/test/helper.rb +0 -329
  86. data/test/integration/default/_debug_spec.rb +0 -8
  87. data/test/integration/default/apache_conf_spec.rb +0 -21
  88. data/test/integration/default/apt_spec.rb +0 -37
  89. data/test/integration/default/auditd_rules_spec.rb +0 -32
  90. data/test/integration/default/cmp_matcher_spec.rb +0 -115
  91. data/test/integration/default/csv_spec.rb +0 -11
  92. data/test/integration/default/etc_group_spec.rb +0 -29
  93. data/test/integration/default/file_spec.rb +0 -195
  94. data/test/integration/default/group_spec.rb +0 -59
  95. data/test/integration/default/ini_spec.rb +0 -11
  96. data/test/integration/default/iptables_spec.rb +0 -29
  97. data/test/integration/default/json_spec.rb +0 -11
  98. data/test/integration/default/kernel_module_spec.rb +0 -23
  99. data/test/integration/default/kernel_parameter_spec.rb +0 -60
  100. data/test/integration/default/mount_spec.rb +0 -19
  101. data/test/integration/default/os_spec.rb +0 -13
  102. data/test/integration/default/package_spec.rb +0 -30
  103. data/test/integration/default/port_spec.rb +0 -27
  104. data/test/integration/default/postgres_session_spec.rb +0 -13
  105. data/test/integration/default/powershell_spec.rb +0 -42
  106. data/test/integration/default/registry_key_spec.rb +0 -109
  107. data/test/integration/default/secpol_spec.rb +0 -11
  108. data/test/integration/default/service_spec.rb +0 -128
  109. data/test/integration/default/user_spec.rb +0 -96
  110. data/test/integration/default/vbscript_spec.rb +0 -22
  111. data/test/integration/default/wmi_spec.rb +0 -66
  112. data/test/integration/default/yaml_spec.rb +0 -11
  113. data/test/resource/command_test.rb +0 -33
  114. data/test/resource/dsl_test.rb +0 -45
  115. data/test/resource/file_test.rb +0 -146
  116. data/test/resource/ssh_config.rb +0 -9
  117. data/test/resource/sshd_config.rb +0 -9
  118. data/test/test-extra.yaml +0 -11
  119. data/test/test.yaml +0 -11
  120. data/test/unit/control_test.rb +0 -58
  121. data/test/unit/fetchers/local_test.rb +0 -67
  122. data/test/unit/fetchers/mock_test.rb +0 -43
  123. data/test/unit/fetchers/tar_test.rb +0 -36
  124. data/test/unit/fetchers/url_test.rb +0 -152
  125. data/test/unit/fetchers/zip_test.rb +0 -36
  126. data/test/unit/fetchers_test.rb +0 -65
  127. data/test/unit/metadata_test.rb +0 -137
  128. data/test/unit/mock/cmd/$env-PATH +0 -1
  129. data/test/unit/mock/cmd/Get-NetAdapter +0 -24
  130. data/test/unit/mock/cmd/GetUserAccount +0 -33
  131. data/test/unit/mock/cmd/GetWin32Group +0 -23
  132. data/test/unit/mock/cmd/Resolve-DnsName +0 -26
  133. data/test/unit/mock/cmd/Test-NetConnection +0 -4
  134. data/test/unit/mock/cmd/auditctl +0 -3
  135. data/test/unit/mock/cmd/auditctl-legacy +0 -7
  136. data/test/unit/mock/cmd/auditctl-s +0 -8
  137. data/test/unit/mock/cmd/auditpol +0 -2
  138. data/test/unit/mock/cmd/brew-info-jq +0 -1
  139. data/test/unit/mock/cmd/chage-l-root +0 -7
  140. data/test/unit/mock/cmd/dpkg-s-curl +0 -21
  141. data/test/unit/mock/cmd/dscl +0 -5
  142. data/test/unit/mock/cmd/env +0 -1
  143. data/test/unit/mock/cmd/etc-apt +0 -7
  144. data/test/unit/mock/cmd/find-apache2-conf-enabled +0 -1
  145. data/test/unit/mock/cmd/find-apache2-ports-conf +0 -1
  146. data/test/unit/mock/cmd/find-etc-rc-d-name-S +0 -12
  147. data/test/unit/mock/cmd/find-net-interface +0 -9
  148. data/test/unit/mock/cmd/find-xinetd.d +0 -2
  149. data/test/unit/mock/cmd/gem-list-local-a-q-rubocop +0 -1
  150. data/test/unit/mock/cmd/get-net-tcpconnection +0 -24
  151. data/test/unit/mock/cmd/get-netadapter-binding-bridge +0 -4
  152. data/test/unit/mock/cmd/get-package-firefox +0 -30
  153. data/test/unit/mock/cmd/get-package-ruby +0 -18
  154. data/test/unit/mock/cmd/get-service-dhcp +0 -10
  155. data/test/unit/mock/cmd/get-windows-feature +0 -7
  156. data/test/unit/mock/cmd/get-wmiobject +0 -9
  157. data/test/unit/mock/cmd/getent-hosts-example.com +0 -1
  158. data/test/unit/mock/cmd/getent-passwd-jfolmer +0 -1
  159. data/test/unit/mock/cmd/getent-passwd-root +0 -1
  160. data/test/unit/mock/cmd/hpux-netstat-inet +0 -10
  161. data/test/unit/mock/cmd/hpux-netstat-inet6 +0 -11
  162. data/test/unit/mock/cmd/id-chartmann +0 -1
  163. data/test/unit/mock/cmd/id-jfolmer +0 -1
  164. data/test/unit/mock/cmd/id-root +0 -1
  165. data/test/unit/mock/cmd/initctl--version +0 -5
  166. data/test/unit/mock/cmd/initctl-show-config-ssh +0 -3
  167. data/test/unit/mock/cmd/initctl-status-ssh +0 -1
  168. data/test/unit/mock/cmd/iptables-s +0 -6
  169. data/test/unit/mock/cmd/launchctl-list +0 -3
  170. data/test/unit/mock/cmd/logins-x +0 -4
  171. data/test/unit/mock/cmd/ls-1-etc-init.d +0 -2
  172. data/test/unit/mock/cmd/ls-sys-class-net-br +0 -2
  173. data/test/unit/mock/cmd/lsmod +0 -2
  174. data/test/unit/mock/cmd/lsof-nP-i-FpctPn +0 -63
  175. data/test/unit/mock/cmd/mount +0 -1
  176. data/test/unit/mock/cmd/mount-multiple +0 -2
  177. data/test/unit/mock/cmd/netstat-an.utf8 +0 -13
  178. data/test/unit/mock/cmd/netstat-tulpen +0 -6
  179. data/test/unit/mock/cmd/npm-ls-g--json-bower +0 -9
  180. data/test/unit/mock/cmd/pacman-qi-curl +0 -21
  181. data/test/unit/mock/cmd/ping-example.com +0 -6
  182. data/test/unit/mock/cmd/pip-show-jinja2 +0 -11
  183. data/test/unit/mock/cmd/pkg-info-system-file-system-zfs +0 -8
  184. data/test/unit/mock/cmd/pkginfo-l-SUNWzfsr +0 -7
  185. data/test/unit/mock/cmd/ps-aux +0 -5
  186. data/test/unit/mock/cmd/ps-auxZ +0 -3
  187. data/test/unit/mock/cmd/pw-usershow-root-7 +0 -1
  188. data/test/unit/mock/cmd/reg_schedule +0 -6
  189. data/test/unit/mock/cmd/rpm-qia-curl +0 -24
  190. data/test/unit/mock/cmd/s11-netstat-an-finet-finet6 +0 -32
  191. data/test/unit/mock/cmd/sbin_sysctl +0 -1
  192. data/test/unit/mock/cmd/secedit-export +0 -7
  193. data/test/unit/mock/cmd/service-e +0 -2
  194. data/test/unit/mock/cmd/service-sendmail-onestatus +0 -3
  195. data/test/unit/mock/cmd/service-sshd-status +0 -1
  196. data/test/unit/mock/cmd/sockstat +0 -5
  197. data/test/unit/mock/cmd/success +0 -0
  198. data/test/unit/mock/cmd/swlist-l-product +0 -1
  199. data/test/unit/mock/cmd/systemctl-show-all-dbus +0 -6
  200. data/test/unit/mock/cmd/systemctl-show-all-sshd +0 -7
  201. data/test/unit/mock/cmd/win32_product +0 -8
  202. data/test/unit/mock/cmd/yum-repolist-all +0 -52
  203. data/test/unit/mock/files/apache2.conf +0 -14
  204. data/test/unit/mock/files/auditd.conf +0 -4
  205. data/test/unit/mock/files/bond0 +0 -37
  206. data/test/unit/mock/files/etcgroup +0 -3
  207. data/test/unit/mock/files/example.csv +0 -6
  208. data/test/unit/mock/files/grub.conf +0 -21
  209. data/test/unit/mock/files/inetd.conf +0 -2
  210. data/test/unit/mock/files/kitchen.yml +0 -7
  211. data/test/unit/mock/files/limits.conf +0 -5
  212. data/test/unit/mock/files/login.defs +0 -5
  213. data/test/unit/mock/files/mysql.conf +0 -8
  214. data/test/unit/mock/files/mysql2.conf +0 -2
  215. data/test/unit/mock/files/ntp.conf +0 -5
  216. data/test/unit/mock/files/passwd +0 -2
  217. data/test/unit/mock/files/policyfile.lock.json +0 -12
  218. data/test/unit/mock/files/ports.conf +0 -6
  219. data/test/unit/mock/files/rootwrap.conf +0 -7
  220. data/test/unit/mock/files/serve-cgi-bin.conf +0 -20
  221. data/test/unit/mock/files/shadow +0 -2
  222. data/test/unit/mock/files/ssh_config +0 -5
  223. data/test/unit/mock/files/sshd_config +0 -7
  224. data/test/unit/mock/files/sysctl.conf +0 -7
  225. data/test/unit/mock/files/xinetd.conf +0 -9
  226. data/test/unit/mock/files/xinetd.d/.gitkeep +0 -0
  227. data/test/unit/mock/files/xinetd.d_chargen-dgram +0 -9
  228. data/test/unit/mock/files/xinetd.d_chargen-stream +0 -9
  229. data/test/unit/mock/profiles/complete-metadata/inspec.yml +0 -7
  230. data/test/unit/mock/profiles/complete-profile/controls/filesystem_spec.rb +0 -16
  231. data/test/unit/mock/profiles/complete-profile/inspec.yml +0 -10
  232. data/test/unit/mock/profiles/complete-profile/libraries/testlib.rb +0 -1
  233. data/test/unit/mock/profiles/empty-metadata/inspec.yml +0 -0
  234. data/test/unit/mock/profiles/legacy-complete-metadata/metadata.rb +0 -7
  235. data/test/unit/mock/profiles/legacy-complete-metadata/test/.gitkeep +0 -0
  236. data/test/unit/mock/profiles/legacy-empty-metadata/controls/.gitkeep +0 -0
  237. data/test/unit/mock/profiles/legacy-empty-metadata/metadata.rb +0 -0
  238. data/test/unit/mock/profiles/legacy-simple-metadata/metadata.rb +0 -1
  239. data/test/unit/mock/profiles/legacy-simple-metadata/test/.gitkeep +0 -0
  240. data/test/unit/mock/profiles/library/controls/filesystem_spec.rb +0 -7
  241. data/test/unit/mock/profiles/library/inspec.yml +0 -10
  242. data/test/unit/mock/profiles/library/libraries/gordonlib.rb +0 -2
  243. data/test/unit/mock/profiles/library/libraries/testlib.rb +0 -12
  244. data/test/unit/mock/profiles/resource-tiny/inspec.yml +0 -10
  245. data/test/unit/mock/profiles/resource-tiny/libraries/resource.rb +0 -3
  246. data/test/unit/mock/profiles/simple-metadata/inspec.yml +0 -1
  247. data/test/unit/mock/profiles/skippy-profile-os/controls/one.rb +0 -3
  248. data/test/unit/mock/profiles/skippy-profile-os/inspec.yml +0 -5
  249. data/test/unit/mock/profiles/spec_only/specfile.rb +0 -11
  250. data/test/unit/mock/profiles/supported_inspec/inspec.yml +0 -2
  251. data/test/unit/mock/profiles/unsupported_inspec/inspec.yml +0 -2
  252. data/test/unit/objects_test.rb +0 -65
  253. data/test/unit/plugin_test.rb +0 -44
  254. data/test/unit/plugins/resource_test.rb +0 -60
  255. data/test/unit/profile_context_test.rb +0 -345
  256. data/test/unit/profile_test.rb +0 -252
  257. data/test/unit/resources/apache_conf_test.rb +0 -31
  258. data/test/unit/resources/apt_test.rb +0 -46
  259. data/test/unit/resources/audit_policy_test.rb +0 -13
  260. data/test/unit/resources/auditd_conf_test.rb +0 -15
  261. data/test/unit/resources/auditd_rules_test.rb +0 -91
  262. data/test/unit/resources/bash_test.rb +0 -29
  263. data/test/unit/resources/bond_test.rb +0 -24
  264. data/test/unit/resources/bridge_test.rb +0 -56
  265. data/test/unit/resources/csv_test.rb +0 -35
  266. data/test/unit/resources/etc_group_test.rb +0 -37
  267. data/test/unit/resources/file_test.rb +0 -202
  268. data/test/unit/resources/gem_test.rb +0 -20
  269. data/test/unit/resources/group_test.rb +0 -96
  270. data/test/unit/resources/grub_conf_test.rb +0 -29
  271. data/test/unit/resources/host_test.rb +0 -38
  272. data/test/unit/resources/inetd_conf_test.rb +0 -15
  273. data/test/unit/resources/ini_test.rb +0 -16
  274. data/test/unit/resources/interface_test.rb +0 -54
  275. data/test/unit/resources/iptables_test.rb +0 -35
  276. data/test/unit/resources/json_test.rb +0 -36
  277. data/test/unit/resources/kernel_module_test.rb +0 -23
  278. data/test/unit/resources/kernel_parameter_test.rb +0 -13
  279. data/test/unit/resources/limits_conf_test.rb +0 -14
  280. data/test/unit/resources/login_def_test.rb +0 -16
  281. data/test/unit/resources/mount_test.rb +0 -26
  282. data/test/unit/resources/mysql_conf_test.rb +0 -14
  283. data/test/unit/resources/npm_test.rb +0 -20
  284. data/test/unit/resources/ntp_conf_test.rb +0 -16
  285. data/test/unit/resources/oneget_test.rb +0 -45
  286. data/test/unit/resources/os_env_test.rb +0 -18
  287. data/test/unit/resources/os_test.rb +0 -40
  288. data/test/unit/resources/package_test.rb +0 -87
  289. data/test/unit/resources/parse_config_test.rb +0 -26
  290. data/test/unit/resources/passwd_test.rb +0 -111
  291. data/test/unit/resources/pip_test.rb +0 -15
  292. data/test/unit/resources/port_test.rb +0 -165
  293. data/test/unit/resources/powershell_test.rb +0 -32
  294. data/test/unit/resources/processes_test.rb +0 -72
  295. data/test/unit/resources/registry_key_test.rb +0 -18
  296. data/test/unit/resources/security_policy_test.rb +0 -16
  297. data/test/unit/resources/service_test.rb +0 -305
  298. data/test/unit/resources/shadow_test.rb +0 -67
  299. data/test/unit/resources/ssh_conf_test.rb +0 -33
  300. data/test/unit/resources/user_test.rb +0 -124
  301. data/test/unit/resources/vbscript_test.rb +0 -18
  302. data/test/unit/resources/windows_feature.rb +0 -17
  303. data/test/unit/resources/wmi_test.rb +0 -42
  304. data/test/unit/resources/xinetd_test.rb +0 -60
  305. data/test/unit/resources/yaml_test.rb +0 -34
  306. data/test/unit/resources/yum_test.rb +0 -68
  307. data/test/unit/shell_detector_test.rb +0 -78
  308. data/test/unit/source_reader_test.rb +0 -17
  309. data/test/unit/source_readers/flat_test.rb +0 -61
  310. data/test/unit/source_readers/inspec_test.rb +0 -38
  311. data/test/unit/utils/filter_array_test.rb +0 -59
  312. data/test/unit/utils/filter_table_test.rb +0 -177
  313. data/test/unit/utils/find_files_test.rb +0 -23
  314. data/test/unit/utils/passwd_parser_test.rb +0 -32
  315. data/test/unit/utils/simpleconfig_test.rb +0 -80
  316. data/test/unit/utils/solaris_netstat_parser.rb +0 -124
@@ -1,2 +0,0 @@
1
- default['osprepare']['docker'] = false
2
- default['osprepare']['application'] = true
@@ -1,7 +0,0 @@
1
- name,version,license,title,description
2
- addressable,2.3.6,Apache 2.0,URI Implementation,"Addressable is a replacement for the URI implementation that is part of
3
- Ruby's standard library. It more closely conforms to the relevant RFCs and
4
- adds support for IRIs and URI templates."
5
- ast,2.0.0,MIT,A library for working with Abstract Syntax Trees.,A library for working with Abstract Syntax Trees.
6
- astrolabe,1.3.0,MIT,An object-oriented AST extension for Parser,An object-oriented AST extension for Parser
7
- berkshelf,3.2.3,Apache 2.0,"Manages a Cookbook's, or an Application's, Cookbook dependencies","Manages a Cookbook's, or an Application's, Cookbook dependencies"
@@ -1,6 +0,0 @@
1
- # a comment...
2
- [client]
3
- port = 3306
4
-
5
- [mysqld]
6
- user = mysql
@@ -1,12 +0,0 @@
1
- {
2
- "name": "demo",
3
- "run_list": [
4
- "apache2",
5
- "omnibus"
6
- ],
7
- "cookbook_locks": {
8
- "omnibus": {
9
- "version": "2.2.0"
10
- }
11
- }
12
- }
@@ -1,7 +0,0 @@
1
- driver:
2
- name: vagrant
3
- customize:
4
- memory: 1024
5
- platforms:
6
- - name: centos-5.11
7
- - name: centos-6.7
@@ -1,13 +0,0 @@
1
- # encoding: utf-8
2
- name 'os_prepare'
3
- maintainer 'Chef Software, Inc.'
4
- maintainer_email 'support@chef.io'
5
- description 'This cookbook prepares the test operating systems'
6
- version '1.0.0'
7
-
8
- depends 'apt'
9
- depends 'yum'
10
- depends 'runit'
11
- depends 'postgresql'
12
- depends 'httpd', '~> 0.2'
13
- depends 'windows'
@@ -1,34 +0,0 @@
1
- # encoding: utf-8
2
- # author: Stephan Renatus
3
-
4
- include_recipe 'runit::default'
5
-
6
- # put ctl in alt location
7
- directory '/opt/chef/embedded/sbin' do
8
- recursive true
9
- action :create
10
- end
11
-
12
- link '/opt/chef/embedded/sbin/sv' do
13
- to '/sbin/sv' # default location
14
- end
15
-
16
- runit_service 'running-runit-service' do
17
- default_logger true
18
- run_template_name 'default-svlog'
19
- end
20
-
21
- runit_service 'not-enabled-runit-service' do
22
- default_logger true
23
- run_template_name 'default-svlog'
24
- start_down true
25
- action :enable
26
- end
27
-
28
- runit_service 'not-running-runit-service' do
29
- default_logger true
30
- run_template_name 'default-svlog'
31
- action :create
32
- end
33
-
34
- execute 'sv down not-running-runit-service'
@@ -1,25 +0,0 @@
1
- # encoding: utf-8
2
- # author: Stephan Renatus
3
-
4
- directory '/etc/init' do
5
- action :create
6
- end
7
-
8
- file "/etc/init/upstart-running.conf" do
9
- content "exec tail -f /dev/null"
10
- end
11
-
12
- file "/etc/init/upstart-enabled-not-running.conf" do
13
- content "exec tail -f /dev/null\nstart on networking"
14
- end
15
-
16
- file "/etc/init/upstart-enabled-and-running.conf" do
17
- content "exec tail -f /dev/null\nstart on networking"
18
- end
19
-
20
- %w{ enabled-and-running running }.each do |srv|
21
- service "upstart-#{srv}" do
22
- provider Chef::Provider::Service::Upstart
23
- action :start
24
- end
25
- end
@@ -1,14 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
-
4
- # install apache service
5
- case node['platform']
6
- when 'ubuntu', 'centos', 'amazon', 'fedora'
7
-
8
- return if node['platform_version'] == "15.10"
9
-
10
- httpd_service 'default' do
11
- action :create
12
- end
13
-
14
- end
@@ -1,20 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
-
5
- # add nginx apt repository
6
- case node['platform']
7
- when 'ubuntu'
8
- # use ppa
9
- apt_repository 'nginx' do
10
- uri 'ppa:nginx/stable'
11
- distribution node['lsb']['codename']
12
- end
13
- when 'debian'
14
- # use plain repo
15
- apt_repository 'nginx' do
16
- uri 'http://nginx.org/packages/debian'
17
- distribution node['lsb']['codename']
18
- components ['nginx']
19
- end
20
- end
@@ -1,8 +0,0 @@
1
- # encoding: utf-8
2
- # author: Stephan Renatus
3
-
4
- case node['platform']
5
- when 'centos'
6
- execute 'auditctl -a always,exit -F arch=b32 -S open -S openat -F exit=-EACCES -k access'
7
- execute 'auditctl -w /etc/ssh/sshd_config -p rwxa -k sshd_config'
8
- end
@@ -1,29 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
- #
5
- # prepare all operating systems with the required configuration
6
-
7
- # container preparation
8
- include_recipe('os_prepare::prep_container')
9
-
10
- # basic tests
11
- include_recipe('os_prepare::file')
12
- include_recipe('os_prepare::mount') unless node['osprepare']['docker']
13
- include_recipe('os_prepare::service')
14
- include_recipe('os_prepare::package')
15
- include_recipe('os_prepare::registry_key')
16
- include_recipe('os_prepare::iptables') unless node['osprepare']['docker']
17
-
18
- # config file parsing
19
- include_recipe('os_prepare::json_yaml_csv_ini')
20
-
21
- # configure repos, eg. nginx
22
- include_recipe('os_prepare::apt')
23
-
24
- # application configuration
25
- if node['osprepare']['application']
26
- include_recipe('os_prepare::postgres')
27
- include_recipe('os_prepare::auditctl') unless node['osprepare']['docker']
28
- include_recipe('os_prepare::apache')
29
- end
@@ -1,46 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
- #
5
- # prepares a sample file for verification
6
-
7
- if node['platform_family'] != 'windows'
8
-
9
- gid = case node['platform_family']
10
- when 'aix'
11
- 'system'
12
- when 'freebsd'
13
- 'wheel'
14
- when 'solaris', 'solaris2'
15
- 'sys'
16
- else
17
- 'root'
18
- end
19
-
20
-
21
- file '/tmp/file' do
22
- mode '0765'
23
- owner 'root'
24
- group gid
25
- content 'hello world'
26
- end
27
-
28
- file '/tmp/sfile' do
29
- mode '7765'
30
- owner 'root'
31
- group gid
32
- content 'hello suid/sgid/sticky'
33
- end
34
-
35
- directory '/tmp/folder' do
36
- mode '0567'
37
- owner 'root'
38
- group gid
39
- end
40
-
41
- else
42
-
43
- directory 'C:\Test Directory'
44
- file 'C:\Test Directory\test file.txt'
45
-
46
- end
@@ -1,13 +0,0 @@
1
- # encoding: utf-8
2
- # author: Stephan Renatus
3
-
4
- case node['platform']
5
- when 'ubuntu', 'rhel', 'centos', 'fedora'
6
- execute 'iptables -A INPUT -i eth0 -p tcp -m tcp '\
7
- '--dport 80 -m state --state NEW -m comment '\
8
- '--comment "http on 80" -j ACCEPT'
9
- execute 'iptables -N derby-cognos-web'
10
- execute 'iptables -A INPUT -j derby-cognos-web'
11
- execute 'iptables -A derby-cognos-web -p tcp -m tcp --dport 80 '\
12
- '-m comment --comment "derby-cognos-web" -j ACCEPT'
13
- end
@@ -1,34 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
- #
5
- # adds a yaml file
6
-
7
- gid = case node['platform_family']
8
- when 'aix'
9
- 'system'
10
- when 'freebsd'
11
- 'wheel'
12
- when 'solaris', 'solaris2'
13
- 'sys'
14
- else
15
- 'root'
16
- end
17
-
18
- ['yml', 'json', 'csv', 'ini'].each { |filetype|
19
-
20
- if node['platform_family'] != 'windows'
21
- cookbook_file "/tmp/example.#{filetype}" do
22
- source "example.#{filetype}"
23
- owner 'root'
24
- group gid
25
- mode '0755'
26
- action :create
27
- end
28
- else
29
- cookbook_file "C:/windows/temp/example.#{filetype}" do
30
- source "example.#{filetype}"
31
- action :create
32
- end
33
- end
34
- }
@@ -1,33 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
- #
5
- # file mount tests
6
-
7
- case node['platform']
8
- when 'ubuntu', 'rhel', 'centos', 'fedora'
9
-
10
- # copy iso file for mount tests
11
- # NB created using `mkdir empty; mkisofs -o empty.iso empty/`
12
- cookbook_file '/tmp/empty.iso' do
13
- owner 'root'
14
- group 'root'
15
- mode '0755'
16
- action :create
17
- end
18
-
19
- # create mount directory
20
- directory '/mnt/iso-disk' do
21
- owner 'root'
22
- group 'root'
23
- mode '0755'
24
- action :create
25
- end
26
-
27
- # mount -o loop /root/empty.iso /mnt/iso-disk
28
- mount '/mnt/iso-disk' do
29
- device '/tmp/empty.iso'
30
- options 'loop'
31
- action [:mount, :enable]
32
- end
33
- end
@@ -1,25 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
- #
5
- # installs everything to do the package test
6
-
7
- case node['platform']
8
- when 'ubuntu', 'debian'
9
- include_recipe('apt')
10
- package 'curl'
11
- when 'rhel', 'centos', 'fedora'
12
- include_recipe('yum')
13
-
14
- # TODO: support DNF natively
15
- # Special care for fedora 22, since dnf is not officially supported yet
16
- # https://github.com/chef/chef/issues/3201
17
- if node['platform_version'] == '22'
18
- execute 'dnf install -y yum'
19
- end
20
-
21
- package 'curl'
22
- when 'freebsd'
23
- # do nothing
24
- # TODO: implement Freebsd packages
25
- end
@@ -1,20 +0,0 @@
1
- # encoding: utf-8
2
- # author: Stephan Renatus
3
- #
4
- # installs everyting for the postgres tests
5
-
6
- # hw-cookbooks/postgresql is tested on these platforms
7
- case node['platform']
8
- when 'ubuntu', 'centos'
9
-
10
- # also skip it on ubuntu 15.10, because the cookbook is not supported
11
- # with `enable_pgdg_apt` yet
12
- return if node['platform_version'] == "15.10"
13
- # skip it on centos 5, because ca-certificates is not available
14
- return if node['platform_version'] == "5"
15
-
16
- node.default['postgresql']['enable_pgdg_apt'] = true
17
- node.default['postgresql']['config']['listen_addresses'] = 'localhost'
18
- node.default['postgresql']['password']['postgres'] = 'md506be11be01439cb4abd537e454df34ea' # "inspec"
19
- include_recipe 'postgresql::server'
20
- end
@@ -1,15 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
- #
5
- # prepares container for normal use :-)
6
-
7
- # install docker pre-conditions
8
- if ['ubuntu', 'debian'].include?(node['platform'])
9
- include_recipe('apt')
10
-
11
- # if package lsb-release & procps is not installed
12
- # chef returns an empty node['lsb']['codename']
13
- package("lsb-release")
14
- package("procps")
15
- end
@@ -1,87 +0,0 @@
1
- # encoding: utf-8
2
- # author: Alex Pop
3
- # author: Christoph Hartmann
4
- #
5
- # change a few Windows registry keys for testing purposes
6
-
7
- if node['platform_family'] == 'windows'
8
-
9
- registry_key 'HKLM\System\Test' do
10
- values [{
11
- :name => '',
12
- :type => :string,
13
- :data => 'test'
14
- },{
15
- :name => 'string value',
16
- :type => :string,
17
- :data => nil
18
- },{
19
- :name => 'binary value',
20
- :type => :binary,
21
- :data => 'dfa0f066'
22
- },{
23
- :name => 'dword value',
24
- :type => :dword,
25
- :data => 0
26
- },{
27
- :name => 'qword value',
28
- :type => :qword,
29
- :data => 0
30
- },{
31
- :name => 'multistring value',
32
- :type => :multi_string,
33
- :data => ['test', 'multi','string','data']
34
- }]
35
- recursive true
36
- action :create
37
- end
38
-
39
- registry_key 'HKLM\Software\Policies\Microsoft\Windows\EventLog\System' do
40
- values [{ name: 'MaxSize', type: :dword, data: 67_108_864 }]
41
- recursive true
42
- action :create
43
- end
44
-
45
- registry_key 'HKLM\System\CurrentControlSet\Control\Session Manager' do
46
- values [{ name: 'SafeDllSearchMode', type: :dword, data: 1 }]
47
- recursive true
48
- action :create
49
- end
50
-
51
- registry_key 'HKLM\System\CurrentControlSet\Services\LanManServer\Parameters' do
52
- values [{ name: 'NullSessionShares', type: :multi_string, data: [] }]
53
- recursive true
54
- action :create
55
- end
56
-
57
- registry_key 'HKLM\Software\Policies\Microsoft\Internet Explorer\Main' do
58
- values [{ name: 'Isolation64Bit', type: :dword, data: 1 }]
59
- recursive true
60
- action :create
61
- end
62
-
63
- registry_key 'HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services' do
64
- values [{ name: 'MinEncryptionLevel', type: :dword, data: 3 }]
65
- recursive true
66
- action :create
67
- end
68
-
69
- registry_key 'HKLM\System\CurrentControlSet\Control\Lsa\MSV1_0' do
70
- values [{ name: 'NTLMMinServerSec', type: :dword, data: 537_395_200 }]
71
- recursive true
72
- action :create
73
- end
74
-
75
- # used to verify pattern test
76
- ::Chef::Recipe.send(:include, Chef::Mixin::PowershellOut)
77
- cmd = powershell_out!('Get-WmiObject -Class Win32_UserAccount | % { $_.SID } | ConvertTo-Json')
78
- sids = JSON.parse(cmd.stdout)
79
- sids.each { |sid|
80
- registry_key "HKEY_USERS\\#{sid}\\Software\\Policies\\Microsoft\\Windows\\Installer" do
81
- values [{ name: 'AlwaysInstallElevated', type: :dword, data: 0 }]
82
- recursive true
83
- ignore_failure true # ignore users that have not been logged in
84
- action :create
85
- end
86
- }
87
- end
@@ -1,19 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
- #
5
- # prepares services
6
-
7
- case node['platform']
8
- when 'ubuntu'
9
- # install ntp as a service
10
- include_recipe 'apt::default'
11
- package 'ntp'
12
-
13
- when 'centos'
14
- # install runit for alternative service mgmt
15
- if node['platform_version'].to_i == 6
16
- include_recipe 'os_prepare::_runit_service_centos' unless node['osprepare']['docker']
17
- include_recipe 'os_prepare::_upstart_service_centos' unless node['osprepare']['docker']
18
- end
19
- end
@@ -1,2 +0,0 @@
1
- #!/bin/sh
2
- exec tail -f /dev/null
data/test/docker_run.rb DELETED
@@ -1,162 +0,0 @@
1
- # encoding: utf-8
2
- # author: Dominik Richter
3
-
4
- require 'docker'
5
- require 'yaml'
6
- require 'concurrent'
7
-
8
- class DockerRunner
9
- def initialize(conf_path = nil)
10
- @conf_path = conf_path ||
11
- ENV['config']
12
-
13
- docker_run_concurrency = (ENV['N'] || 5).to_i
14
-
15
- if @conf_path.nil?
16
- fail "You must provide a configuration file with docker boxes"
17
- end
18
-
19
- unless File.file?(@conf_path)
20
- fail "Can't find configuration in #{@conf_path}"
21
- end
22
-
23
- @conf = YAML.load_file(@conf_path)
24
- if @conf.nil? or @conf.empty?
25
- fail "Can't read coniguration in #{@conf_path}"
26
- end
27
- if @conf['images'].nil?
28
- fail "You must configure test images in your #{@conf_path}"
29
- end
30
-
31
- @images = docker_images_by_tag
32
- @image_pull_tickets = Concurrent::Semaphore.new(2)
33
- @docker_run_tickets = Concurrent::Semaphore.new(docker_run_concurrency)
34
- end
35
-
36
- def run_all(&block)
37
- fail 'You must provide a block for run_all' unless block_given?
38
-
39
- promises = @conf['images'].map do |id|
40
- run_on_target(id, &block)
41
- end
42
-
43
- # wait for all tests to be finished
44
- sleep(0.1) until promises.all?(&:fulfilled?)
45
-
46
- # return resulting values
47
- promises.map(&:value)
48
- end
49
-
50
- def run_on_target(name, &block)
51
- pr = Concurrent::Promise.new {
52
- begin
53
- container = start_container(name)
54
- res = block.call(name, container)
55
- # special rescue block to handle not implemented error
56
- rescue NotImplementedError => err
57
- stop_container(container)
58
- raise err.message + "\n" + err.backtrace.join("\n")
59
- rescue StandardError => err
60
- stop_container(container)
61
- raise err.message + "\n" + err.backtrace.join("\n")
62
- end
63
- # always stop the container
64
- stop_container(container)
65
- res
66
- }.execute
67
-
68
- # failure handling
69
- pr.rescue do |err|
70
- msg = "\033[31;1m#{err.message}\033[0m"
71
- puts msg
72
- msg + "\n" + err.backtrace.join("\n")
73
- end
74
- end
75
-
76
- def provision_image(image, prov, files)
77
- return image if prov['script'].nil?
78
- path = File.join(File.dirname(@conf_path), prov['script'])
79
- unless File.file?(path)
80
- puts "Can't find script file #{path}"
81
- return image
82
- end
83
- puts " script #{path}"
84
- dst = "/bootstrap#{files.length}.sh"
85
- files.push(dst)
86
- image.insert_local('localPath' => path, 'outputPath' => dst)
87
- end
88
-
89
- def bootstrap_image(name, image)
90
- files = []
91
- provisions = Array(@conf['provision'])
92
- puts "--> provision docker #{name}" unless provisions.empty?
93
- provisions.each do |prov|
94
- image = provision_image(image, prov, files)
95
- end
96
- [image, files]
97
- end
98
-
99
- def start_container(name, version = nil)
100
- unless name.include?(':')
101
- version ||= 'latest'
102
- name = "#{name}:#{version}"
103
- end
104
- puts "--> schedule docker #{name}"
105
-
106
- image = @images[name]
107
- if image.nil?
108
- puts "\033[35;1m--> pull docker images #{name} "\
109
- "(this may take a while)\033[0m"
110
-
111
- @image_pull_tickets.acquire(1)
112
- puts "... start pull image #{name}"
113
- image = Docker::Image.create('fromImage' => name)
114
- @image_pull_tickets.release(1)
115
-
116
- unless image.nil?
117
- puts "\033[35;1m--> pull docker images finished for #{name}\033[0m"
118
- end
119
- end
120
-
121
- fail "Can't find nor pull docker image #{name}" if image.nil?
122
-
123
- image, scripts = bootstrap_image(name, image)
124
-
125
- @docker_run_tickets.acquire(1)
126
-
127
- puts "--> start docker #{name}"
128
- container = Docker::Container.create(
129
- 'Cmd' => %w{sleep 3600},
130
- 'Image' => image.id,
131
- 'OpenStdin' => true,
132
- )
133
- container.start
134
-
135
- scripts.each do |script|
136
- container.exec(%w{chmod +x}.push(script))
137
- container.exec(%w{sh -c}.push(script))
138
- end
139
-
140
- container
141
- end
142
-
143
- def stop_container(container)
144
- @docker_run_tickets.release(1)
145
- puts "--> killrm docker #{container.id}"
146
- container.kill
147
- container.delete(force: true)
148
- end
149
-
150
- private
151
-
152
- # get all docker image tags
153
- def docker_images_by_tag
154
- images = {}
155
- Docker::Image.all.map do |img|
156
- Array(img.info['RepoTags']).each do |tag|
157
- images[tag] = img
158
- end
159
- end
160
- images
161
- end
162
- end