inspec 2.0.16 → 2.0.17

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 (480) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +101 -101
  3. data/CHANGELOG.md +2949 -2944
  4. data/Gemfile +55 -55
  5. data/LICENSE +14 -14
  6. data/MAINTAINERS.md +31 -31
  7. data/MAINTAINERS.toml +47 -47
  8. data/README.md +438 -438
  9. data/Rakefile +284 -284
  10. data/bin/inspec +12 -12
  11. data/docs/.gitignore +2 -2
  12. data/docs/README.md +40 -40
  13. data/docs/dsl_inspec.md +258 -258
  14. data/docs/dsl_resource.md +93 -93
  15. data/docs/glossary.md +99 -99
  16. data/docs/habitat.md +191 -191
  17. data/docs/inspec_and_friends.md +107 -107
  18. data/docs/matchers.md +165 -165
  19. data/docs/migration.md +293 -293
  20. data/docs/platforms.md +118 -118
  21. data/docs/plugin_kitchen_inspec.md +49 -49
  22. data/docs/profiles.md +370 -370
  23. data/docs/reporters.md +105 -105
  24. data/docs/resources/aide_conf.md.erb +75 -75
  25. data/docs/resources/apache.md.erb +67 -67
  26. data/docs/resources/apache_conf.md.erb +68 -68
  27. data/docs/resources/apt.md.erb +71 -71
  28. data/docs/resources/audit_policy.md.erb +47 -47
  29. data/docs/resources/auditd.md.erb +79 -79
  30. data/docs/resources/auditd_conf.md.erb +68 -68
  31. data/docs/resources/aws_cloudtrail_trail.md.erb +140 -140
  32. data/docs/resources/aws_cloudtrail_trails.md.erb +81 -81
  33. data/docs/resources/aws_cloudwatch_alarm.md.erb +86 -86
  34. data/docs/resources/aws_cloudwatch_log_metric_filter.md.erb +151 -151
  35. data/docs/resources/aws_ec2_instance.md.erb +106 -106
  36. data/docs/resources/aws_iam_access_key.md.erb +123 -123
  37. data/docs/resources/aws_iam_access_keys.md.erb +198 -198
  38. data/docs/resources/aws_iam_group.md.erb +46 -46
  39. data/docs/resources/aws_iam_groups.md.erb +43 -43
  40. data/docs/resources/aws_iam_password_policy.md.erb +76 -76
  41. data/docs/resources/aws_iam_policies.md.erb +82 -82
  42. data/docs/resources/aws_iam_policy.md.erb +146 -146
  43. data/docs/resources/aws_iam_role.md.erb +65 -65
  44. data/docs/resources/aws_iam_root_user.md.erb +58 -58
  45. data/docs/resources/aws_iam_user.md.erb +64 -64
  46. data/docs/resources/aws_iam_users.md.erb +89 -89
  47. data/docs/resources/aws_kms_keys.md.erb +84 -84
  48. data/docs/resources/aws_route_table.md.erb +47 -47
  49. data/docs/resources/aws_s3_bucket.md.erb +134 -134
  50. data/docs/resources/aws_security_group.md.erb +152 -152
  51. data/docs/resources/aws_security_groups.md.erb +92 -92
  52. data/docs/resources/aws_sns_topic.md.erb +62 -62
  53. data/docs/resources/aws_subnet.md.erb +133 -133
  54. data/docs/resources/aws_subnets.md.erb +126 -126
  55. data/docs/resources/aws_vpc.md.erb +120 -120
  56. data/docs/resources/aws_vpcs.md.erb +48 -48
  57. data/docs/resources/azure_generic_resource.md.erb +170 -139
  58. data/docs/resources/azure_resource_group.md.erb +284 -284
  59. data/docs/resources/azure_virtual_machine.md.erb +347 -314
  60. data/docs/resources/azure_virtual_machine_data_disk.md.erb +224 -182
  61. data/docs/resources/bash.md.erb +75 -75
  62. data/docs/resources/bond.md.erb +90 -90
  63. data/docs/resources/bridge.md.erb +57 -57
  64. data/docs/resources/bsd_service.md.erb +67 -67
  65. data/docs/resources/command.md.erb +138 -138
  66. data/docs/resources/cpan.md.erb +79 -79
  67. data/docs/resources/cran.md.erb +64 -64
  68. data/docs/resources/crontab.md.erb +88 -88
  69. data/docs/resources/csv.md.erb +54 -54
  70. data/docs/resources/dh_params.md.erb +217 -217
  71. data/docs/resources/directory.md.erb +30 -30
  72. data/docs/resources/docker.md.erb +164 -164
  73. data/docs/resources/docker_container.md.erb +104 -104
  74. data/docs/resources/docker_image.md.erb +94 -94
  75. data/docs/resources/docker_service.md.erb +114 -114
  76. data/docs/resources/elasticsearch.md.erb +242 -242
  77. data/docs/resources/etc_fstab.md.erb +125 -125
  78. data/docs/resources/etc_group.md.erb +75 -75
  79. data/docs/resources/etc_hosts.md.erb +78 -78
  80. data/docs/resources/etc_hosts_allow.md.erb +74 -74
  81. data/docs/resources/etc_hosts_deny.md.erb +74 -74
  82. data/docs/resources/file.md.erb +515 -515
  83. data/docs/resources/filesystem.md.erb +41 -41
  84. data/docs/resources/firewalld.md.erb +107 -107
  85. data/docs/resources/gem.md.erb +79 -79
  86. data/docs/resources/group.md.erb +61 -61
  87. data/docs/resources/grub_conf.md.erb +101 -101
  88. data/docs/resources/host.md.erb +78 -78
  89. data/docs/resources/http.md.erb +101 -101
  90. data/docs/resources/iis_app.md.erb +122 -122
  91. data/docs/resources/iis_site.md.erb +135 -135
  92. data/docs/resources/inetd_conf.md.erb +94 -94
  93. data/docs/resources/ini.md.erb +76 -76
  94. data/docs/resources/interface.md.erb +58 -58
  95. data/docs/resources/iptables.md.erb +64 -64
  96. data/docs/resources/json.md.erb +62 -62
  97. data/docs/resources/kernel_module.md.erb +107 -107
  98. data/docs/resources/kernel_parameter.md.erb +53 -53
  99. data/docs/resources/key_rsa.md.erb +85 -85
  100. data/docs/resources/launchd_service.md.erb +57 -57
  101. data/docs/resources/limits_conf.md.erb +75 -75
  102. data/docs/resources/login_def.md.erb +71 -71
  103. data/docs/resources/mount.md.erb +69 -69
  104. data/docs/resources/mssql_session.md.erb +60 -60
  105. data/docs/resources/mysql_conf.md.erb +99 -99
  106. data/docs/resources/mysql_session.md.erb +74 -74
  107. data/docs/resources/nginx.md.erb +79 -79
  108. data/docs/resources/nginx_conf.md.erb +128 -128
  109. data/docs/resources/npm.md.erb +60 -60
  110. data/docs/resources/ntp_conf.md.erb +60 -60
  111. data/docs/resources/oneget.md.erb +53 -53
  112. data/docs/resources/oracledb_session.md.erb +52 -52
  113. data/docs/resources/os.md.erb +141 -141
  114. data/docs/resources/os_env.md.erb +78 -78
  115. data/docs/resources/package.md.erb +120 -120
  116. data/docs/resources/packages.md.erb +67 -67
  117. data/docs/resources/parse_config.md.erb +103 -103
  118. data/docs/resources/parse_config_file.md.erb +138 -138
  119. data/docs/resources/passwd.md.erb +141 -141
  120. data/docs/resources/pip.md.erb +67 -67
  121. data/docs/resources/port.md.erb +137 -137
  122. data/docs/resources/postgres_conf.md.erb +79 -79
  123. data/docs/resources/postgres_hba_conf.md.erb +93 -93
  124. data/docs/resources/postgres_ident_conf.md.erb +76 -76
  125. data/docs/resources/postgres_session.md.erb +69 -69
  126. data/docs/resources/powershell.md.erb +102 -102
  127. data/docs/resources/processes.md.erb +109 -109
  128. data/docs/resources/rabbitmq_config.md.erb +41 -41
  129. data/docs/resources/registry_key.md.erb +158 -158
  130. data/docs/resources/runit_service.md.erb +57 -57
  131. data/docs/resources/security_policy.md.erb +47 -47
  132. data/docs/resources/service.md.erb +121 -121
  133. data/docs/resources/shadow.md.erb +144 -144
  134. data/docs/resources/ssh_config.md.erb +80 -80
  135. data/docs/resources/sshd_config.md.erb +83 -83
  136. data/docs/resources/ssl.md.erb +119 -119
  137. data/docs/resources/sys_info.md.erb +42 -42
  138. data/docs/resources/systemd_service.md.erb +57 -57
  139. data/docs/resources/sysv_service.md.erb +57 -57
  140. data/docs/resources/upstart_service.md.erb +57 -57
  141. data/docs/resources/user.md.erb +140 -140
  142. data/docs/resources/users.md.erb +127 -127
  143. data/docs/resources/vbscript.md.erb +55 -55
  144. data/docs/resources/virtualization.md.erb +57 -57
  145. data/docs/resources/windows_feature.md.erb +47 -47
  146. data/docs/resources/windows_hotfix.md.erb +53 -53
  147. data/docs/resources/windows_task.md.erb +95 -95
  148. data/docs/resources/wmi.md.erb +81 -81
  149. data/docs/resources/x509_certificate.md.erb +151 -151
  150. data/docs/resources/xinetd_conf.md.erb +156 -156
  151. data/docs/resources/xml.md.erb +85 -85
  152. data/docs/resources/yaml.md.erb +69 -69
  153. data/docs/resources/yum.md.erb +98 -98
  154. data/docs/resources/zfs_dataset.md.erb +53 -53
  155. data/docs/resources/zfs_pool.md.erb +47 -47
  156. data/docs/ruby_usage.md +203 -203
  157. data/docs/shared/matcher_be.md.erb +1 -1
  158. data/docs/shared/matcher_cmp.md.erb +43 -43
  159. data/docs/shared/matcher_eq.md.erb +3 -3
  160. data/docs/shared/matcher_include.md.erb +1 -1
  161. data/docs/shared/matcher_match.md.erb +1 -1
  162. data/docs/shell.md +172 -172
  163. data/examples/README.md +8 -8
  164. data/examples/inheritance/README.md +65 -65
  165. data/examples/inheritance/controls/example.rb +14 -14
  166. data/examples/inheritance/inspec.yml +15 -15
  167. data/examples/kitchen-ansible/.kitchen.yml +25 -25
  168. data/examples/kitchen-ansible/Gemfile +19 -19
  169. data/examples/kitchen-ansible/README.md +53 -53
  170. data/examples/kitchen-ansible/files/nginx.repo +6 -6
  171. data/examples/kitchen-ansible/tasks/main.yml +16 -16
  172. data/examples/kitchen-ansible/test/integration/default/default.yml +5 -5
  173. data/examples/kitchen-ansible/test/integration/default/web_spec.rb +28 -28
  174. data/examples/kitchen-chef/.kitchen.yml +20 -20
  175. data/examples/kitchen-chef/Berksfile +3 -3
  176. data/examples/kitchen-chef/Gemfile +19 -19
  177. data/examples/kitchen-chef/README.md +27 -27
  178. data/examples/kitchen-chef/metadata.rb +7 -7
  179. data/examples/kitchen-chef/recipes/default.rb +6 -6
  180. data/examples/kitchen-chef/recipes/nginx.rb +30 -30
  181. data/examples/kitchen-chef/test/integration/default/web_spec.rb +28 -28
  182. data/examples/kitchen-puppet/.kitchen.yml +22 -22
  183. data/examples/kitchen-puppet/Gemfile +20 -20
  184. data/examples/kitchen-puppet/Puppetfile +25 -25
  185. data/examples/kitchen-puppet/README.md +53 -53
  186. data/examples/kitchen-puppet/manifests/site.pp +33 -33
  187. data/examples/kitchen-puppet/metadata.json +11 -11
  188. data/examples/kitchen-puppet/test/integration/default/web_spec.rb +28 -28
  189. data/examples/meta-profile/README.md +37 -37
  190. data/examples/meta-profile/controls/example.rb +13 -13
  191. data/examples/meta-profile/inspec.yml +13 -13
  192. data/examples/profile-attribute.yml +2 -2
  193. data/examples/profile-attribute/README.md +14 -14
  194. data/examples/profile-attribute/controls/example.rb +11 -11
  195. data/examples/profile-attribute/inspec.yml +8 -8
  196. data/examples/profile-aws/controls/iam_password_policy_expiration.rb +8 -8
  197. data/examples/profile-aws/controls/iam_password_policy_max_age.rb +8 -8
  198. data/examples/profile-aws/controls/iam_root_user_mfa.rb +8 -8
  199. data/examples/profile-aws/controls/iam_users_access_key_age.rb +8 -8
  200. data/examples/profile-aws/controls/iam_users_console_users_mfa.rb +8 -8
  201. data/examples/profile-aws/inspec.yml +11 -11
  202. data/examples/profile-azure/controls/azure_resource_group_example.rb +24 -24
  203. data/examples/profile-azure/controls/azure_vm_example.rb +29 -29
  204. data/examples/profile-azure/inspec.yml +11 -11
  205. data/examples/profile-sensitive/README.md +29 -29
  206. data/examples/profile-sensitive/controls/sensitive-failures.rb +9 -9
  207. data/examples/profile-sensitive/controls/sensitive.rb +9 -9
  208. data/examples/profile-sensitive/inspec.yml +8 -8
  209. data/examples/profile/README.md +48 -48
  210. data/examples/profile/controls/example.rb +23 -23
  211. data/examples/profile/controls/gordon.rb +36 -36
  212. data/examples/profile/controls/meta.rb +34 -34
  213. data/examples/profile/inspec.yml +10 -10
  214. data/examples/profile/libraries/gordon_config.rb +53 -53
  215. data/inspec.gemspec +47 -47
  216. data/lib/bundles/README.md +3 -3
  217. data/lib/bundles/inspec-artifact.rb +7 -7
  218. data/lib/bundles/inspec-artifact/README.md +1 -1
  219. data/lib/bundles/inspec-artifact/cli.rb +277 -277
  220. data/lib/bundles/inspec-compliance.rb +16 -16
  221. data/lib/bundles/inspec-compliance/.kitchen.yml +20 -20
  222. data/lib/bundles/inspec-compliance/README.md +185 -185
  223. data/lib/bundles/inspec-compliance/api.rb +316 -316
  224. data/lib/bundles/inspec-compliance/api/login.rb +152 -152
  225. data/lib/bundles/inspec-compliance/bootstrap.sh +41 -41
  226. data/lib/bundles/inspec-compliance/cli.rb +254 -254
  227. data/lib/bundles/inspec-compliance/configuration.rb +103 -103
  228. data/lib/bundles/inspec-compliance/http.rb +86 -86
  229. data/lib/bundles/inspec-compliance/support.rb +36 -36
  230. data/lib/bundles/inspec-compliance/target.rb +98 -98
  231. data/lib/bundles/inspec-compliance/test/integration/default/cli.rb +93 -93
  232. data/lib/bundles/inspec-habitat.rb +12 -12
  233. data/lib/bundles/inspec-habitat/cli.rb +36 -36
  234. data/lib/bundles/inspec-habitat/log.rb +10 -10
  235. data/lib/bundles/inspec-habitat/profile.rb +390 -390
  236. data/lib/bundles/inspec-init.rb +8 -8
  237. data/lib/bundles/inspec-init/README.md +31 -31
  238. data/lib/bundles/inspec-init/cli.rb +97 -97
  239. data/lib/bundles/inspec-init/templates/profile/README.md +3 -3
  240. data/lib/bundles/inspec-init/templates/profile/controls/example.rb +19 -19
  241. data/lib/bundles/inspec-init/templates/profile/inspec.yml +8 -8
  242. data/lib/bundles/inspec-supermarket.rb +13 -13
  243. data/lib/bundles/inspec-supermarket/README.md +45 -45
  244. data/lib/bundles/inspec-supermarket/api.rb +84 -84
  245. data/lib/bundles/inspec-supermarket/cli.rb +73 -73
  246. data/lib/bundles/inspec-supermarket/target.rb +34 -34
  247. data/lib/fetchers/git.rb +163 -163
  248. data/lib/fetchers/local.rb +74 -74
  249. data/lib/fetchers/mock.rb +35 -35
  250. data/lib/fetchers/url.rb +204 -204
  251. data/lib/inspec.rb +24 -24
  252. data/lib/inspec/archive/tar.rb +29 -29
  253. data/lib/inspec/archive/zip.rb +19 -19
  254. data/lib/inspec/backend.rb +92 -92
  255. data/lib/inspec/base_cli.rb +350 -333
  256. data/lib/inspec/cached_fetcher.rb +66 -66
  257. data/lib/inspec/cli.rb +292 -302
  258. data/lib/inspec/completions/bash.sh.erb +45 -45
  259. data/lib/inspec/completions/fish.sh.erb +34 -34
  260. data/lib/inspec/completions/zsh.sh.erb +61 -61
  261. data/lib/inspec/control_eval_context.rb +179 -179
  262. data/lib/inspec/dependencies/cache.rb +72 -72
  263. data/lib/inspec/dependencies/dependency_set.rb +92 -92
  264. data/lib/inspec/dependencies/lockfile.rb +115 -115
  265. data/lib/inspec/dependencies/requirement.rb +123 -123
  266. data/lib/inspec/dependencies/resolver.rb +86 -86
  267. data/lib/inspec/describe.rb +27 -27
  268. data/lib/inspec/dsl.rb +66 -66
  269. data/lib/inspec/dsl_shared.rb +33 -33
  270. data/lib/inspec/env_printer.rb +157 -157
  271. data/lib/inspec/errors.rb +13 -13
  272. data/lib/inspec/exceptions.rb +12 -12
  273. data/lib/inspec/expect.rb +45 -45
  274. data/lib/inspec/fetcher.rb +45 -45
  275. data/lib/inspec/file_provider.rb +275 -275
  276. data/lib/inspec/formatters.rb +3 -3
  277. data/lib/inspec/formatters/base.rb +250 -250
  278. data/lib/inspec/formatters/json_rspec.rb +20 -20
  279. data/lib/inspec/formatters/show_progress.rb +12 -12
  280. data/lib/inspec/library_eval_context.rb +58 -58
  281. data/lib/inspec/log.rb +11 -11
  282. data/lib/inspec/metadata.rb +247 -247
  283. data/lib/inspec/method_source.rb +24 -24
  284. data/lib/inspec/objects.rb +14 -14
  285. data/lib/inspec/objects/attribute.rb +65 -65
  286. data/lib/inspec/objects/control.rb +61 -61
  287. data/lib/inspec/objects/describe.rb +92 -92
  288. data/lib/inspec/objects/each_loop.rb +36 -36
  289. data/lib/inspec/objects/list.rb +15 -15
  290. data/lib/inspec/objects/or_test.rb +40 -40
  291. data/lib/inspec/objects/ruby_helper.rb +15 -15
  292. data/lib/inspec/objects/tag.rb +27 -27
  293. data/lib/inspec/objects/test.rb +87 -87
  294. data/lib/inspec/objects/value.rb +27 -27
  295. data/lib/inspec/plugins.rb +60 -60
  296. data/lib/inspec/plugins/cli.rb +24 -24
  297. data/lib/inspec/plugins/fetcher.rb +86 -86
  298. data/lib/inspec/plugins/resource.rb +133 -133
  299. data/lib/inspec/plugins/secret.rb +15 -15
  300. data/lib/inspec/plugins/source_reader.rb +40 -40
  301. data/lib/inspec/polyfill.rb +12 -12
  302. data/lib/inspec/profile.rb +510 -510
  303. data/lib/inspec/profile_context.rb +207 -207
  304. data/lib/inspec/profile_vendor.rb +66 -66
  305. data/lib/inspec/reporters.rb +50 -50
  306. data/lib/inspec/reporters/base.rb +24 -24
  307. data/lib/inspec/reporters/cli.rb +356 -356
  308. data/lib/inspec/reporters/json.rb +116 -116
  309. data/lib/inspec/reporters/json_min.rb +48 -48
  310. data/lib/inspec/reporters/junit.rb +77 -77
  311. data/lib/inspec/require_loader.rb +33 -33
  312. data/lib/inspec/resource.rb +186 -186
  313. data/lib/inspec/rule.rb +266 -266
  314. data/lib/inspec/runner.rb +344 -344
  315. data/lib/inspec/runner_mock.rb +41 -41
  316. data/lib/inspec/runner_rspec.rb +174 -174
  317. data/lib/inspec/runtime_profile.rb +26 -26
  318. data/lib/inspec/schema.rb +213 -213
  319. data/lib/inspec/secrets.rb +19 -19
  320. data/lib/inspec/secrets/yaml.rb +30 -30
  321. data/lib/inspec/shell.rb +220 -223
  322. data/lib/inspec/shell_detector.rb +90 -90
  323. data/lib/inspec/source_reader.rb +29 -29
  324. data/lib/inspec/version.rb +8 -8
  325. data/lib/matchers/matchers.rb +339 -339
  326. data/lib/resource_support/aws.rb +40 -40
  327. data/lib/resource_support/aws/aws_backend_base.rb +12 -12
  328. data/lib/resource_support/aws/aws_backend_factory_mixin.rb +12 -12
  329. data/lib/resource_support/aws/aws_plural_resource_mixin.rb +21 -21
  330. data/lib/resource_support/aws/aws_resource_mixin.rb +66 -66
  331. data/lib/resource_support/aws/aws_singular_resource_mixin.rb +24 -24
  332. data/lib/resources/aide_conf.rb +160 -160
  333. data/lib/resources/apache.rb +48 -48
  334. data/lib/resources/apache_conf.rb +156 -156
  335. data/lib/resources/apt.rb +149 -149
  336. data/lib/resources/audit_policy.rb +63 -63
  337. data/lib/resources/auditd.rb +231 -231
  338. data/lib/resources/auditd_conf.rb +55 -55
  339. data/lib/resources/aws/aws_cloudtrail_trail.rb +77 -77
  340. data/lib/resources/aws/aws_cloudtrail_trails.rb +47 -47
  341. data/lib/resources/aws/aws_cloudwatch_alarm.rb +62 -62
  342. data/lib/resources/aws/aws_cloudwatch_log_metric_filter.rb +100 -100
  343. data/lib/resources/aws/aws_ec2_instance.rb +157 -157
  344. data/lib/resources/aws/aws_iam_access_key.rb +106 -106
  345. data/lib/resources/aws/aws_iam_access_keys.rb +144 -144
  346. data/lib/resources/aws/aws_iam_group.rb +56 -56
  347. data/lib/resources/aws/aws_iam_groups.rb +45 -45
  348. data/lib/resources/aws/aws_iam_password_policy.rb +116 -116
  349. data/lib/resources/aws/aws_iam_policies.rb +46 -46
  350. data/lib/resources/aws/aws_iam_policy.rb +119 -119
  351. data/lib/resources/aws/aws_iam_role.rb +51 -51
  352. data/lib/resources/aws/aws_iam_root_user.rb +60 -60
  353. data/lib/resources/aws/aws_iam_user.rb +111 -111
  354. data/lib/resources/aws/aws_iam_users.rb +96 -96
  355. data/lib/resources/aws/aws_kms_keys.rb +46 -46
  356. data/lib/resources/aws/aws_route_table.rb +61 -61
  357. data/lib/resources/aws/aws_s3_bucket.rb +115 -115
  358. data/lib/resources/aws/aws_security_group.rb +93 -93
  359. data/lib/resources/aws/aws_security_groups.rb +68 -68
  360. data/lib/resources/aws/aws_sns_topic.rb +53 -53
  361. data/lib/resources/aws/aws_subnet.rb +88 -88
  362. data/lib/resources/aws/aws_subnets.rb +53 -53
  363. data/lib/resources/aws/aws_vpc.rb +69 -69
  364. data/lib/resources/aws/aws_vpcs.rb +45 -45
  365. data/lib/resources/azure/azure_backend.rb +377 -377
  366. data/lib/resources/azure/azure_generic_resource.rb +59 -59
  367. data/lib/resources/azure/azure_resource_group.rb +152 -152
  368. data/lib/resources/azure/azure_virtual_machine.rb +264 -264
  369. data/lib/resources/azure/azure_virtual_machine_data_disk.rb +136 -136
  370. data/lib/resources/bash.rb +35 -35
  371. data/lib/resources/bond.rb +68 -68
  372. data/lib/resources/bridge.rb +122 -122
  373. data/lib/resources/command.rb +69 -69
  374. data/lib/resources/cpan.rb +58 -58
  375. data/lib/resources/cran.rb +64 -64
  376. data/lib/resources/crontab.rb +170 -170
  377. data/lib/resources/csv.rb +60 -60
  378. data/lib/resources/dh_params.rb +82 -82
  379. data/lib/resources/directory.rb +25 -25
  380. data/lib/resources/docker.rb +236 -236
  381. data/lib/resources/docker_container.rb +89 -89
  382. data/lib/resources/docker_image.rb +83 -83
  383. data/lib/resources/docker_object.rb +57 -57
  384. data/lib/resources/docker_service.rb +90 -90
  385. data/lib/resources/elasticsearch.rb +169 -169
  386. data/lib/resources/etc_fstab.rb +102 -102
  387. data/lib/resources/etc_group.rb +156 -156
  388. data/lib/resources/etc_hosts.rb +81 -81
  389. data/lib/resources/etc_hosts_allow_deny.rb +123 -123
  390. data/lib/resources/file.rb +298 -298
  391. data/lib/resources/filesystem.rb +31 -31
  392. data/lib/resources/firewalld.rb +144 -144
  393. data/lib/resources/gem.rb +70 -70
  394. data/lib/resources/groups.rb +215 -215
  395. data/lib/resources/grub_conf.rb +237 -237
  396. data/lib/resources/host.rb +300 -300
  397. data/lib/resources/http.rb +250 -250
  398. data/lib/resources/iis_app.rb +104 -104
  399. data/lib/resources/iis_site.rb +148 -148
  400. data/lib/resources/inetd_conf.rb +62 -62
  401. data/lib/resources/ini.rb +29 -29
  402. data/lib/resources/interface.rb +129 -129
  403. data/lib/resources/iptables.rb +69 -69
  404. data/lib/resources/json.rb +117 -117
  405. data/lib/resources/kernel_module.rb +107 -107
  406. data/lib/resources/kernel_parameter.rb +58 -58
  407. data/lib/resources/key_rsa.rb +67 -67
  408. data/lib/resources/limits_conf.rb +55 -55
  409. data/lib/resources/login_def.rb +66 -66
  410. data/lib/resources/mount.rb +88 -88
  411. data/lib/resources/mssql_session.rb +101 -101
  412. data/lib/resources/mysql.rb +81 -81
  413. data/lib/resources/mysql_conf.rb +134 -134
  414. data/lib/resources/mysql_session.rb +71 -71
  415. data/lib/resources/nginx.rb +96 -96
  416. data/lib/resources/nginx_conf.rb +227 -227
  417. data/lib/resources/npm.rb +48 -48
  418. data/lib/resources/ntp_conf.rb +58 -58
  419. data/lib/resources/oneget.rb +71 -71
  420. data/lib/resources/oracledb_session.rb +139 -139
  421. data/lib/resources/os.rb +36 -36
  422. data/lib/resources/os_env.rb +76 -76
  423. data/lib/resources/package.rb +363 -363
  424. data/lib/resources/packages.rb +111 -111
  425. data/lib/resources/parse_config.rb +116 -116
  426. data/lib/resources/passwd.rb +74 -74
  427. data/lib/resources/pip.rb +89 -89
  428. data/lib/resources/platform.rb +109 -109
  429. data/lib/resources/port.rb +771 -771
  430. data/lib/resources/postgres.rb +130 -130
  431. data/lib/resources/postgres_conf.rb +121 -121
  432. data/lib/resources/postgres_hba_conf.rb +100 -100
  433. data/lib/resources/postgres_ident_conf.rb +78 -78
  434. data/lib/resources/postgres_session.rb +71 -71
  435. data/lib/resources/powershell.rb +57 -57
  436. data/lib/resources/processes.rb +204 -204
  437. data/lib/resources/rabbitmq_conf.rb +52 -52
  438. data/lib/resources/registry_key.rb +296 -296
  439. data/lib/resources/security_policy.rb +180 -180
  440. data/lib/resources/service.rb +789 -789
  441. data/lib/resources/shadow.rb +140 -140
  442. data/lib/resources/ssh_conf.rb +102 -102
  443. data/lib/resources/ssl.rb +99 -99
  444. data/lib/resources/sys_info.rb +28 -28
  445. data/lib/resources/toml.rb +32 -32
  446. data/lib/resources/users.rb +654 -654
  447. data/lib/resources/vbscript.rb +69 -69
  448. data/lib/resources/virtualization.rb +251 -251
  449. data/lib/resources/windows_feature.rb +84 -84
  450. data/lib/resources/windows_hotfix.rb +35 -35
  451. data/lib/resources/windows_task.rb +105 -105
  452. data/lib/resources/wmi.rb +113 -113
  453. data/lib/resources/x509_certificate.rb +143 -143
  454. data/lib/resources/xinetd.rb +111 -111
  455. data/lib/resources/xml.rb +46 -46
  456. data/lib/resources/yaml.rb +47 -47
  457. data/lib/resources/yum.rb +180 -180
  458. data/lib/resources/zfs_dataset.rb +60 -60
  459. data/lib/resources/zfs_pool.rb +49 -49
  460. data/lib/source_readers/flat.rb +39 -39
  461. data/lib/source_readers/inspec.rb +75 -75
  462. data/lib/utils/command_wrapper.rb +27 -27
  463. data/lib/utils/convert.rb +12 -12
  464. data/lib/utils/database_helpers.rb +77 -77
  465. data/lib/utils/erlang_parser.rb +192 -192
  466. data/lib/utils/filter.rb +272 -272
  467. data/lib/utils/filter_array.rb +27 -27
  468. data/lib/utils/find_files.rb +44 -44
  469. data/lib/utils/hash.rb +41 -41
  470. data/lib/utils/json_log.rb +18 -18
  471. data/lib/utils/latest_version.rb +22 -22
  472. data/lib/utils/modulator.rb +12 -12
  473. data/lib/utils/nginx_parser.rb +85 -85
  474. data/lib/utils/object_traversal.rb +49 -49
  475. data/lib/utils/parser.rb +274 -274
  476. data/lib/utils/plugin_registry.rb +93 -93
  477. data/lib/utils/simpleconfig.rb +120 -120
  478. data/lib/utils/spdx.rb +13 -13
  479. data/lib/utils/spdx.txt +343 -343
  480. metadata +1 -1
@@ -1,141 +1,141 @@
1
- ---
2
- title: About the os Resource
3
- platform: os
4
- ---
5
-
6
- # os
7
-
8
- Use the `os` InSpec audit resource to test the platform on which the system is running.
9
-
10
- <br>
11
-
12
- ## Syntax
13
-
14
- An `os` resource block declares the platform to be tested. The platform may specified via matcher or control block name. For example, using a matcher:
15
-
16
- describe os[:family] do
17
- it { should eq 'platform_family_name' }
18
- end
19
-
20
- * `'platform_family_name'` (a string) is one of `aix`, `bsd`, `darwin`, `debian`, `hpux`, `linux`, `redhat`, `solaris`, `suse`, `unix`, or `windows`
21
-
22
- The parameters available to `os` are:
23
-
24
- * `:name` - the operating system name, such as `centos`
25
- * `:family` - the operating system family, such as `redhat`
26
- * `:release` - the version of the operating system, such as `7.3.1611`
27
- * `:arch` - the architecture of the operating system, such as `x86_64`
28
- <br>
29
-
30
- ## Examples
31
-
32
- The following examples show how to use this InSpec audit resource.
33
-
34
- ### Test for RedHat
35
-
36
- describe os[:family] do
37
- it { should eq 'redhat' }
38
- end
39
-
40
- ### Test for Ubuntu
41
-
42
- describe os[:family] do
43
- it { should eq 'debian' }
44
- end
45
-
46
- ### Test for Microsoft Windows
47
-
48
- describe os[:family] do
49
- it { should eq 'windows' }
50
- end
51
-
52
- <br>
53
-
54
- ## Matchers
55
-
56
- For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
57
-
58
- ### os.family? Helpers
59
-
60
- The `os` audit resource includes a collection of helpers that enable more granular testing of platforms, platform names, architectures, and releases. Use any of the following platform-specific helpers to test for specific platforms:
61
-
62
- * `aix?`
63
- * `bsd?` (including Darwin, FreeBSD, NetBSD, and OpenBSD)
64
- * `darwin?`
65
- * `debian?`
66
- * `hpux?`
67
- * `linux?` (including Alpine Linux, Amazon Linux, ArchLinux, CoreOS, Exherbo, Fedora, Gentoo, and Slackware)
68
- * `redhat?` (including CentOS)
69
- * `solaris?` (including Nexenta Core, OmniOS, Open Indiana, Solaris Open, and SmartOS)
70
- * `suse?`
71
- * `unix?`
72
- * `windows?`
73
-
74
- For example, to test for Darwin use:
75
-
76
- describe os.bsd? do
77
- it { should eq true }
78
- end
79
-
80
- To test for Windows use:
81
-
82
- describe os.windows? do
83
- it { should eq true }
84
- end
85
-
86
- and to test for Redhat use:
87
-
88
- describe os.redhat? do
89
- it { should eq true }
90
- end
91
-
92
- Use the following helpers to test for operating system names, releases, and architectures:
93
-
94
- describe os.name do
95
- it { should eq 'foo' }
96
- end
97
-
98
- describe os.release do
99
- it { should eq 'foo' }
100
- end
101
-
102
- describe os.arch do
103
- it { should eq 'foo' }
104
- end
105
-
106
- ### os[:family] Symbols
107
-
108
- Use `os[:family]` to enable more granular testing of platforms, platform names, architectures, and releases. Use any of the following platform-specific symbols to test for specific platforms:
109
-
110
- * `:aix`
111
- * `:bsd` For platforms that are part of the Berkeley OS family: `:darwin`, `:freebsd`, `:netbsd`, and `:openbsd`.
112
- * `:debian`
113
- * `:hpux`
114
- * `:linux`. For platforms that are part of the Linux family: `:alpine`, `:amazon`, `:arch`, `:coreos`, `:exherbo`, `:fedora`, `:gentoo`, and `:slackware`.
115
- * `:redhat`. For platforms that are part of the Redhat family: `:centos`.
116
- * `:solaris`. For platforms that are part of the Solaris family: `:nexentacore`, `:omnios`, `:openindiana`, `:opensolaris`, and `:smartos`.
117
- * `:suse`
118
- * `:unix`
119
- * `:windows`
120
-
121
- For example, both of the following tests should have the same result:
122
-
123
- if os[:family] == 'debian'
124
- describe port(69) do
125
- its('processes') { should include 'in.tftpd' }
126
- end
127
- elsif os[:family] == 'redhat'
128
- describe port(69) do
129
- its('processes') { should include 'xinetd' }
130
- end
131
- end
132
-
133
- if os.debian?
134
- describe port(69) do
135
- its('processes') { should include 'in.tftpd' }
136
- end
137
- elsif os.redhat?
138
- describe port(69) do
139
- its('processes') { should include 'xinetd' }
140
- end
141
- end
1
+ ---
2
+ title: About the os Resource
3
+ platform: os
4
+ ---
5
+
6
+ # os
7
+
8
+ Use the `os` InSpec audit resource to test the platform on which the system is running.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ An `os` resource block declares the platform to be tested. The platform may specified via matcher or control block name. For example, using a matcher:
15
+
16
+ describe os[:family] do
17
+ it { should eq 'platform_family_name' }
18
+ end
19
+
20
+ * `'platform_family_name'` (a string) is one of `aix`, `bsd`, `darwin`, `debian`, `hpux`, `linux`, `redhat`, `solaris`, `suse`, `unix`, or `windows`
21
+
22
+ The parameters available to `os` are:
23
+
24
+ * `:name` - the operating system name, such as `centos`
25
+ * `:family` - the operating system family, such as `redhat`
26
+ * `:release` - the version of the operating system, such as `7.3.1611`
27
+ * `:arch` - the architecture of the operating system, such as `x86_64`
28
+ <br>
29
+
30
+ ## Examples
31
+
32
+ The following examples show how to use this InSpec audit resource.
33
+
34
+ ### Test for RedHat
35
+
36
+ describe os[:family] do
37
+ it { should eq 'redhat' }
38
+ end
39
+
40
+ ### Test for Ubuntu
41
+
42
+ describe os[:family] do
43
+ it { should eq 'debian' }
44
+ end
45
+
46
+ ### Test for Microsoft Windows
47
+
48
+ describe os[:family] do
49
+ it { should eq 'windows' }
50
+ end
51
+
52
+ <br>
53
+
54
+ ## Matchers
55
+
56
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
57
+
58
+ ### os.family? Helpers
59
+
60
+ The `os` audit resource includes a collection of helpers that enable more granular testing of platforms, platform names, architectures, and releases. Use any of the following platform-specific helpers to test for specific platforms:
61
+
62
+ * `aix?`
63
+ * `bsd?` (including Darwin, FreeBSD, NetBSD, and OpenBSD)
64
+ * `darwin?`
65
+ * `debian?`
66
+ * `hpux?`
67
+ * `linux?` (including Alpine Linux, Amazon Linux, ArchLinux, CoreOS, Exherbo, Fedora, Gentoo, and Slackware)
68
+ * `redhat?` (including CentOS)
69
+ * `solaris?` (including Nexenta Core, OmniOS, Open Indiana, Solaris Open, and SmartOS)
70
+ * `suse?`
71
+ * `unix?`
72
+ * `windows?`
73
+
74
+ For example, to test for Darwin use:
75
+
76
+ describe os.bsd? do
77
+ it { should eq true }
78
+ end
79
+
80
+ To test for Windows use:
81
+
82
+ describe os.windows? do
83
+ it { should eq true }
84
+ end
85
+
86
+ and to test for Redhat use:
87
+
88
+ describe os.redhat? do
89
+ it { should eq true }
90
+ end
91
+
92
+ Use the following helpers to test for operating system names, releases, and architectures:
93
+
94
+ describe os.name do
95
+ it { should eq 'foo' }
96
+ end
97
+
98
+ describe os.release do
99
+ it { should eq 'foo' }
100
+ end
101
+
102
+ describe os.arch do
103
+ it { should eq 'foo' }
104
+ end
105
+
106
+ ### os[:family] Symbols
107
+
108
+ Use `os[:family]` to enable more granular testing of platforms, platform names, architectures, and releases. Use any of the following platform-specific symbols to test for specific platforms:
109
+
110
+ * `:aix`
111
+ * `:bsd` For platforms that are part of the Berkeley OS family: `:darwin`, `:freebsd`, `:netbsd`, and `:openbsd`.
112
+ * `:debian`
113
+ * `:hpux`
114
+ * `:linux`. For platforms that are part of the Linux family: `:alpine`, `:amazon`, `:arch`, `:coreos`, `:exherbo`, `:fedora`, `:gentoo`, and `:slackware`.
115
+ * `:redhat`. For platforms that are part of the Redhat family: `:centos`.
116
+ * `:solaris`. For platforms that are part of the Solaris family: `:nexentacore`, `:omnios`, `:openindiana`, `:opensolaris`, and `:smartos`.
117
+ * `:suse`
118
+ * `:unix`
119
+ * `:windows`
120
+
121
+ For example, both of the following tests should have the same result:
122
+
123
+ if os[:family] == 'debian'
124
+ describe port(69) do
125
+ its('processes') { should include 'in.tftpd' }
126
+ end
127
+ elsif os[:family] == 'redhat'
128
+ describe port(69) do
129
+ its('processes') { should include 'xinetd' }
130
+ end
131
+ end
132
+
133
+ if os.debian?
134
+ describe port(69) do
135
+ its('processes') { should include 'in.tftpd' }
136
+ end
137
+ elsif os.redhat?
138
+ describe port(69) do
139
+ its('processes') { should include 'xinetd' }
140
+ end
141
+ end
@@ -1,78 +1,78 @@
1
- ---
2
- title: About the os_env Resource
3
- platform: os
4
- ---
5
-
6
- # os_env
7
-
8
- Use the `os_env` InSpec audit resource to test the environment variables for the platform on which the system is running.
9
-
10
- <br>
11
-
12
- ## Syntax
13
-
14
- A `os_env` resource block declares an environment variable, and then declares its value:
15
-
16
- describe os_env('VARIABLE') do
17
- its('property') { should eq 1 }
18
- end
19
-
20
- where
21
-
22
- * `('VARIABLE')` must specify an environment variable, such as `PATH`
23
- * `matcher` is a valid matcher for this resource
24
-
25
- <br>
26
-
27
- ## Examples
28
-
29
- The following examples show how to use this InSpec audit resource.
30
-
31
- ### Test the PATH environment variable
32
-
33
- describe os_env('PATH') do
34
- its('split') { should_not include('') }
35
- its('split') { should_not include('.') }
36
- end
37
-
38
- ### Test Habitat environment variables
39
-
40
- Habitat uses the `os_env` resource to test environment variables. The environment variables are first defined in a whitespace array, after which each environment variable is tested:
41
-
42
- hab_env_vars = %w(HAB_AUTH_TOKEN
43
- HAB_CACHE_KEY_PATH
44
- HAB_DEPOT_URL
45
- HAB_ORG
46
- HAB_ORIGIN
47
- HAB_ORIGIN_KEYS
48
- HAB_RING
49
- HAB_RING_KEY
50
- HAB_STUDIOS_HOME
51
- HAB_STUDIO_ROOT
52
- HAB_USER)
53
-
54
- hab_env_vars.each do |e|
55
- describe os_env(e) do
56
- its('content') { should eq nil }
57
- end
58
- end
59
-
60
- <br>
61
-
62
- ## Matchers
63
-
64
- For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
65
-
66
- ### content
67
-
68
- The `content` matcher return the value of the environment variable:
69
-
70
- its('content') { should eq '/usr/local/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin' }
71
-
72
- ### split
73
-
74
- The `split` matcher splits the value of the environment variable with the `:` deliminator (use the `;` deliminator if Windows):
75
-
76
- its('split') { should include ('/usr/bin') }
77
-
78
- Note: the `split` matcher returns an array including `""` for cases where there is a trailing colon (`:`), such as `dir1::dir2:`
1
+ ---
2
+ title: About the os_env Resource
3
+ platform: os
4
+ ---
5
+
6
+ # os_env
7
+
8
+ Use the `os_env` InSpec audit resource to test the environment variables for the platform on which the system is running.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `os_env` resource block declares an environment variable, and then declares its value:
15
+
16
+ describe os_env('VARIABLE') do
17
+ its('property') { should eq 1 }
18
+ end
19
+
20
+ where
21
+
22
+ * `('VARIABLE')` must specify an environment variable, such as `PATH`
23
+ * `matcher` is a valid matcher for this resource
24
+
25
+ <br>
26
+
27
+ ## Examples
28
+
29
+ The following examples show how to use this InSpec audit resource.
30
+
31
+ ### Test the PATH environment variable
32
+
33
+ describe os_env('PATH') do
34
+ its('split') { should_not include('') }
35
+ its('split') { should_not include('.') }
36
+ end
37
+
38
+ ### Test Habitat environment variables
39
+
40
+ Habitat uses the `os_env` resource to test environment variables. The environment variables are first defined in a whitespace array, after which each environment variable is tested:
41
+
42
+ hab_env_vars = %w(HAB_AUTH_TOKEN
43
+ HAB_CACHE_KEY_PATH
44
+ HAB_DEPOT_URL
45
+ HAB_ORG
46
+ HAB_ORIGIN
47
+ HAB_ORIGIN_KEYS
48
+ HAB_RING
49
+ HAB_RING_KEY
50
+ HAB_STUDIOS_HOME
51
+ HAB_STUDIO_ROOT
52
+ HAB_USER)
53
+
54
+ hab_env_vars.each do |e|
55
+ describe os_env(e) do
56
+ its('content') { should eq nil }
57
+ end
58
+ end
59
+
60
+ <br>
61
+
62
+ ## Matchers
63
+
64
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
65
+
66
+ ### content
67
+
68
+ The `content` matcher return the value of the environment variable:
69
+
70
+ its('content') { should eq '/usr/local/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin' }
71
+
72
+ ### split
73
+
74
+ The `split` matcher splits the value of the environment variable with the `:` deliminator (use the `;` deliminator if Windows):
75
+
76
+ its('split') { should include ('/usr/bin') }
77
+
78
+ Note: the `split` matcher returns an array including `""` for cases where there is a trailing colon (`:`), such as `dir1::dir2:`
@@ -1,120 +1,120 @@
1
- ---
2
- title: About the package Resource
3
- platform: os
4
- ---
5
-
6
- # package
7
-
8
- Use the `package` InSpec audit resource to test if the named package and/or package version is installed on the system.
9
-
10
- <br>
11
-
12
- ## Syntax
13
-
14
- A `package` resource block declares a package and (optionally) a package version:
15
-
16
- describe package('name') do
17
- it { should be_installed }
18
- end
19
-
20
- where
21
-
22
- * `('name')` must specify the name of a package, such as `'nginx'`
23
- * `be_installed` is a valid matcher for this resource
24
-
25
- <br>
26
-
27
- ## Examples
28
-
29
- The following examples show how to use this InSpec audit resource.
30
-
31
- ### Test if NGINX version 1.9.5 is installed
32
-
33
- describe package('nginx') do
34
- it { should be_installed }
35
- its('version') { should eq '1.9.5' }
36
- end
37
-
38
- ### Test that a package is not installed
39
-
40
- describe package('some_package') do
41
- it { should_not be_installed }
42
- end
43
-
44
- ### Test if telnet is installed
45
-
46
- describe package('telnetd') do
47
- it { should_not be_installed }
48
- end
49
-
50
- describe inetd_conf do
51
- its('telnet') { should eq nil }
52
- end
53
-
54
- ### Test if ClamAV (an antivirus engine) is installed and running
55
-
56
- describe package('clamav') do
57
- it { should be_installed }
58
- its('version') { should eq '0.98.7' }
59
- end
60
-
61
- describe service('clamd') do
62
- it { should_not be_enabled }
63
- it { should_not be_installed }
64
- it { should_not be_running }
65
- end
66
-
67
- ### Verify if some_package is installed according to my_rpmdb
68
-
69
- describe package('some_package', rpm_dbpath: '/var/lib/my_rpmdb') do
70
- it { should be_installed }
71
- end
72
-
73
- ### Verify if Memcached is installed, enabled, and running
74
-
75
- Memcached is an in-memory key-value store that helps improve the performance of database-driven websites and can be installed, maintained, and tested using the `memcached` cookbook (maintained by Chef). The following example is from the `memcached` cookbook and shows how to use a combination of the `package`, `service`, and `port` InSpec audit resources to test if Memcached is installed, enabled, and running:
76
-
77
- describe package('memcached') do
78
- it { should be_installed }
79
- end
80
-
81
- describe service('memcached') do
82
- it { should be_installed }
83
- it { should be_enabled }
84
- it { should be_running }
85
- end
86
-
87
- describe port(11_211) do
88
- it { should be_listening }
89
- end
90
-
91
- <br>
92
-
93
- ## Matchers
94
-
95
- For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
96
-
97
- ### be_held
98
-
99
- The `be_held` matcher tests if the named package is "held". On dpkg platforms, a "held" package
100
- will not be upgraded to a later version.
101
-
102
- it { should be_held }
103
-
104
- ### be_installed
105
-
106
- The `be_installed` matcher tests if the named package is installed on the system:
107
-
108
- it { should be_installed }
109
-
110
- ### version
111
-
112
- The `version` matcher tests if the named package version is on the system:
113
-
114
- its('version') { should eq '1.2.3' }
115
-
116
- You can also use the `cmp OPERATOR` matcher to perform comparisions using the version attribute:
117
-
118
- its('version') { should cmp >= '7.35.0-1ubuntu3.10' }
119
-
120
- `cmp` understands version numbers using Gem::Version, and can use the operators `==, <, <=, >=, and >`. It will compare versions by each segment, not as a string - so '7.4' is smaller than '7.30', for example.
1
+ ---
2
+ title: About the package Resource
3
+ platform: os
4
+ ---
5
+
6
+ # package
7
+
8
+ Use the `package` InSpec audit resource to test if the named package and/or package version is installed on the system.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `package` resource block declares a package and (optionally) a package version:
15
+
16
+ describe package('name') do
17
+ it { should be_installed }
18
+ end
19
+
20
+ where
21
+
22
+ * `('name')` must specify the name of a package, such as `'nginx'`
23
+ * `be_installed` is a valid matcher for this resource
24
+
25
+ <br>
26
+
27
+ ## Examples
28
+
29
+ The following examples show how to use this InSpec audit resource.
30
+
31
+ ### Test if NGINX version 1.9.5 is installed
32
+
33
+ describe package('nginx') do
34
+ it { should be_installed }
35
+ its('version') { should eq '1.9.5' }
36
+ end
37
+
38
+ ### Test that a package is not installed
39
+
40
+ describe package('some_package') do
41
+ it { should_not be_installed }
42
+ end
43
+
44
+ ### Test if telnet is installed
45
+
46
+ describe package('telnetd') do
47
+ it { should_not be_installed }
48
+ end
49
+
50
+ describe inetd_conf do
51
+ its('telnet') { should eq nil }
52
+ end
53
+
54
+ ### Test if ClamAV (an antivirus engine) is installed and running
55
+
56
+ describe package('clamav') do
57
+ it { should be_installed }
58
+ its('version') { should eq '0.98.7' }
59
+ end
60
+
61
+ describe service('clamd') do
62
+ it { should_not be_enabled }
63
+ it { should_not be_installed }
64
+ it { should_not be_running }
65
+ end
66
+
67
+ ### Verify if some_package is installed according to my_rpmdb
68
+
69
+ describe package('some_package', rpm_dbpath: '/var/lib/my_rpmdb') do
70
+ it { should be_installed }
71
+ end
72
+
73
+ ### Verify if Memcached is installed, enabled, and running
74
+
75
+ Memcached is an in-memory key-value store that helps improve the performance of database-driven websites and can be installed, maintained, and tested using the `memcached` cookbook (maintained by Chef). The following example is from the `memcached` cookbook and shows how to use a combination of the `package`, `service`, and `port` InSpec audit resources to test if Memcached is installed, enabled, and running:
76
+
77
+ describe package('memcached') do
78
+ it { should be_installed }
79
+ end
80
+
81
+ describe service('memcached') do
82
+ it { should be_installed }
83
+ it { should be_enabled }
84
+ it { should be_running }
85
+ end
86
+
87
+ describe port(11_211) do
88
+ it { should be_listening }
89
+ end
90
+
91
+ <br>
92
+
93
+ ## Matchers
94
+
95
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
96
+
97
+ ### be_held
98
+
99
+ The `be_held` matcher tests if the named package is "held". On dpkg platforms, a "held" package
100
+ will not be upgraded to a later version.
101
+
102
+ it { should be_held }
103
+
104
+ ### be_installed
105
+
106
+ The `be_installed` matcher tests if the named package is installed on the system:
107
+
108
+ it { should be_installed }
109
+
110
+ ### version
111
+
112
+ The `version` matcher tests if the named package version is on the system:
113
+
114
+ its('version') { should eq '1.2.3' }
115
+
116
+ You can also use the `cmp OPERATOR` matcher to perform comparisions using the version attribute:
117
+
118
+ its('version') { should cmp >= '7.35.0-1ubuntu3.10' }
119
+
120
+ `cmp` understands version numbers using Gem::Version, and can use the operators `==, <, <=, >=, and >`. It will compare versions by each segment, not as a string - so '7.4' is smaller than '7.30', for example.