freighthop 0.0.6 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
  }