specinfra-cisco 2.40.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 (390) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +21 -0
  3. data/.gitmodules +3 -0
  4. data/.travis.yml +19 -0
  5. data/Gemfile +4 -0
  6. data/Guardfile +12 -0
  7. data/LICENSE.txt +22 -0
  8. data/README.md +29 -0
  9. data/Rakefile +43 -0
  10. data/appveyor.yml +56 -0
  11. data/examples/multiple_backends.rb +46 -0
  12. data/lib/specinfra.rb +45 -0
  13. data/lib/specinfra/backend.rb +12 -0
  14. data/lib/specinfra/backend/base.rb +55 -0
  15. data/lib/specinfra/backend/cmd.rb +68 -0
  16. data/lib/specinfra/backend/docker.rb +112 -0
  17. data/lib/specinfra/backend/dockerfile.rb +32 -0
  18. data/lib/specinfra/backend/exec.rb +152 -0
  19. data/lib/specinfra/backend/lxc.rb +45 -0
  20. data/lib/specinfra/backend/powershell/command.rb +40 -0
  21. data/lib/specinfra/backend/powershell/script_helper.rb +86 -0
  22. data/lib/specinfra/backend/powershell/support/check_file_access_rules.ps1 +8 -0
  23. data/lib/specinfra/backend/powershell/support/crop_text.ps1 +11 -0
  24. data/lib/specinfra/backend/powershell/support/find_group.ps1 +8 -0
  25. data/lib/specinfra/backend/powershell/support/find_iis_component.ps1 +90 -0
  26. data/lib/specinfra/backend/powershell/support/find_installed_application.ps1 +37 -0
  27. data/lib/specinfra/backend/powershell/support/find_installed_hot_fix.ps1 +18 -0
  28. data/lib/specinfra/backend/powershell/support/find_scheduled_task.ps1 +7 -0
  29. data/lib/specinfra/backend/powershell/support/find_service.ps1 +5 -0
  30. data/lib/specinfra/backend/powershell/support/find_user.ps1 +8 -0
  31. data/lib/specinfra/backend/powershell/support/find_usergroup.ps1 +9 -0
  32. data/lib/specinfra/backend/powershell/support/is_port_listening.ps1 +14 -0
  33. data/lib/specinfra/backend/powershell/support/is_remote_port_listening.ps1 +51 -0
  34. data/lib/specinfra/backend/powershell/support/list_windows_features.ps1 +68 -0
  35. data/lib/specinfra/backend/shell_script.rb +29 -0
  36. data/lib/specinfra/backend/ssh.rb +182 -0
  37. data/lib/specinfra/backend/telnet.rb +111 -0
  38. data/lib/specinfra/backend/winrm.rb +29 -0
  39. data/lib/specinfra/command.rb +304 -0
  40. data/lib/specinfra/command/aix.rb +1 -0
  41. data/lib/specinfra/command/aix/base.rb +2 -0
  42. data/lib/specinfra/command/aix/base/file.rb +21 -0
  43. data/lib/specinfra/command/aix/base/group.rb +8 -0
  44. data/lib/specinfra/command/aix/base/host.rb +17 -0
  45. data/lib/specinfra/command/aix/base/inventory.rb +38 -0
  46. data/lib/specinfra/command/aix/base/package.rb +11 -0
  47. data/lib/specinfra/command/aix/base/port.rb +8 -0
  48. data/lib/specinfra/command/aix/base/service.rb +11 -0
  49. data/lib/specinfra/command/aix/base/user.rb +15 -0
  50. data/lib/specinfra/command/alpine.rb +1 -0
  51. data/lib/specinfra/command/alpine/base.rb +2 -0
  52. data/lib/specinfra/command/alpine/base/package.rb +19 -0
  53. data/lib/specinfra/command/alpine/base/process.rb +20 -0
  54. data/lib/specinfra/command/alpine/base/service.rb +11 -0
  55. data/lib/specinfra/command/amazon.rb +2 -0
  56. data/lib/specinfra/command/amazon/base.rb +2 -0
  57. data/lib/specinfra/command/arch.rb +1 -0
  58. data/lib/specinfra/command/arch/base.rb +11 -0
  59. data/lib/specinfra/command/arch/base/file.rb +14 -0
  60. data/lib/specinfra/command/arch/base/package.rb +30 -0
  61. data/lib/specinfra/command/arch/base/service.rb +5 -0
  62. data/lib/specinfra/command/base.rb +21 -0
  63. data/lib/specinfra/command/base/bond.rb +2 -0
  64. data/lib/specinfra/command/base/bridge.rb +2 -0
  65. data/lib/specinfra/command/base/cron.rb +17 -0
  66. data/lib/specinfra/command/base/file.rb +179 -0
  67. data/lib/specinfra/command/base/fstab.rb +2 -0
  68. data/lib/specinfra/command/base/group.rb +26 -0
  69. data/lib/specinfra/command/base/host.rb +25 -0
  70. data/lib/specinfra/command/base/interface.rb +2 -0
  71. data/lib/specinfra/command/base/inventory.rb +2 -0
  72. data/lib/specinfra/command/base/ip6tables.rb +2 -0
  73. data/lib/specinfra/command/base/ipfilter.rb +2 -0
  74. data/lib/specinfra/command/base/ipnat.rb +2 -0
  75. data/lib/specinfra/command/base/iptables.rb +2 -0
  76. data/lib/specinfra/command/base/kernel_module.rb +2 -0
  77. data/lib/specinfra/command/base/localhost.rb +7 -0
  78. data/lib/specinfra/command/base/lxc_container.rb +2 -0
  79. data/lib/specinfra/command/base/mail_alias.rb +12 -0
  80. data/lib/specinfra/command/base/package.rb +51 -0
  81. data/lib/specinfra/command/base/port.rb +10 -0
  82. data/lib/specinfra/command/base/ppa.rb +2 -0
  83. data/lib/specinfra/command/base/process.rb +15 -0
  84. data/lib/specinfra/command/base/routing_table.rb +9 -0
  85. data/lib/specinfra/command/base/selinux.rb +2 -0
  86. data/lib/specinfra/command/base/selinux_module.rb +2 -0
  87. data/lib/specinfra/command/base/service.rb +15 -0
  88. data/lib/specinfra/command/base/user.rb +94 -0
  89. data/lib/specinfra/command/base/yumrepo.rb +3 -0
  90. data/lib/specinfra/command/base/zfs.rb +1 -0
  91. data/lib/specinfra/command/coreos.rb +1 -0
  92. data/lib/specinfra/command/coreos/base.rb +2 -0
  93. data/lib/specinfra/command/coreos/base/service.rb +5 -0
  94. data/lib/specinfra/command/cumulus.rb +11 -0
  95. data/lib/specinfra/command/cumulus/base.rb +2 -0
  96. data/lib/specinfra/command/cumulus/base/ppa.rb +17 -0
  97. data/lib/specinfra/command/cumulus/base/service.rb +7 -0
  98. data/lib/specinfra/command/darwin.rb +1 -0
  99. data/lib/specinfra/command/darwin/base.rb +2 -0
  100. data/lib/specinfra/command/darwin/base/file.rb +47 -0
  101. data/lib/specinfra/command/darwin/base/host.rb +11 -0
  102. data/lib/specinfra/command/darwin/base/inventory.rb +28 -0
  103. data/lib/specinfra/command/darwin/base/package.rb +41 -0
  104. data/lib/specinfra/command/darwin/base/port.rb +8 -0
  105. data/lib/specinfra/command/darwin/base/service.rb +11 -0
  106. data/lib/specinfra/command/darwin/base/user.rb +15 -0
  107. data/lib/specinfra/command/debian.rb +1 -0
  108. data/lib/specinfra/command/debian/base.rb +11 -0
  109. data/lib/specinfra/command/debian/base/package.rb +33 -0
  110. data/lib/specinfra/command/debian/base/ppa.rb +2 -0
  111. data/lib/specinfra/command/debian/base/service.rb +32 -0
  112. data/lib/specinfra/command/debian/v8.rb +2 -0
  113. data/lib/specinfra/command/debian/v8/service.rb +5 -0
  114. data/lib/specinfra/command/esxi.rb +1 -0
  115. data/lib/specinfra/command/esxi/base.rb +2 -0
  116. data/lib/specinfra/command/esxi/base/package.rb +7 -0
  117. data/lib/specinfra/command/fedora.rb +1 -0
  118. data/lib/specinfra/command/fedora/base.rb +2 -0
  119. data/lib/specinfra/command/fedora/base/service.rb +11 -0
  120. data/lib/specinfra/command/fedora/v15.rb +2 -0
  121. data/lib/specinfra/command/fedora/v15/service.rb +5 -0
  122. data/lib/specinfra/command/freebsd.rb +1 -0
  123. data/lib/specinfra/command/freebsd/base.rb +3 -0
  124. data/lib/specinfra/command/freebsd/base/file.rb +42 -0
  125. data/lib/specinfra/command/freebsd/base/interface.rb +35 -0
  126. data/lib/specinfra/command/freebsd/base/inventory.rb +28 -0
  127. data/lib/specinfra/command/freebsd/base/package.rb +19 -0
  128. data/lib/specinfra/command/freebsd/base/port.rb +8 -0
  129. data/lib/specinfra/command/freebsd/base/routing_table.rb +9 -0
  130. data/lib/specinfra/command/freebsd/base/service.rb +11 -0
  131. data/lib/specinfra/command/freebsd/base/user.rb +20 -0
  132. data/lib/specinfra/command/freebsd/v10.rb +2 -0
  133. data/lib/specinfra/command/freebsd/v10/package.rb +31 -0
  134. data/lib/specinfra/command/freebsd/v6.rb +2 -0
  135. data/lib/specinfra/command/freebsd/v6/user.rb +19 -0
  136. data/lib/specinfra/command/gentoo.rb +1 -0
  137. data/lib/specinfra/command/gentoo/base.rb +2 -0
  138. data/lib/specinfra/command/gentoo/base/package.rb +7 -0
  139. data/lib/specinfra/command/gentoo/base/service.rb +19 -0
  140. data/lib/specinfra/command/linux.rb +1 -0
  141. data/lib/specinfra/command/linux/base.rb +2 -0
  142. data/lib/specinfra/command/linux/base/bond.rb +11 -0
  143. data/lib/specinfra/command/linux/base/bridge.rb +11 -0
  144. data/lib/specinfra/command/linux/base/file.rb +20 -0
  145. data/lib/specinfra/command/linux/base/fstab.rb +9 -0
  146. data/lib/specinfra/command/linux/base/interface.rb +38 -0
  147. data/lib/specinfra/command/linux/base/inventory.rb +31 -0
  148. data/lib/specinfra/command/linux/base/ip6tables.rb +15 -0
  149. data/lib/specinfra/command/linux/base/iptables.rb +12 -0
  150. data/lib/specinfra/command/linux/base/kernel_module.rb +7 -0
  151. data/lib/specinfra/command/linux/base/lxc_container.rb +11 -0
  152. data/lib/specinfra/command/linux/base/package.rb +2 -0
  153. data/lib/specinfra/command/linux/base/ppa.rb +2 -0
  154. data/lib/specinfra/command/linux/base/selinux.rb +12 -0
  155. data/lib/specinfra/command/linux/base/selinux_module.rb +16 -0
  156. data/lib/specinfra/command/linux/base/service.rb +2 -0
  157. data/lib/specinfra/command/linux/base/yumrepo.rb +2 -0
  158. data/lib/specinfra/command/linux/base/zfs.rb +5 -0
  159. data/lib/specinfra/command/module.rb +7 -0
  160. data/lib/specinfra/command/module/service/daemontools.rb +46 -0
  161. data/lib/specinfra/command/module/service/delegator.rb +20 -0
  162. data/lib/specinfra/command/module/service/god.rb +13 -0
  163. data/lib/specinfra/command/module/service/init.rb +42 -0
  164. data/lib/specinfra/command/module/service/monit.rb +13 -0
  165. data/lib/specinfra/command/module/service/runit.rb +13 -0
  166. data/lib/specinfra/command/module/service/supervisor.rb +13 -0
  167. data/lib/specinfra/command/module/service/systemd.rb +41 -0
  168. data/lib/specinfra/command/module/service/upstart.rb +13 -0
  169. data/lib/specinfra/command/module/ss.rb +39 -0
  170. data/lib/specinfra/command/module/systemd.rb +12 -0
  171. data/lib/specinfra/command/module/zfs.rb +25 -0
  172. data/lib/specinfra/command/nexus.rb +1 -0
  173. data/lib/specinfra/command/nexus/base.rb +2 -0
  174. data/lib/specinfra/command/nexus/base/file.rb +8 -0
  175. data/lib/specinfra/command/nexus/base/host.rb +2 -0
  176. data/lib/specinfra/command/nexus/base/iptables.rb +11 -0
  177. data/lib/specinfra/command/nexus/base/package.rb +30 -0
  178. data/lib/specinfra/command/nexus/base/port.rb +5 -0
  179. data/lib/specinfra/command/nexus/base/service.rb +2 -0
  180. data/lib/specinfra/command/nexus/base/yumrepo.rb +11 -0
  181. data/lib/specinfra/command/nexus/v7.rb +3 -0
  182. data/lib/specinfra/command/nixos.rb +1 -0
  183. data/lib/specinfra/command/nixos/base.rb +2 -0
  184. data/lib/specinfra/command/nixos/base/package.rb +17 -0
  185. data/lib/specinfra/command/nixos/base/service.rb +5 -0
  186. data/lib/specinfra/command/openbsd.rb +1 -0
  187. data/lib/specinfra/command/openbsd/base.rb +4 -0
  188. data/lib/specinfra/command/openbsd/base/bond.rb +11 -0
  189. data/lib/specinfra/command/openbsd/base/bridge.rb +11 -0
  190. data/lib/specinfra/command/openbsd/base/file.rb +47 -0
  191. data/lib/specinfra/command/openbsd/base/fstab.rb +9 -0
  192. data/lib/specinfra/command/openbsd/base/interface.rb +40 -0
  193. data/lib/specinfra/command/openbsd/base/inventory.rb +28 -0
  194. data/lib/specinfra/command/openbsd/base/mail_alias.rb +7 -0
  195. data/lib/specinfra/command/openbsd/base/package.rb +15 -0
  196. data/lib/specinfra/command/openbsd/base/port.rb +7 -0
  197. data/lib/specinfra/command/openbsd/base/routing_table.rb +9 -0
  198. data/lib/specinfra/command/openbsd/base/service.rb +11 -0
  199. data/lib/specinfra/command/openbsd/base/user.rb +11 -0
  200. data/lib/specinfra/command/opensuse.rb +1 -0
  201. data/lib/specinfra/command/opensuse/base.rb +3 -0
  202. data/lib/specinfra/command/opensuse/base/service.rb +12 -0
  203. data/lib/specinfra/command/plamo.rb +1 -0
  204. data/lib/specinfra/command/plamo/base.rb +3 -0
  205. data/lib/specinfra/command/plamo/base/package.rb +11 -0
  206. data/lib/specinfra/command/plamo/base/service.rb +14 -0
  207. data/lib/specinfra/command/redhat.rb +1 -0
  208. data/lib/specinfra/command/redhat/base.rb +2 -0
  209. data/lib/specinfra/command/redhat/base/file.rb +8 -0
  210. data/lib/specinfra/command/redhat/base/host.rb +2 -0
  211. data/lib/specinfra/command/redhat/base/iptables.rb +11 -0
  212. data/lib/specinfra/command/redhat/base/package.rb +39 -0
  213. data/lib/specinfra/command/redhat/base/port.rb +2 -0
  214. data/lib/specinfra/command/redhat/base/service.rb +2 -0
  215. data/lib/specinfra/command/redhat/base/yumrepo.rb +13 -0
  216. data/lib/specinfra/command/redhat/v5.rb +3 -0
  217. data/lib/specinfra/command/redhat/v5/iptables.rb +10 -0
  218. data/lib/specinfra/command/redhat/v7.rb +3 -0
  219. data/lib/specinfra/command/redhat/v7/host.rb +15 -0
  220. data/lib/specinfra/command/redhat/v7/port.rb +5 -0
  221. data/lib/specinfra/command/redhat/v7/service.rb +5 -0
  222. data/lib/specinfra/command/smartos.rb +1 -0
  223. data/lib/specinfra/command/smartos/base.rb +3 -0
  224. data/lib/specinfra/command/smartos/base/file.rb +11 -0
  225. data/lib/specinfra/command/smartos/base/package.rb +15 -0
  226. data/lib/specinfra/command/smartos/base/service.rb +11 -0
  227. data/lib/specinfra/command/solaris.rb +1 -0
  228. data/lib/specinfra/command/solaris/base.rb +2 -0
  229. data/lib/specinfra/command/solaris/base/cron.rb +12 -0
  230. data/lib/specinfra/command/solaris/base/file.rb +20 -0
  231. data/lib/specinfra/command/solaris/base/group.rb +8 -0
  232. data/lib/specinfra/command/solaris/base/host.rb +14 -0
  233. data/lib/specinfra/command/solaris/base/inventory.rb +37 -0
  234. data/lib/specinfra/command/solaris/base/ipfilter.rb +7 -0
  235. data/lib/specinfra/command/solaris/base/ipnat.rb +14 -0
  236. data/lib/specinfra/command/solaris/base/package.rb +14 -0
  237. data/lib/specinfra/command/solaris/base/port.rb +13 -0
  238. data/lib/specinfra/command/solaris/base/service.rb +24 -0
  239. data/lib/specinfra/command/solaris/base/user.rb +15 -0
  240. data/lib/specinfra/command/solaris/base/zfs.rb +13 -0
  241. data/lib/specinfra/command/solaris/v10.rb +2 -0
  242. data/lib/specinfra/command/solaris/v10/file.rb +42 -0
  243. data/lib/specinfra/command/solaris/v10/group.rb +7 -0
  244. data/lib/specinfra/command/solaris/v10/host.rb +13 -0
  245. data/lib/specinfra/command/solaris/v10/package.rb +11 -0
  246. data/lib/specinfra/command/solaris/v10/user.rb +18 -0
  247. data/lib/specinfra/command/suse.rb +1 -0
  248. data/lib/specinfra/command/suse/base.rb +2 -0
  249. data/lib/specinfra/command/suse/base/package.rb +21 -0
  250. data/lib/specinfra/command/suse/base/service.rb +14 -0
  251. data/lib/specinfra/command/ubuntu.rb +11 -0
  252. data/lib/specinfra/command/ubuntu/base.rb +2 -0
  253. data/lib/specinfra/command/ubuntu/base/ppa.rb +17 -0
  254. data/lib/specinfra/command/ubuntu/base/service.rb +7 -0
  255. data/lib/specinfra/command/ubuntu/v15.rb +1 -0
  256. data/lib/specinfra/command/ubuntu/v15/service.rb +5 -0
  257. data/lib/specinfra/command/windows.rb +1 -0
  258. data/lib/specinfra/command/windows/base.rb +22 -0
  259. data/lib/specinfra/command/windows/base/feature.rb +17 -0
  260. data/lib/specinfra/command/windows/base/file.rb +113 -0
  261. data/lib/specinfra/command/windows/base/group.rb +11 -0
  262. data/lib/specinfra/command/windows/base/host.rb +25 -0
  263. data/lib/specinfra/command/windows/base/hot_fix.rb +19 -0
  264. data/lib/specinfra/command/windows/base/iis_app_pool.rb +66 -0
  265. data/lib/specinfra/command/windows/base/iis_website.rb +59 -0
  266. data/lib/specinfra/command/windows/base/package.rb +11 -0
  267. data/lib/specinfra/command/windows/base/port.rb +17 -0
  268. data/lib/specinfra/command/windows/base/process.rb +31 -0
  269. data/lib/specinfra/command/windows/base/registry_key.rb +53 -0
  270. data/lib/specinfra/command/windows/base/scheduled_task.rb +10 -0
  271. data/lib/specinfra/command/windows/base/service.rb +31 -0
  272. data/lib/specinfra/command/windows/base/user.rb +22 -0
  273. data/lib/specinfra/command_factory.rb +83 -0
  274. data/lib/specinfra/command_result.rb +28 -0
  275. data/lib/specinfra/configuration.rb +62 -0
  276. data/lib/specinfra/core.rb +18 -0
  277. data/lib/specinfra/ec2_metadata.rb +93 -0
  278. data/lib/specinfra/ext.rb +2 -0
  279. data/lib/specinfra/ext/class.rb +9 -0
  280. data/lib/specinfra/ext/string.rb +14 -0
  281. data/lib/specinfra/helper.rb +6 -0
  282. data/lib/specinfra/helper/configuration.rb +41 -0
  283. data/lib/specinfra/helper/detect_os.rb +38 -0
  284. data/lib/specinfra/helper/detect_os/aix.rb +12 -0
  285. data/lib/specinfra/helper/detect_os/alpine.rb +8 -0
  286. data/lib/specinfra/helper/detect_os/arch.rb +7 -0
  287. data/lib/specinfra/helper/detect_os/coreos.rb +18 -0
  288. data/lib/specinfra/helper/detect_os/darwin.rb +11 -0
  289. data/lib/specinfra/helper/detect_os/debian.rb +26 -0
  290. data/lib/specinfra/helper/detect_os/esxi.rb +10 -0
  291. data/lib/specinfra/helper/detect_os/freebsd.rb +11 -0
  292. data/lib/specinfra/helper/detect_os/gentoo.rb +7 -0
  293. data/lib/specinfra/helper/detect_os/nexus.rb +14 -0
  294. data/lib/specinfra/helper/detect_os/nixos.rb +7 -0
  295. data/lib/specinfra/helper/detect_os/openbsd.rb +11 -0
  296. data/lib/specinfra/helper/detect_os/plamo.rb +7 -0
  297. data/lib/specinfra/helper/detect_os/redhat.rb +31 -0
  298. data/lib/specinfra/helper/detect_os/solaris.rb +15 -0
  299. data/lib/specinfra/helper/detect_os/suse.rb +15 -0
  300. data/lib/specinfra/helper/docker.rb +11 -0
  301. data/lib/specinfra/helper/host_inventory.rb +12 -0
  302. data/lib/specinfra/helper/lxc.rb +11 -0
  303. data/lib/specinfra/helper/os.rb +35 -0
  304. data/lib/specinfra/helper/properties.rb +14 -0
  305. data/lib/specinfra/helper/set.rb +10 -0
  306. data/lib/specinfra/host_inventory.rb +68 -0
  307. data/lib/specinfra/host_inventory/base.rb +14 -0
  308. data/lib/specinfra/host_inventory/cpu.rb +77 -0
  309. data/lib/specinfra/host_inventory/domain.rb +16 -0
  310. data/lib/specinfra/host_inventory/ec2.rb +11 -0
  311. data/lib/specinfra/host_inventory/filesystem.rb +31 -0
  312. data/lib/specinfra/host_inventory/fqdn.rb +16 -0
  313. data/lib/specinfra/host_inventory/hostname.rb +16 -0
  314. data/lib/specinfra/host_inventory/kernel.rb +27 -0
  315. data/lib/specinfra/host_inventory/memory.rb +83 -0
  316. data/lib/specinfra/host_inventory/platform.rb +9 -0
  317. data/lib/specinfra/host_inventory/platform_version.rb +15 -0
  318. data/lib/specinfra/host_inventory/virtualization.rb +39 -0
  319. data/lib/specinfra/processor.rb +229 -0
  320. data/lib/specinfra/properties.rb +17 -0
  321. data/lib/specinfra/runner.rb +35 -0
  322. data/lib/specinfra/version.rb +3 -0
  323. data/spec/backend/exec/build_command_spec.rb +148 -0
  324. data/spec/backend/exec/child_process_spec.rb +18 -0
  325. data/spec/backend/exec/env_spec.rb +16 -0
  326. data/spec/backend/exec/read_noblock_spec.rb +50 -0
  327. data/spec/backend/exec/stdxxx_handler_spec.rb +25 -0
  328. data/spec/backend/ssh/build_command_spec.rb +115 -0
  329. data/spec/command/amazon/interface_spec.rb +9 -0
  330. data/spec/command/amazon/package_spec.rb +7 -0
  331. data/spec/command/amazon/service_spec.rb +28 -0
  332. data/spec/command/base/file_spec.rb +91 -0
  333. data/spec/command/base/group_spec.rb +16 -0
  334. data/spec/command/base/localhost_spec.rb +7 -0
  335. data/spec/command/base/package_spec.rb +11 -0
  336. data/spec/command/base/user_spec.rb +59 -0
  337. data/spec/command/darwin/file_spec.rb +16 -0
  338. data/spec/command/darwin/user_spec.rb +15 -0
  339. data/spec/command/debian/service_spec.rb +28 -0
  340. data/spec/command/esxi/package_spec.rb +8 -0
  341. data/spec/command/factory_spec.rb +30 -0
  342. data/spec/command/freebsd/file_spec.rb +12 -0
  343. data/spec/command/freebsd/interface_spec.rb +28 -0
  344. data/spec/command/linux/bond_spec.rb +12 -0
  345. data/spec/command/linux/bridge_spec.rb +12 -0
  346. data/spec/command/linux/file_spec.rb +12 -0
  347. data/spec/command/linux/interface_spec.rb +24 -0
  348. data/spec/command/linux/inventory_spec.rb +15 -0
  349. data/spec/command/linux/ip6tables_spec.rb +7 -0
  350. data/spec/command/linux/selinux_module_spec.rb +12 -0
  351. data/spec/command/linux/selinux_spec.rb +8 -0
  352. data/spec/command/module/service/daemontools_spec.rb +18 -0
  353. data/spec/command/module/service/init_spec.rb +18 -0
  354. data/spec/command/module/service/systemd_spec.rb +16 -0
  355. data/spec/command/module/ss_spec.rb +28 -0
  356. data/spec/command/module/systemd_spec.rb +19 -0
  357. data/spec/command/module/zfs_spec.rb +6 -0
  358. data/spec/command/openbsd/file_spec.rb +12 -0
  359. data/spec/command/openbsd/interface_spec.rb +28 -0
  360. data/spec/command/redhat/package_spec.rb +8 -0
  361. data/spec/command/redhat/service_spec.rb +28 -0
  362. data/spec/command/redhat7/host_spec.rb +13 -0
  363. data/spec/command/redhat7/interface_spec.rb +9 -0
  364. data/spec/command/redhat7/port_spec.rb +8 -0
  365. data/spec/command/redhat7/service_spec.rb +32 -0
  366. data/spec/command/ubuntu/ppa_spec.rb +12 -0
  367. data/spec/command/windows/registry_key_spec.rb +36 -0
  368. data/spec/configuration_spec.rb +14 -0
  369. data/spec/helper/detect_os/aix_spec.rb +58 -0
  370. data/spec/helper/detect_os/darwin_spec.rb +42 -0
  371. data/spec/helper/detect_os/esxi_spec.rb +22 -0
  372. data/spec/helper/detect_os/freebsd_spec.rb +42 -0
  373. data/spec/helper/detect_os/openbsd_spec.rb +42 -0
  374. data/spec/helper/os_spec.rb +58 -0
  375. data/spec/helper/properties_spec.rb +11 -0
  376. data/spec/helper/set_spec.rb +14 -0
  377. data/spec/host_inventory/aix/filesystem_spec.rb +107 -0
  378. data/spec/host_inventory/darwin/filesystem_spec.rb +63 -0
  379. data/spec/host_inventory/freebsd/filesystem_spec.rb +123 -0
  380. data/spec/host_inventory/linux/cpu_spec.rb +123 -0
  381. data/spec/host_inventory/linux/filesystem_spec.rb +53 -0
  382. data/spec/host_inventory/linux/kernel_spec.rb +33 -0
  383. data/spec/host_inventory/linux/memory_spec.rb +145 -0
  384. data/spec/host_inventory/linux/virtualization_docker_spec.rb +134 -0
  385. data/spec/host_inventory/linux/virtualization_kvm_spec.rb +132 -0
  386. data/spec/host_inventory/openbsd/filesystem_spec.rb +43 -0
  387. data/spec/host_inventory/solaris/filesystem_spec.rb +137 -0
  388. data/spec/spec_helper.rb +26 -0
  389. data/specinfra-cisco.gemspec +28 -0
  390. metadata +613 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d09c36dc095d0a42ceac4b149746d91ad6db6008
4
+ data.tar.gz: b78b024cd01f1b2a994a7a270dc01883a7836cd3
5
+ SHA512:
6
+ metadata.gz: 14821d240deeaf6518e178400fa0db34ac0d2ae43bef9a06f589d7625b46737816348ec55ca4c743e5fb4d67b1769e8b568e7f11e50c52ac209fc78ed73e9300
7
+ data.tar.gz: 109360950c464ae2dd967d80a0944abc17fd86a49e7e4e67509c8ba1787799795a139bbd590c5241f76928fee9fa8168960142bbb9768dc324686a689eb92b6a
data/.gitignore ADDED
@@ -0,0 +1,21 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ .idea/
19
+ .ruby-gemset
20
+ .ruby-version
21
+ .rvmrc
data/.gitmodules ADDED
@@ -0,0 +1,3 @@
1
+ [submodule "integration-test"]
2
+ path = integration-test
3
+ url = https://github.com/serverspec/serverspec-integration-test.git
data/.travis.yml ADDED
@@ -0,0 +1,19 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 1.8.7
5
+ - 1.9.3
6
+ - 2.0.0
7
+ - 2.1.1
8
+
9
+ before_install:
10
+ - gem update bundler
11
+
12
+ script:
13
+ - bundle exec rake spec
14
+
15
+ sudo: false
16
+ cache: bundler
17
+ notifications:
18
+ slack:
19
+ secure: OhClKo2Gn26gevN773CRR2NAHzmkrzGrVTHsAKm4dgNFqnaBVZGNv2kzjAFsy0CEjZJw3433NtaJdrWpLozdHFA5g7fhOTqB2y7Oh+8PsoS4qWsosKcjtCYt7BmNbEFkGaHKAdQjO/vGFml7tAOk/DtVRnfX6QgVUBjky2ao7XM=
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in specinfra.gemspec
4
+ gemspec
data/Guardfile ADDED
@@ -0,0 +1,12 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard :rspec, cmd: 'bundle exec rspec', :all_on_start => false do
5
+ watch(%r{^spec/(.+)_spec\.rb$})
6
+ watch(%r{^(recipes)/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
7
+ watch('spec/spec_helper.rb') { 'spec' }
8
+ end
9
+ #guard :rspec do
10
+ # watch(%r{^spec/.+_spec\.rb$})
11
+ # watch('spec/spec_helper.rb') { 'spec' }
12
+ #end
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Gosuke Miyashita
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Specinfra
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'specinfra'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install specinfra
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,43 @@
1
+ require "bundler/gem_tasks"
2
+ begin
3
+ require "rspec/core/rake_task"
4
+ require "octorelease"
5
+ rescue LoadError
6
+ end
7
+
8
+ if defined?(RSpec)
9
+ task :spec => 'spec:all'
10
+
11
+ namespace :spec do
12
+ task :all => [ :helper, :backend, :configuration, :command, :host_inventory ]
13
+
14
+ RSpec::Core::RakeTask.new(:helper) do |t|
15
+ t.pattern = "spec/helper/*_spec.rb"
16
+ end
17
+
18
+ task :backend => 'backend:all'
19
+ namespace :backend do
20
+ backends = %w[exec ssh]
21
+
22
+ task :all => backends
23
+
24
+ backends.each do |backend|
25
+ RSpec::Core::RakeTask.new(backend) do |t|
26
+ t.pattern = "spec/backend/#{backend}/*_spec.rb"
27
+ end
28
+ end
29
+ end
30
+
31
+ RSpec::Core::RakeTask.new(:configuration) do |t|
32
+ t.pattern = "spec/configuration_spec.rb"
33
+ end
34
+
35
+ RSpec::Core::RakeTask.new(:command) do |t|
36
+ t.pattern = "spec/command/**/*.rb"
37
+ end
38
+
39
+ RSpec::Core::RakeTask.new(:host_inventory) do |t|
40
+ t.pattern = "spec/host_inventory/**/*_spec.rb"
41
+ end
42
+ end
43
+ end
data/appveyor.yml ADDED
@@ -0,0 +1,56 @@
1
+ version: "{build}"
2
+
3
+ os: Windows Server 2012
4
+ platform:
5
+ - x64
6
+
7
+ environment:
8
+ bundle_gemfile: integration-test/Gemfile.winrm
9
+ bundler_url: https://rubygems.org/downloads/bundler-1.9.9.gem
10
+
11
+ matrix:
12
+ - ruby_version: "193"
13
+ - ruby_version: "200"
14
+ - ruby_version: "21"
15
+ - ruby_version: "22"
16
+
17
+ matrix:
18
+ allow_failures:
19
+ - ruby_version: "22" # waiting for net-ssh update
20
+
21
+ clone_depth: 5
22
+
23
+ cache:
24
+ - C:\Ruby193\lib\ruby\gems\1.9.1
25
+ - C:\Ruby193\bin
26
+ - C:\Ruby200\lib\ruby\gems\2.0.0
27
+ - C:\Ruby200\bin
28
+ - C:\Ruby21\lib\ruby\gems\2.1.0
29
+ - C:\Ruby21\bin
30
+ - C:\Ruby22\lib\ruby\gems\2.2.0
31
+ - C:\Ruby22\bin
32
+
33
+ install:
34
+ - git submodule update --init --recursive
35
+ - ps: Enable-PSRemoting -Force
36
+ - winrm quickconfig -q
37
+ - winrm set winrm/config/client @{TrustedHosts="*"}
38
+ - winrm set winrm/config/client/auth @{Basic="true"}
39
+ - winrm set winrm/config/service/auth @{Basic="true"}
40
+ - winrm set winrm/config/service @{AllowUnencrypted="true"}
41
+ - SET PATH=C:\Ruby%ruby_version%\bin;%PATH%
42
+ - echo %PATH%
43
+ - ruby --version
44
+ - gem --version
45
+ - appveyor DownloadFile -Url %bundler_url% -FileName bundler.gem
46
+ - gem install --local bundler.gem --no-ri --no-rdoc ## appveyor often stops `gem install bundler`..?
47
+
48
+ build_script:
49
+ - ruby -rfileutils -e 'FileUtils.rm_r(File.join(Gem.dir, "cache", "bundler")) if Dir.exists?(File.join(Gem.dir, "cache", "bundler"))'
50
+ - bundle install --jobs 3 --retry 3
51
+ - net user
52
+ - net localgroup
53
+
54
+ test_script:
55
+ - net user appveyor %WINDOWS_PASSWORD% # set by webui
56
+ - bundle exec rspec -fd --backtrace -r .\integration-test\winrm\spec_helper.rb .\integration-test\winrm
@@ -0,0 +1,46 @@
1
+ require 'specinfra'
2
+ require 'pp'
3
+
4
+ a = Specinfra::Backend::Exec.new
5
+
6
+ ssh_options = Net::SSH::Config.for(ENV['SSH_HOST'], [ENV['SSH_CONFIG']])
7
+ b = Specinfra::Backend::Ssh.new(
8
+ :host => ssh_options[:host_name],
9
+ :ssh_options => ssh_options,
10
+ )
11
+
12
+ threads = [a, b].map do |backend|
13
+ Thread.start(backend) do |backend|
14
+ result = []
15
+ result << backend.run_command("uname -a")
16
+ result << backend.command
17
+ result << backend.command.get(:install_package, 'dstat')
18
+ result
19
+ end
20
+ end
21
+
22
+ threads.each(&:join)
23
+ threads.each do |t|
24
+ pp t.value
25
+ end
26
+
27
+ # example:
28
+ # [#<Specinfra::CommandResult:0x007fb3b1352e30
29
+ # @exit_signal=nil,
30
+ # @exit_status=0,
31
+ # @stderr="",
32
+ # @stdout=
33
+ # "Darwin p411 14.1.0 Darwin Kernel Version 14.1.0: Thu Feb 26 19:26:47 PST 2015; root:xnu-2782.10.73~1/RELEASE_X86_64 x86_64\n">,
34
+ # #<Specinfra::CommandFactory:0x007fb3b1153508
35
+ # @os_info={:family=>"darwin", :release=>nil, :arch=>"x86_64"}>,
36
+ # "/usr/local/bin/brew install 'dstat'"]
37
+ # [#<Specinfra::CommandResult:0x007fb3b0b9c2e0
38
+ # @exit_signal=nil,
39
+ # @exit_status=0,
40
+ # @stderr="",
41
+ # @stdout=
42
+ # "Linux itamae-trusty 3.13.0-39-generic #66-Ubuntu SMP Tue Oct 28 13:30:27 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux\n">,
43
+ # #<Specinfra::CommandFactory:0x007fb3b0d4d4b8
44
+ # @os_info={:family=>"ubuntu", :release=>"14.04", :arch=>"x86_64"}>,
45
+ # "DEBIAN_FRONTEND='noninteractive' apt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' install dstat"]
46
+
data/lib/specinfra.rb ADDED
@@ -0,0 +1,45 @@
1
+ require 'specinfra/core'
2
+
3
+ include Specinfra
4
+ include Specinfra::Helper::Os
5
+ include Specinfra::Helper::Properties
6
+ include Specinfra::Helper::HostInventory
7
+
8
+ module Specinfra
9
+ class << self
10
+ def command
11
+ Specinfra::CommandFactory.instance
12
+ end
13
+
14
+ def backend
15
+ type = Specinfra.configuration.backend
16
+ if type.nil?
17
+ if Specinfra.configuration.error_on_missing_backend_type
18
+ raise "No backend type is specified."
19
+ end
20
+
21
+ warn "No backend type is specified. Fall back to :exec type."
22
+ type = :exec
23
+ end
24
+ eval "Specinfra::Backend::#{type.to_s.to_camel_case}.instance"
25
+ end
26
+ end
27
+ end
28
+
29
+ if defined?(RSpec)
30
+ RSpec.configure do |c|
31
+ c.include(Specinfra::Helper::Configuration)
32
+ c.add_setting :os, :default => nil
33
+ c.add_setting :host, :default => nil
34
+ c.add_setting :ssh, :default => nil
35
+ c.add_setting :scp, :default => nil
36
+ c.add_setting :sudo_password, :default => nil
37
+ c.add_setting :winrm, :default => nil
38
+ c.add_setting :architecture, :default => :x86_64
39
+ Specinfra.configuration.defaults.each { |k, v| c.add_setting k, :default => v }
40
+ c.before :each do
41
+ example = RSpec.respond_to?(:current_example) ? RSpec.current_example : self.example
42
+ Specinfra.backend.set_example(example)
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,12 @@
1
+ require 'specinfra/backend/base'
2
+ require 'specinfra/backend/exec'
3
+ require 'specinfra/backend/ssh'
4
+ require 'specinfra/backend/powershell/script_helper'
5
+ require 'specinfra/backend/powershell/command'
6
+ require 'specinfra/backend/cmd'
7
+ require 'specinfra/backend/docker'
8
+ require 'specinfra/backend/lxc'
9
+ require 'specinfra/backend/winrm'
10
+ require 'specinfra/backend/shell_script'
11
+ require 'specinfra/backend/dockerfile'
12
+ require 'specinfra/backend/telnet'
@@ -0,0 +1,55 @@
1
+ require 'singleton'
2
+ require 'specinfra/command_result'
3
+
4
+ module Specinfra
5
+ module Backend
6
+ class Base
7
+ def self.instance
8
+ @instance ||= self.new
9
+ end
10
+
11
+ def initialize(config = {})
12
+ @config = config
13
+ end
14
+
15
+ def get_config(key)
16
+ @config[key] || Specinfra.configuration.send(key)
17
+ end
18
+
19
+ def set_config(key, value)
20
+ @config[key] = value
21
+ end
22
+
23
+ def os_info
24
+ return @os_info if @os_info
25
+
26
+ Specinfra::Helper::DetectOs.subclasses.each do |klass|
27
+ if @os_info = klass.new(self).detect
28
+ @os_info[:arch] ||= self.run_command('uname -m').stdout.strip
29
+ return @os_info
30
+ end
31
+ end
32
+ end
33
+
34
+ def command
35
+ CommandFactory.new(os_info)
36
+ end
37
+
38
+ def host_inventory
39
+ @inventory ||= HostInventory.new(self)
40
+ end
41
+
42
+ def set_example(e)
43
+ @example = e
44
+ end
45
+
46
+ def stdout_handler=(block)
47
+ @stdout_handler = block
48
+ end
49
+
50
+ def stderr_handler=(block)
51
+ @stderr_handler = block
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,68 @@
1
+ require 'open3'
2
+
3
+ module Specinfra
4
+ module Backend
5
+ class Cmd < Base
6
+ include PowerShell::ScriptHelper
7
+
8
+ def os_info
9
+ { :family => 'windows', :release => nil, :arch => nil }
10
+ end
11
+
12
+ def run_command(cmd, opts={})
13
+ script = create_script(cmd)
14
+ result = execute_script %Q{#{powershell} -encodedCommand #{encode_script(script)}}
15
+
16
+ if @example
17
+ @example.metadata[:command] = script
18
+ @example.metadata[:stdout] = result[:stdout] + result[:stderr]
19
+ end
20
+ CommandResult.new :stdout => result[:stdout], :stderr => result[:stderr],
21
+ :exit_status => result[:status]
22
+ end
23
+
24
+ def execute_script script
25
+ if Open3.respond_to? :capture3
26
+ stdout, stderr, status = Open3.capture3(script)
27
+ # powershell still exits with 0 even if there are syntax errors, although it spits the error out into stderr
28
+ # so we have to resort to return an error exit code if there is anything in the standard error
29
+ status = 1 if status == 0 and !stderr.empty?
30
+ { :stdout => stdout, :stderr => stderr, :status => status }
31
+ else
32
+ stdout = `#{script} 2>&1`
33
+ { :stdout => stdout, :stderr => nil, :status => $? }
34
+ end
35
+ end
36
+
37
+ def check_os
38
+ # Dirty hack for specs
39
+ 'Windows'
40
+ end
41
+
42
+ private
43
+
44
+ def powershell
45
+ architecture = @example.metadata[:architecture] || get_config(:architecture)
46
+
47
+ case architecture
48
+ when :i386 then x86_powershell
49
+ when :x86_64 then x64_powershell
50
+ else raise ArgumentError, "invalid architecture [#{architecture}]"
51
+ end
52
+ end
53
+
54
+ def x64_powershell
55
+ find_powershell(%w(sysnative system32))
56
+ end
57
+
58
+ def x86_powershell
59
+ find_powershell(%w(syswow64 system32))
60
+ end
61
+
62
+ def find_powershell(dirs)
63
+ ( dirs.map { |dir| "#{ENV['WINDIR']}\\#{dir}\\WindowsPowerShell\\v1.0\\powershell.exe" } ).find { |exe| File.exists?(exe) } || 'powershell'
64
+ end
65
+
66
+ end
67
+ end
68
+ end