freighthop 0.0.6 → 0.1.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 (270) hide show
  1. data/Puppetfile +1 -0
  2. data/Puppetfile.lock +3 -0
  3. data/Vagrantfile +1 -1
  4. data/bin/fh +2 -78
  5. data/lib/freighthop/cli/help.rb +69 -0
  6. data/lib/freighthop/cli/ssh.rb +46 -0
  7. data/lib/freighthop/cli/vagrant.rb +26 -0
  8. data/lib/freighthop/cli.rb +40 -0
  9. data/lib/freighthop/config.rb +4 -0
  10. data/lib/freighthop/vagrant_env.rb +24 -0
  11. data/lib/freighthop/version.rb +1 -1
  12. data/lib/freighthop.rb +7 -4
  13. data/local_modules/freighthop/manifests/database/mysql.pp +20 -0
  14. data/local_modules/freighthop/manifests/database/postgres.pp +6 -6
  15. data/local_modules/freighthop/manifests/database.pp +6 -8
  16. data/local_modules/freighthop/manifests/init.pp +1 -8
  17. data/local_modules/freighthop/manifests/params.pp +0 -3
  18. data/modules/apt/CHANGELOG +12 -2
  19. data/modules/apt/Gemfile +6 -5
  20. data/modules/apt/Gemfile.lock +40 -5
  21. data/modules/apt/Modulefile +1 -1
  22. data/modules/apt/README.md +2 -1
  23. data/modules/apt/Rakefile +1 -0
  24. data/modules/apt/manifests/init.pp +4 -1
  25. data/modules/apt/manifests/ppa.pp +1 -1
  26. data/modules/apt/manifests/update.pp +1 -0
  27. data/modules/apt/metadata.json +21 -13
  28. data/modules/apt/spec/defines/ppa_spec.rb +3 -3
  29. data/modules/apt/spec/defines/source_spec.rb +2 -2
  30. data/modules/apt/spec/spec_helper_system.rb +30 -0
  31. data/modules/apt/spec/system/apt_builddep_spec.rb +38 -0
  32. data/modules/apt/spec/system/apt_key_spec.rb +53 -0
  33. data/modules/apt/spec/system/apt_ppa_spec.rb +59 -0
  34. data/modules/apt/spec/system/apt_source_spec.rb +51 -0
  35. data/modules/apt/spec/system/basic_spec.rb +10 -0
  36. data/modules/apt/spec/system/class_spec.rb +20 -0
  37. data/modules/apt/templates/source.list.erb +2 -2
  38. data/modules/freighthop/manifests/database/mysql.pp +20 -0
  39. data/modules/freighthop/manifests/database/postgres.pp +6 -6
  40. data/modules/freighthop/manifests/database.pp +6 -8
  41. data/modules/freighthop/manifests/init.pp +1 -8
  42. data/modules/freighthop/manifests/params.pp +0 -3
  43. data/modules/mysql/CHANGELOG +403 -0
  44. data/modules/mysql/Gemfile +24 -0
  45. data/modules/mysql/Gemfile.lock +129 -0
  46. data/modules/mysql/LICENSE +201 -0
  47. data/modules/mysql/Modulefile +9 -0
  48. data/modules/mysql/README.md +492 -0
  49. data/modules/mysql/Rakefile +2 -0
  50. data/modules/mysql/TODO +8 -0
  51. data/modules/mysql/files/mysqltuner.pl +966 -0
  52. data/modules/mysql/lib/puppet/parser/functions/mysql_deepmerge.rb +52 -0
  53. data/modules/mysql/lib/puppet/parser/functions/mysql_password.rb +15 -0
  54. data/modules/mysql/lib/puppet/parser/functions/mysql_strip_hash.rb +21 -0
  55. data/modules/mysql/lib/puppet/provider/database/mysql.rb +52 -0
  56. data/modules/mysql/lib/puppet/provider/database_grant/mysql.rb +210 -0
  57. data/modules/mysql/lib/puppet/provider/database_user/mysql.rb +76 -0
  58. data/modules/mysql/lib/puppet/provider/mysql.rb +67 -0
  59. data/modules/mysql/lib/puppet/provider/mysql_database/mysql.rb +68 -0
  60. data/modules/mysql/lib/puppet/provider/mysql_grant/mysql.rb +115 -0
  61. data/modules/mysql/lib/puppet/provider/mysql_user/mysql.rb +115 -0
  62. data/modules/mysql/lib/puppet/type/database.rb +21 -0
  63. data/modules/mysql/lib/puppet/type/database_grant.rb +79 -0
  64. data/modules/mysql/lib/puppet/type/database_user.rb +31 -0
  65. data/modules/mysql/lib/puppet/type/mysql_database.rb +22 -0
  66. data/modules/mysql/lib/puppet/type/mysql_grant.rb +72 -0
  67. data/modules/mysql/lib/puppet/type/mysql_user.rb +45 -0
  68. data/modules/mysql/manifests/backup.pp +31 -0
  69. data/modules/mysql/manifests/bindings/java.pp +10 -0
  70. data/modules/mysql/manifests/bindings/perl.pp +10 -0
  71. data/modules/mysql/manifests/bindings/php.pp +10 -0
  72. data/modules/mysql/manifests/bindings/python.pp +10 -0
  73. data/modules/mysql/manifests/bindings/ruby.pp +10 -0
  74. data/modules/mysql/manifests/bindings.pp +33 -0
  75. data/modules/mysql/manifests/client/install.pp +8 -0
  76. data/modules/mysql/manifests/client.pp +27 -0
  77. data/modules/mysql/manifests/db.pp +59 -0
  78. data/modules/mysql/manifests/init.pp +100 -0
  79. data/modules/mysql/manifests/params.pp +230 -0
  80. data/modules/mysql/manifests/server/account_security.pp +22 -0
  81. data/modules/mysql/manifests/server/backup.pp +56 -0
  82. data/modules/mysql/manifests/server/config.pp +31 -0
  83. data/modules/mysql/manifests/server/install.pp +9 -0
  84. data/modules/mysql/manifests/server/monitor.pp +24 -0
  85. data/modules/mysql/manifests/server/mysqltuner.pp +9 -0
  86. data/modules/mysql/manifests/server/providers.pp +8 -0
  87. data/modules/mysql/manifests/server/root_password.pp +21 -0
  88. data/modules/mysql/manifests/server/service.pp +19 -0
  89. data/modules/mysql/manifests/server.pp +69 -0
  90. data/modules/mysql/metadata.json +289 -0
  91. data/modules/mysql/spec/classes/mysql_bindings_spec.rb +58 -0
  92. data/modules/mysql/spec/classes/mysql_client_spec.rb +16 -0
  93. data/modules/mysql/spec/classes/mysql_server_account_security_spec.rb +41 -0
  94. data/modules/mysql/spec/classes/mysql_server_backup_spec.rb +112 -0
  95. data/modules/mysql/spec/classes/mysql_server_monitor_spec.rb +31 -0
  96. data/modules/mysql/spec/classes/mysql_server_mysqltuner_spec.rb +5 -0
  97. data/modules/mysql/spec/classes/mysql_server_spec.rb +162 -0
  98. data/modules/mysql/spec/defines/mysql_db_spec.rb +51 -0
  99. data/modules/mysql/spec/spec.opts +6 -0
  100. data/modules/mysql/spec/spec_helper.rb +5 -0
  101. data/modules/mysql/spec/spec_helper_system.rb +28 -0
  102. data/modules/mysql/spec/system/mysql_account_delete_spec.rb +35 -0
  103. data/modules/mysql/spec/system/mysql_backup_spec.rb +77 -0
  104. data/modules/mysql/spec/system/mysql_bindings_spec.rb +90 -0
  105. data/modules/mysql/spec/system/mysql_db_spec.rb +61 -0
  106. data/modules/mysql/spec/system/mysql_server_monitor_spec.rb +30 -0
  107. data/modules/mysql/spec/system/mysql_server_root_password_spec.rb +71 -0
  108. data/modules/mysql/spec/system/mysql_server_spec.rb +85 -0
  109. data/modules/mysql/spec/system/types/mysql_grant_spec.rb +314 -0
  110. data/modules/mysql/spec/system/types/mysql_user_spec.rb +35 -0
  111. data/modules/mysql/spec/unit/mysql_password_spec.rb +27 -0
  112. data/modules/mysql/spec/unit/puppet/functions/mysql_deepmerge_spec.rb +77 -0
  113. data/modules/mysql/spec/unit/puppet/provider/database/mysql_spec.rb +86 -0
  114. data/modules/mysql/spec/unit/puppet/provider/database_grant/mysql_spec.rb +95 -0
  115. data/modules/mysql/spec/unit/puppet/provider/database_user/mysql_spec.rb +119 -0
  116. data/modules/mysql/spec/unit/puppet/provider/mysql_database/mysql_spec.rb +118 -0
  117. data/modules/mysql/spec/unit/puppet/provider/mysql_user/mysql_spec.rb +130 -0
  118. data/modules/mysql/spec/unit/puppet/type/mysql_database_spec.rb +29 -0
  119. data/modules/mysql/spec/unit/puppet/type/mysql_user_spec.rb +30 -0
  120. data/modules/mysql/templates/my.cnf.erb +17 -0
  121. data/modules/mysql/templates/my.cnf.pass.erb +7 -0
  122. data/modules/mysql/templates/my.conf.cnf.erb +17 -0
  123. data/modules/mysql/templates/mysqlbackup.sh.erb +57 -0
  124. data/modules/mysql/tests/backup.pp +8 -0
  125. data/modules/mysql/tests/bindings.pp +3 -0
  126. data/modules/mysql/tests/init.pp +1 -0
  127. data/modules/mysql/tests/java.pp +1 -0
  128. data/modules/mysql/tests/mysql_database.pp +12 -0
  129. data/modules/mysql/tests/mysql_grant.pp +5 -0
  130. data/modules/mysql/tests/mysql_user.pp +23 -0
  131. data/modules/mysql/tests/perl.pp +1 -0
  132. data/modules/mysql/tests/python.pp +1 -0
  133. data/modules/mysql/tests/ruby.pp +1 -0
  134. data/modules/mysql/tests/server/account_security.pp +4 -0
  135. data/modules/mysql/tests/server/config.pp +11 -0
  136. data/modules/mysql/tests/server.pp +3 -0
  137. data/modules/postgresql/Changelog +191 -0
  138. data/modules/postgresql/Gemfile +1 -0
  139. data/modules/postgresql/Gemfile.lock +9 -0
  140. data/modules/postgresql/LICENSE +198 -12
  141. data/modules/postgresql/Modulefile +2 -2
  142. data/modules/postgresql/NOTICE +14 -0
  143. data/modules/postgresql/README.md +435 -184
  144. data/modules/postgresql/files/validate_postgresql_connection.sh +31 -0
  145. data/modules/postgresql/lib/puppet/provider/postgresql_conf/parsed.rb +37 -0
  146. data/modules/postgresql/lib/puppet/provider/postgresql_psql/ruby.rb +4 -0
  147. data/modules/postgresql/lib/puppet/type/postgresql_conf.rb +31 -0
  148. data/modules/postgresql/lib/puppet/type/postgresql_psql.rb +4 -0
  149. data/modules/postgresql/manifests/client.pp +17 -16
  150. data/modules/postgresql/manifests/globals.pp +95 -0
  151. data/modules/postgresql/manifests/lib/devel.pp +15 -0
  152. data/modules/postgresql/manifests/lib/java.pp +15 -0
  153. data/modules/postgresql/manifests/lib/python.pp +13 -0
  154. data/modules/postgresql/manifests/params.pp +127 -222
  155. data/modules/postgresql/manifests/repo/apt_postgresql_org.pp +30 -0
  156. data/modules/postgresql/manifests/repo/yum_postgresql_org.pp +38 -0
  157. data/modules/postgresql/manifests/repo.pp +22 -0
  158. data/modules/postgresql/manifests/server/config.pp +113 -0
  159. data/modules/postgresql/manifests/server/config_entry.pp +43 -0
  160. data/modules/postgresql/manifests/server/contrib.pp +27 -0
  161. data/modules/postgresql/manifests/server/database.pp +75 -0
  162. data/modules/postgresql/manifests/server/database_grant.pp +18 -0
  163. data/modules/postgresql/manifests/server/db.pp +36 -0
  164. data/modules/postgresql/manifests/server/firewall.pp +21 -0
  165. data/modules/postgresql/manifests/server/grant.pp +81 -0
  166. data/modules/postgresql/manifests/server/initdb.pp +52 -0
  167. data/modules/postgresql/manifests/server/install.pp +49 -0
  168. data/modules/postgresql/manifests/server/passwd.pp +34 -0
  169. data/modules/postgresql/manifests/server/pg_hba_rule.pp +54 -0
  170. data/modules/postgresql/manifests/server/plperl.pp +27 -0
  171. data/modules/postgresql/manifests/server/reload.pp +15 -0
  172. data/modules/postgresql/manifests/{role.pp → server/role.pp} +19 -33
  173. data/modules/postgresql/manifests/server/service.pp +40 -0
  174. data/modules/postgresql/manifests/{table_grant.pp → server/table_grant.pp} +4 -4
  175. data/modules/postgresql/manifests/server/tablespace.pp +42 -0
  176. data/modules/postgresql/manifests/server.pp +61 -83
  177. data/modules/postgresql/manifests/validate_db_connection.pp +49 -50
  178. data/modules/postgresql/metadata.json +123 -73
  179. data/modules/postgresql/spec/spec_helper_system.rb +13 -1
  180. data/modules/postgresql/spec/system/client_spec.rb +22 -0
  181. data/modules/postgresql/spec/system/common_patterns_spec.rb +53 -0
  182. data/modules/postgresql/spec/system/contrib_spec.rb +33 -0
  183. data/modules/postgresql/spec/system/lib/devel_spec.rb +22 -0
  184. data/modules/postgresql/spec/system/lib/java_spec.rb +25 -0
  185. data/modules/postgresql/spec/system/lib/python_spec.rb +24 -0
  186. data/modules/postgresql/spec/system/postgresql_psql_spec.rb +51 -0
  187. data/modules/postgresql/spec/system/server/config_entry_spec.rb +32 -0
  188. data/modules/postgresql/spec/system/server/database_grant_spec.rb +54 -0
  189. data/modules/postgresql/spec/system/server/database_spec.rb +35 -0
  190. data/modules/postgresql/spec/system/server/db_spec.rb +143 -0
  191. data/modules/postgresql/spec/system/server/grant_spec.rb +55 -0
  192. data/modules/postgresql/spec/system/server/pg_hba_rule_spec.rb +85 -0
  193. data/modules/postgresql/spec/system/server/plperl_spec.rb +29 -0
  194. data/modules/postgresql/spec/system/server/role_spec.rb +103 -0
  195. data/modules/postgresql/spec/system/server/table_grant_spec.rb +72 -0
  196. data/modules/postgresql/spec/system/server/tablespace_spec.rb +74 -0
  197. data/modules/postgresql/spec/system/server_spec.rb +217 -0
  198. data/modules/postgresql/spec/system/validate_db_connection_spec.rb +91 -0
  199. data/modules/postgresql/spec/unit/classes/client_spec.rb +27 -2
  200. data/modules/postgresql/spec/unit/classes/globals_spec.rb +28 -0
  201. data/modules/postgresql/spec/unit/classes/lib/devel_spec.rb +12 -0
  202. data/modules/postgresql/spec/unit/classes/{postgresql_java_spec.rb → lib/java_spec.rb} +9 -19
  203. data/modules/postgresql/spec/unit/classes/lib/python_spec.rb +31 -0
  204. data/modules/postgresql/spec/unit/classes/params_spec.rb +2 -1
  205. data/modules/postgresql/spec/unit/classes/repo_spec.rb +17 -0
  206. data/modules/postgresql/spec/unit/classes/server/contrib_spec.rb +42 -0
  207. data/modules/postgresql/spec/unit/classes/server/initdb_spec.rb +28 -0
  208. data/modules/postgresql/spec/unit/classes/server/plperl_spec.rb +45 -0
  209. data/modules/postgresql/spec/unit/classes/server_spec.rb +83 -2
  210. data/modules/postgresql/spec/unit/defines/server/config_entry_spec.rb +23 -0
  211. data/modules/postgresql/spec/unit/defines/server/database_grant_spec.rb +26 -0
  212. data/modules/postgresql/spec/unit/defines/server/database_spec.rb +16 -0
  213. data/modules/postgresql/spec/unit/defines/server/db_spec.rb +28 -0
  214. data/modules/postgresql/spec/unit/defines/{database_grant_spec.rb → server/grant_spec.rb} +7 -4
  215. data/modules/postgresql/spec/unit/defines/{pg_hba_rule_spec.rb → server/pg_hba_rule_spec.rb} +59 -2
  216. data/modules/postgresql/spec/unit/defines/server/role_spec.rb +23 -0
  217. data/modules/postgresql/spec/unit/defines/server/table_grant_spec.rb +27 -0
  218. data/modules/postgresql/spec/unit/defines/server/tablespace_spec.rb +23 -0
  219. data/modules/postgresql/spec/unit/defines/validate_db_connection_spec.rb +22 -9
  220. data/modules/postgresql/spec/unit/provider/postgresql_conf/parsed_spec.rb +112 -0
  221. data/modules/postgresql/spec/unit/puppet/provider/postgresql_psql/ruby_spec.rb +29 -0
  222. data/modules/postgresql/spec/unit/puppet/type/postgresql_psql_spec.rb +1 -0
  223. data/modules/postgresql/spec/unit/type/postgresql_conf_spec.rb +50 -0
  224. metadata +177 -53
  225. data/modules/postgresql/examples/init.pp +0 -1
  226. data/modules/postgresql/examples/official-postgresql-repos.pp +0 -19
  227. data/modules/postgresql/examples/postgresql_database.pp +0 -22
  228. data/modules/postgresql/examples/postgresql_db.pp +0 -30
  229. data/modules/postgresql/examples/postgresql_grant.pp +0 -14
  230. data/modules/postgresql/examples/postgresql_pg_hba_rule.pp +0 -18
  231. data/modules/postgresql/examples/postgresql_pgconf_extras.pp +0 -19
  232. data/modules/postgresql/examples/postgresql_tablespace.pp +0 -73
  233. data/modules/postgresql/examples/postgresql_user.pp +0 -28
  234. data/modules/postgresql/examples/server.pp +0 -10
  235. data/modules/postgresql/lib/facter/postgres_default_version.rb +0 -69
  236. data/modules/postgresql/manifests/config/afterservice.pp +0 -47
  237. data/modules/postgresql/manifests/config/beforeservice.pp +0 -171
  238. data/modules/postgresql/manifests/config.pp +0 -74
  239. data/modules/postgresql/manifests/contrib.pp +0 -29
  240. data/modules/postgresql/manifests/database.pp +0 -85
  241. data/modules/postgresql/manifests/database_grant.pp +0 -35
  242. data/modules/postgresql/manifests/database_user.pp +0 -60
  243. data/modules/postgresql/manifests/db.pp +0 -77
  244. data/modules/postgresql/manifests/devel.pp +0 -27
  245. data/modules/postgresql/manifests/grant.pp +0 -77
  246. data/modules/postgresql/manifests/init.pp +0 -145
  247. data/modules/postgresql/manifests/initdb.pp +0 -52
  248. data/modules/postgresql/manifests/java.pp +0 -29
  249. data/modules/postgresql/manifests/package_source/apt_postgresql_org.pp +0 -21
  250. data/modules/postgresql/manifests/package_source/yum_postgresql_org.pp +0 -30
  251. data/modules/postgresql/manifests/pg_hba.pp +0 -19
  252. data/modules/postgresql/manifests/pg_hba_rule.pp +0 -41
  253. data/modules/postgresql/manifests/plperl.pp +0 -24
  254. data/modules/postgresql/manifests/psql.pp +0 -56
  255. data/modules/postgresql/manifests/python.pp +0 -18
  256. data/modules/postgresql/manifests/tablespace.pp +0 -59
  257. data/modules/postgresql/spec/system/install_spec.rb +0 -707
  258. data/modules/postgresql/spec/system/non_defaults_spec.rb +0 -114
  259. data/modules/postgresql/spec/unit/classes/contrib_spec.rb +0 -11
  260. data/modules/postgresql/spec/unit/classes/devel_spec.rb +0 -11
  261. data/modules/postgresql/spec/unit/classes/init_spec.rb +0 -71
  262. data/modules/postgresql/spec/unit/classes/postgresql_python_spec.rb +0 -53
  263. data/modules/postgresql/spec/unit/defines/database_spec.rb +0 -14
  264. data/modules/postgresql/spec/unit/defines/database_user_spec.rb +0 -19
  265. data/modules/postgresql/spec/unit/defines/db_spec.rb +0 -20
  266. data/modules/postgresql/spec/unit/defines/pg_hba_spec.rb +0 -20
  267. data/modules/postgresql/spec/unit/defines/psql_spec.rb +0 -20
  268. data/modules/postgresql/spec/unit/defines/role_spec.rb +0 -14
  269. data/modules/postgresql/spec/unit/defines/tablespace_spec.rb +0 -19
  270. data/modules/postgresql/spec/unit/facts/postgres_default_version_spec.rb +0 -14
data/Puppetfile CHANGED
@@ -5,4 +5,5 @@ mod 'puppetlabs/apt'
5
5
  mod 'gdsoperations/rbenv'
6
6
  mod 'nginx', :git => 'https://github.com/jfryman/puppet-nginx'
7
7
  mod 'puppetlabs/postgresql'
8
+ mod 'puppetlabs/mysql'
8
9
  mod 'freighthop', :path => 'local_modules/freighthop'
data/Puppetfile.lock CHANGED
@@ -5,6 +5,8 @@ FORGE
5
5
  puppetlabs/apt (1.2.0)
6
6
  puppetlabs/stdlib (>= 2.2.1)
7
7
  puppetlabs/firewall (0.4.2)
8
+ puppetlabs/mysql (2.0.1)
9
+ puppetlabs/stdlib (>= 2.2.1)
8
10
  puppetlabs/postgresql (2.5.0)
9
11
  puppetlabs/apt (< 2.0.0, >= 1.1.0)
10
12
  puppetlabs/firewall (>= 0.0.4)
@@ -32,6 +34,7 @@ DEPENDENCIES
32
34
  gdsoperations/rbenv (>= 0)
33
35
  nginx (>= 0)
34
36
  puppetlabs/apt (>= 0)
37
+ puppetlabs/mysql (>= 0)
35
38
  puppetlabs/postgresql (>= 0)
36
39
  puppetlabs/stdlib (= 4.1.0)
37
40
 
data/Vagrantfile CHANGED
@@ -7,7 +7,7 @@ Vagrant.require_plugin 'landrush'
7
7
 
8
8
  Vagrant.configure('2') do |config|
9
9
  config.vm.box = 'precise64'
10
- config.vm.box_url = Freighthop.box_url
10
+ config.vm.box_url = Freighthop.box_url
11
11
 
12
12
  config.landrush.enable
13
13
 
data/bin/fh CHANGED
@@ -1,80 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- FREIGHTHOP_VAGRANT_DOTFILE_PATH = File.expand_path('~/.freighthop.d/vagrant')
4
- FREIGHTHOP_VAGRANT_CWD = File.expand_path(File.dirname(__FILE__))
5
-
6
- unless File.directory?(FREIGHTHOP_VAGRANT_DOTFILE_PATH)
7
- require 'fileutils'
8
- FileUtils.mkdir_p(FREIGHTHOP_VAGRANT_DOTFILE_PATH)
9
- end
10
-
11
- ENV['VAGRANT_DOTFILE_PATH'] = FREIGHTHOP_VAGRANT_DOTFILE_PATH
12
- ENV['VAGRANT_CWD'] = FREIGHTHOP_VAGRANT_CWD
13
-
14
- PROJECT_NAME = File.basename(Dir.pwd)
15
- PROJECT_DIR = "/srv/#{PROJECT_NAME}"
16
-
17
- def print_usage
18
- puts <<USAGETEXT
19
- NAME
20
- fh - freighthop's friendly helper
21
-
22
- DESCRIPTION
23
- The fh command is used to interact with a freighthop-managed vm from the root
24
- of your project directory.
25
-
26
- SYNOPSIS
27
- fh <COMMAND> [args...]
28
-
29
- COMMANDS
30
- up - boot freighthop vm
31
- halt - shutdown freighthop vm
32
- destroy - shutdown and delete vm
33
- provision - rerun provisioning on a booted freighthop vm
34
- reload - restart freighthop vm (picks up new config changes)
35
- status - check the current status of the freighthop vm
36
- ssh - opens a root shell inside the project dir of the freighthop vm
37
- (other) - see below
38
- help - this help
39
-
40
- PASSTHROUGH TO VM
41
- Anything that does not match the above list will be passed through to the
42
- freighthop vm.
43
-
44
- The command will be run in a bash shell, as root, from inside the shared
45
- project directory.
46
-
47
- This allows you to specify relative commands like ./script/server and expect
48
- them to behave properly.
49
-
50
- EXAMPLES
51
- Install gem dependencies:
52
- fh bundle install
53
-
54
- Start a Rails 4 server:
55
- fh ./bin/rails server
56
-
57
- Run a ruby test:
58
- fh ruby -Itest test/unit/object_test.rb
59
-
60
- Install leiningen dependencies:
61
- fh lein deps
62
-
63
- Run a ring server:
64
- fh lein ring server-headless
65
- USAGETEXT
66
- end
67
-
68
- subcommand, *rest = ARGV
69
- case subcommand
70
- when 'help' then
71
- print_usage
72
- when 'up', 'halt', 'destroy', 'provision', 'reload', 'status' then
73
- exec %Q(vagrant #{subcommand} #{rest.join(' ')})
74
- when 'ssh' then
75
- `vagrant ssh-config > /tmp/freighthop.ssh-config`
76
- exec %Q(ssh -t -F /tmp/freighthop.ssh-config #{PROJECT_NAME} 'cd #{PROJECT_DIR}; sudo /bin/bash -l -i')
77
- else
78
- `vagrant ssh-config > /tmp/freighthop.ssh-config`
79
- exec %Q(ssh -t -F /tmp/freighthop.ssh-config #{PROJECT_NAME} 'cd #{PROJECT_DIR}; sudo /bin/bash -l -c "#{rest.unshift(subcommand).join(' ')}"')
80
- end
3
+ require 'freighthop'
4
+ Freighthop::CLI.new(*ARGV).run
@@ -0,0 +1,69 @@
1
+ class Freighthop::CLI::Help
2
+ TOPICS = []
3
+
4
+ def self.match?(*args)
5
+ args.first == 'help' || args.empty?
6
+ end
7
+
8
+ def initialize(*args)
9
+ _, @topic, *_ = args
10
+ end
11
+
12
+ def run
13
+ if TOPICS.include?(@topic)
14
+ else
15
+ usage
16
+ end
17
+ end
18
+
19
+ def usage
20
+ puts <<USAGETEXT
21
+ NAME
22
+ fh - freighthop's friendly helper
23
+
24
+ DESCRIPTION
25
+ The fh command is used to interact with a freighthop-managed vm from the root
26
+ of your project directory.
27
+
28
+ SYNOPSIS
29
+ fh <COMMAND> [args...]
30
+
31
+ BUILT-IN COMMANDS
32
+ up - boot freighthop vm
33
+ halt - shutdown freighthop vm
34
+ destroy - shutdown and delete vm
35
+ provision - rerun provisioning on a booted freighthop vm
36
+ reload - restart freighthop vm (picks up new config changes)
37
+ status - check the current status of the freighthop vm
38
+ ssh - opens a root shell inside the project dir of the freighthop vm
39
+ (other) - see PASSTHROUGH TO VM below
40
+ help - this help
41
+
42
+ PASSTHROUGH TO VM
43
+ Anything that does not match the above list will be passed through to the
44
+ freighthop vm.
45
+
46
+ The command will be run in a bash shell, as root, from inside the shared
47
+ project directory.
48
+
49
+ This allows you to specify relative commands like ./script/server and expect
50
+ them to behave properly.
51
+
52
+ EXAMPLES
53
+ Install gem dependencies:
54
+ fh bundle install
55
+
56
+ Start a Rails 4 server:
57
+ fh ./bin/rails server
58
+
59
+ Run a ruby test:
60
+ fh ruby -Itest test/unit/object_test.rb
61
+
62
+ Install leiningen dependencies:
63
+ fh lein deps
64
+
65
+ Run a ring server:
66
+ fh lein ring server-headless
67
+ USAGETEXT
68
+ end
69
+ end
@@ -0,0 +1,46 @@
1
+ class Freighthop::CLI::SSH
2
+ def self.match?(*args)
3
+ !args.empty? # we handle guest passthrough
4
+ end
5
+
6
+ def initialize(*args)
7
+ @args = args
8
+ end
9
+
10
+ def run
11
+ if shell?
12
+ ssh('-i')
13
+ else
14
+ ssh(%Q(-c "#{@args.join(' ')}"))
15
+ end
16
+ end
17
+
18
+ def shell?
19
+ @args.first == 'ssh'
20
+ end
21
+
22
+ def ssh(cmd)
23
+ exec %Q(ssh -t -F #{config} #{app_name} 'cd #{guest_root}; sudo /bin/bash -l #{cmd}')
24
+ end
25
+
26
+ def config
27
+ config_path.tap do |conf|
28
+ if !conf.exist? || (Time.now - conf.mtime) > 86400
29
+ `vagrant ssh-config > #{conf}`
30
+ end
31
+ end
32
+ end
33
+
34
+ def config_path
35
+ Pathname("/tmp/freighthop.#{app_name}.ssh-config")
36
+ end
37
+
38
+ def app_name
39
+ Freighthop.app_name
40
+ end
41
+
42
+ def guest_root
43
+ Freighthop.guest_root
44
+ end
45
+ end
46
+
@@ -0,0 +1,26 @@
1
+ class Freighthop::CLI::Vagrant
2
+ COMMANDS = %w[
3
+ up
4
+ halt
5
+ destroy
6
+ provision
7
+ reload
8
+ status
9
+ ]
10
+
11
+ def self.match?(*args)
12
+ COMMANDS.include?(args.first)
13
+ end
14
+
15
+ def initialize(*args)
16
+ @subcommand, @rest = args
17
+ end
18
+
19
+ def args
20
+ ([*@rest] || []).join(' ')
21
+ end
22
+
23
+ def run
24
+ exec %Q(vagrant #{@subcommand} #{args})
25
+ end
26
+ end
@@ -0,0 +1,40 @@
1
+ class Freighthop::CLI; end
2
+
3
+ require_relative 'cli/help'
4
+ require_relative 'cli/ssh'
5
+ require_relative 'cli/vagrant'
6
+
7
+ class Freighthop::CLI
8
+ COMMANDS = [
9
+ Freighthop::CLI::Help,
10
+ Freighthop::CLI::Vagrant,
11
+ Freighthop::CLI::SSH,
12
+ ]
13
+
14
+ def initialize(*args)
15
+ @args = args
16
+ end
17
+
18
+ def run
19
+ sanity_check
20
+ Freighthop::VagrantEnv.activate!
21
+
22
+ command = COMMANDS.detect(lambda{self.help}) { |c| c.match?(*@args) }
23
+ command.new(*@args).run
24
+ end
25
+
26
+ def help
27
+ Freighthop::CLI::Help
28
+ end
29
+
30
+ def sanity_check
31
+ return if help.match?(*@args)
32
+ unless Freighthop::Config.exist?
33
+ puts <<-NO_CONFIG
34
+ ERROR: No freighthop config file (.freighthop.json) found in current path.
35
+ You probably want to check out the README and/or `fh help`.
36
+ NO_CONFIG
37
+ exit 1
38
+ end
39
+ end
40
+ end
@@ -1,4 +1,8 @@
1
1
  class Freighthop::Config
2
+ def self.exist?
3
+ file.exist?
4
+ end
5
+
2
6
  def self.file
3
7
  Freighthop.host_root.join('.freighthop.json')
4
8
  end
@@ -0,0 +1,24 @@
1
+ class Freighthop::VagrantEnv
2
+ def self.env
3
+ {
4
+ 'VAGRANT_DOTFILE_PATH' => vagrant_dotfile_path,
5
+ 'VAGRANT_CWD' => vagrant_cwd
6
+ }
7
+ end
8
+
9
+ def self.activate!
10
+ env.each do |key, val|
11
+ ENV[key] = val.to_s
12
+ end
13
+ end
14
+
15
+ def self.vagrant_cwd
16
+ Freighthop.freighthop_root
17
+ end
18
+
19
+ def self.vagrant_dotfile_path
20
+ Pathname('~/.freighthop.d/vagrant').expand_path.tap do |path|
21
+ path.mkpath unless path.directory?
22
+ end
23
+ end
24
+ end
@@ -1,3 +1,3 @@
1
1
  module Freighthop
2
- VERSION = "0.0.6"
2
+ VERSION = "0.1.0"
3
3
  end
data/lib/freighthop.rb CHANGED
@@ -1,10 +1,9 @@
1
1
  require 'pathname'
2
+
2
3
  require_relative 'freighthop/version'
3
4
  require_relative 'freighthop/config'
4
-
5
- unless defined? Vagrant
6
- raise "i expect to be required from a Vagrantfile"
7
- end
5
+ require_relative 'freighthop/cli'
6
+ require_relative 'freighthop/vagrant_env'
8
7
 
9
8
  module Freighthop
10
9
  class << self
@@ -20,6 +19,10 @@ module Freighthop
20
19
  Pathname("/srv/#{app_name}")
21
20
  end
22
21
 
22
+ def freighthop_root
23
+ Pathname(File.dirname(__FILE__)).join('..').expand_path
24
+ end
25
+
23
26
  def app_name
24
27
  @app_name ||= host_root.basename.to_s
25
28
  end
@@ -0,0 +1,20 @@
1
+ class freighthop::database::mysql(
2
+ $db_names,
3
+ $users,
4
+ ) {
5
+ include mysql::server
6
+
7
+ mysql::db{$db_names:
8
+ user => "notorious",
9
+ password => "notorious",
10
+ host => "localhost",
11
+ grant => ['All']
12
+ }
13
+ mysql_grant { $users:
14
+ ensure => 'present',
15
+ options => ['GRANT'],
16
+ privileges => ['ALL'],
17
+ table => '*.*',
18
+ user => 'notorious@%',
19
+ }
20
+ }
@@ -1,17 +1,17 @@
1
1
  class freighthop::database::postgres(
2
- $databases,
3
- $database_users,
2
+ $db_names,
3
+ $users,
4
4
  ) {
5
5
  include postgresql::server
6
6
 
7
- postgresql::pg_hba_rule { 'local-users-get-everything':
7
+ postgresql::server::pg_hba_rule { 'local-users-get-everything':
8
8
  type => 'local',
9
9
  database => 'all',
10
10
  user => 'all',
11
11
  auth_method => 'trust',
12
12
  order => '0001',
13
13
  }
14
- postgresql::pg_hba_rule { 'local-host-connections-get-everything':
14
+ postgresql::server::pg_hba_rule { 'local-host-connections-get-everything':
15
15
  type => 'host',
16
16
  database => 'all',
17
17
  user => 'all',
@@ -19,8 +19,8 @@ class freighthop::database::postgres(
19
19
  auth_method => 'trust',
20
20
  order => '0001',
21
21
  }
22
- postgresql::database { $databases: }
23
- postgresql::database_user { $database_users:
22
+ postgresql::server::database { $db_names: }
23
+ postgresql::server::role { $users:
24
24
  superuser => true,
25
25
  createdb => true,
26
26
  createrole => true,
@@ -1,12 +1,10 @@
1
1
  class freighthop::database(
2
- $database_flavors,
3
- $databases,
4
- $database_users
2
+ $flavors
5
3
  ) {
6
- if (member($database_flavors, 'postgres')) {
7
- class { 'freighthop::database::postgres':
8
- databases => $databases,
9
- database_users => $database_users,
10
- }
4
+ if (member($flavors, 'postgres')) {
5
+ class { 'freighthop::database::postgres':}
6
+ }
7
+ if (member($flavors, 'mysql')) {
8
+ class { 'freighthop::database::mysql':}
11
9
  }
12
10
  }
@@ -2,9 +2,6 @@ class freighthop(
2
2
  $ppas = $freighthop::params::ppas,
3
3
  $packages = $freighthop::params::packages,
4
4
  $languages = $freighthop::params::languages,
5
- $database_flavors = $freighthop::params::database_flavors,
6
- $databases = $freighthop::params::databases,
7
- $database_users = $freighthop::params::database_users,
8
5
  $ruby_version = $freighthop::params::ruby_version,
9
6
  $app_name = $freighthop::params::app_name,
10
7
  $app_root = $freighthop::params::app_root,
@@ -34,9 +31,5 @@ class freighthop(
34
31
  ssl_key_path => $ssl_key_path,
35
32
  } ->
36
33
 
37
- class { 'freighthop::database':
38
- database_flavors => $database_flavors,
39
- databases => $databases,
40
- database_users => $database_users,
41
- }
34
+ class { 'freighthop::database':}
42
35
  }
@@ -1,7 +1,4 @@
1
1
  class freighthop::params {
2
- $database_flavors = []
3
- $databases = []
4
- $database_users = []
5
2
  $packages = []
6
3
  $ppas = []
7
4
  $languages = []
@@ -1,6 +1,16 @@
1
- ## puppetlabs-apt changelog
1
+ 2013-10-08 1.4.0
2
2
 
3
- Release notes for the puppetlabs-apt module.
3
+ Summary:
4
+
5
+ Minor bugfix and allow the timeout to be adjusted.
6
+
7
+ Features:
8
+ - Add an `updates_timeout` to apt::params
9
+
10
+ Fixes:
11
+ - Ensure apt::ppa can readd a ppa removed by hand.
12
+
13
+ Summary
4
14
 
5
15
  1.3.0
6
16
  =====
data/modules/apt/Gemfile CHANGED
@@ -1,9 +1,12 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  group :development, :test do
4
- gem 'rake', :require => false
5
- gem 'rspec-puppet', :require => false
6
- gem 'puppetlabs_spec_helper', :require => false
4
+ gem 'rake', :require => false
5
+ gem 'rspec-puppet', :require => false
6
+ gem 'puppetlabs_spec_helper', :require => false
7
+ gem 'rspec-system', :require => false
8
+ gem 'rspec-system-puppet', :require => false
9
+ gem 'rspec-system-serverspec', :require => false
7
10
  end
8
11
 
9
12
  if puppetversion = ENV['PUPPET_GEM_VERSION']
@@ -11,5 +14,3 @@ if puppetversion = ENV['PUPPET_GEM_VERSION']
11
14
  else
12
15
  gem 'puppet', :require => false
13
16
  end
14
-
15
- # vim:ft=ruby
@@ -1,35 +1,70 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
+ builder (3.2.2)
4
5
  diff-lcs (1.2.4)
5
- facter (1.7.3)
6
+ facter (1.6.18)
7
+ hiera (1.0.0)
8
+ highline (1.6.19)
9
+ kwalify (0.7.2)
6
10
  metaclass (0.0.1)
7
11
  mocha (0.14.0)
8
12
  metaclass (~> 0.0.1)
9
- puppet (2.7.23)
10
- facter (~> 1.5)
13
+ net-scp (1.1.2)
14
+ net-ssh (>= 2.6.5)
15
+ net-ssh (2.7.0)
16
+ nokogiri (1.5.10)
17
+ puppet (3.0.2)
18
+ facter (~> 1.6.11)
19
+ hiera (~> 1.0.0)
11
20
  puppetlabs_spec_helper (0.4.1)
12
21
  mocha (>= 0.10.5)
13
22
  rake
14
23
  rspec (>= 2.9.0)
15
24
  rspec-puppet (>= 0.1.1)
16
25
  rake (10.1.0)
26
+ rbvmomi (1.6.0)
27
+ builder
28
+ nokogiri (>= 1.4.1)
29
+ trollop
17
30
  rspec (2.14.1)
18
31
  rspec-core (~> 2.14.0)
19
32
  rspec-expectations (~> 2.14.0)
20
33
  rspec-mocks (~> 2.14.0)
21
34
  rspec-core (2.14.5)
22
- rspec-expectations (2.14.2)
35
+ rspec-expectations (2.14.3)
23
36
  diff-lcs (>= 1.1.3, < 2.0)
24
37
  rspec-mocks (2.14.3)
25
38
  rspec-puppet (0.1.6)
26
39
  rspec
40
+ rspec-system (2.3.0)
41
+ kwalify (~> 0.7.2)
42
+ net-scp (~> 1.1)
43
+ net-ssh (~> 2.6)
44
+ nokogiri (~> 1.5.9)
45
+ rbvmomi (~> 1.6)
46
+ rspec (~> 2.13)
47
+ systemu (~> 2.5)
48
+ rspec-system-puppet (2.2.0)
49
+ rspec-system (~> 2.0)
50
+ rspec-system-serverspec (1.0.1)
51
+ rspec-system (~> 2.0)
52
+ serverspec (~> 0.0)
53
+ serverspec (0.10.5)
54
+ highline
55
+ net-ssh
56
+ rspec (>= 2.13.0)
57
+ systemu (2.5.2)
58
+ trollop (2.0)
27
59
 
28
60
  PLATFORMS
29
61
  ruby
30
62
 
31
63
  DEPENDENCIES
32
- puppet (~> 2.7.0)
64
+ puppet (~> 3.0.0)
33
65
  puppetlabs_spec_helper
34
66
  rake
35
67
  rspec-puppet
68
+ rspec-system
69
+ rspec-system-puppet
70
+ rspec-system-serverspec
@@ -1,5 +1,5 @@
1
1
  name 'puppetlabs-apt'
2
- version '1.3.0'
2
+ version '1.4.0'
3
3
  source 'https://github.com/puppetlabs/puppetlabs-apt'
4
4
  author 'Evolving Web / Puppet Labs'
5
5
  license 'Apache License 2.0'
@@ -54,7 +54,8 @@ The parameters for `apt` are not required in general and are predominantly for d
54
54
  proxy_port => '8080',
55
55
  purge_sources_list => false,
56
56
  purge_sources_list_d => false,
57
- purge_preferences_d => false
57
+ purge_preferences_d => false,
58
+ update_timeout => undef
58
59
  }
59
60
 
60
61
  Puppet will manage your system's `sources.list` file and `sources.list.d` directory but will do its best to respect existing content.
data/modules/apt/Rakefile CHANGED
@@ -1 +1,2 @@
1
1
  require 'puppetlabs_spec_helper/rake_tasks'
2
+ require 'rspec-system/rake_task'
@@ -12,6 +12,8 @@
12
12
  # true, Puppet will purge all unmanaged entries from sources.list
13
13
  # purge_sources_list_d - Accepts true or false. Defaults to false. If set
14
14
  # to true, Puppet will purge all unmanaged entries from sources.list.d
15
+ # update_timeout - Overrides the exec timeout in seconds for apt-get update.
16
+ # If not set defaults to Exec's default (300)
15
17
  #
16
18
  # Actions:
17
19
  #
@@ -27,7 +29,8 @@ class apt(
27
29
  $proxy_port = '8080',
28
30
  $purge_sources_list = false,
29
31
  $purge_sources_list_d = false,
30
- $purge_preferences_d = false
32
+ $purge_preferences_d = false,
33
+ $update_timeout = undef
31
34
  ) {
32
35
 
33
36
  include apt::params
@@ -42,7 +42,7 @@ define apt::ppa(
42
42
  exec { "add-apt-repository-${name}":
43
43
  environment => $proxy_env,
44
44
  command => "/usr/bin/add-apt-repository ${options} ${name}",
45
- creates => "${sources_list_d}/${sources_list_d_filename}",
45
+ unless => "/usr/bin/test -s ${sources_list_d}/${sources_list_d_filename}",
46
46
  logoutput => 'on_failure',
47
47
  notify => Exec['apt_update'],
48
48
  require => [
@@ -5,5 +5,6 @@ class apt::update {
5
5
  command => "${apt::params::provider} update",
6
6
  logoutput => 'on_failure',
7
7
  refreshonly => true,
8
+ timeout => $apt::update_timeout,
8
9
  }
9
10
  }