deployku 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 03888fb6851ccbe49f3ed0c71f574a246e8d398f
4
- data.tar.gz: bde52a2e8d1e47c74ef09ae3c96e180e777d60ac
3
+ metadata.gz: d820a40a2faa5a55dbf1ec2950e2e8493f956006
4
+ data.tar.gz: 368c32c1335fe5498bf9671619e0cdef0b86e27f
5
5
  SHA512:
6
- metadata.gz: 31d9cf58462f5a0bde7bda68dd33b71a63b070b2a4d193b4f82ec887af3047915eccf9102f47e4ac6f0863477f60c18066f5c27d4e0ec172e3c5239f8eac30d2
7
- data.tar.gz: 3cdc657325c5d2562b5282d387e48b813f4f787964eef5f926851f413922b8b7c56a5d0f4564d2608daa149713b331a5d7e8e01281a6ac813fa675a60c8130f8
6
+ metadata.gz: 781b9948f250c22a1408ca6b9a3d7ffcf59bd72a03507ef5b40f44c7ef61b46a742c142a20dd0575439991c3ff405641546009fa71099bf135b2a32aa0675ead
7
+ data.tar.gz: 0f24913606ce3b6a03685283c83f43ab98d24283c336e22721593d4be57b4925b2fd5919434ae68fcc725e47cdc4c795203780d572e00086878c0ee61857bff9
data/README.md CHANGED
@@ -230,11 +230,27 @@ git push deployku master
230
230
  ```
231
231
 
232
232
  ### Connect to database
233
- Use ssh with `-t` option.
233
+ To connect as postgres user use ssh with `-t` option.
234
234
  ```bash
235
235
  ssh -t deployku@localhost postgres:db:connect dbserver myappdb
236
236
  ```
237
237
 
238
+ and to connect as linked application:
239
+ ```bash
240
+ ssh -t deployku@localhost postgres:db:connect:app dbserver myapp
241
+ ```
242
+
243
+ ### Backup database
244
+ To backup all databases use:
245
+ ```bash
246
+ ssh deployku@localhost postgres:dumpall dbserver
247
+ ```
248
+
249
+ and to backup only one database use:
250
+ ```bash
251
+ ssh deployku@localhost postgres:db:dump dbserver myappdb
252
+ ```
253
+
238
254
  ### Exec command in container environment
239
255
  Following will run bash inside container. Use ssh with `-t` option.
240
256
  ```bash
data/deployku.gemspec CHANGED
@@ -13,7 +13,7 @@ spec = Gem::Specification.new do |s|
13
13
  s.email = "pejuko@gmail.com"
14
14
  s.authors = ["Petr Kovář"]
15
15
  s.name = 'deployku'
16
- s.version = '0.0.3'
16
+ s.version = '0.0.4'
17
17
  s.date = Time.now.strftime("%Y-%m-%d")
18
18
  s.require_path = 'lib'
19
19
  s.files = ["bin/deployku", "README.md", "deployku.gemspec", "Rakefile", "LICENSE"]
@@ -21,6 +21,11 @@ module Deployku::Configurable
21
21
  config_save(app_name)
22
22
  end
23
23
 
24
+ def config_get(app_name, var)
25
+ config_load(app_name)
26
+ @config['env'][var.to_s]
27
+ end
28
+
24
29
  def config_set_from(app_name, value)
25
30
  config_load(app_name)
26
31
  @config['from'] = value
@@ -26,6 +26,7 @@ module Deployku
26
26
  def delete(name)
27
27
  app_dir = dir(name)
28
28
  if Dir.exists?(app_dir)
29
+ puts "removing: #{app_dir}"
29
30
  FileUtils.rm_rf(app_dir)
30
31
  end
31
32
  end
@@ -37,6 +38,31 @@ module Deployku
37
38
  end
38
39
  end
39
40
 
41
+ describe :dumpall, '<NAME>', 'calls pg_dumpall on specified PostgreSQL instance', acl_sys: :admin
42
+ def dumpall(name)
43
+ config_load(name)
44
+ cid = get_container_id(name)
45
+ unless Deployku::Engine.running?(cid)
46
+ puts "Database instance '#{name}' is not running."
47
+ exit 1
48
+ end
49
+ ip = Deployku::Engine.ip(cid)
50
+ system "PGPASSWORD=\"#{@config['env']['POSTGRES_PASSWORD']}\" pg_dumpall -h #{ip} -U postgres"
51
+ end
52
+
53
+ describe 'db:dump', '<NAME> <DB_NAME>', 'calls pg_dump on specified database', acl_sys: :admin
54
+ def db_dump(name, db_name)
55
+ config_load(name)
56
+ cid = get_container_id(name)
57
+ unless Deployku::Engine.running?(cid)
58
+ puts "Database instance '#{name}' is not running."
59
+ exit 1
60
+ end
61
+ ip = Deployku::Engine.ip(cid)
62
+ db = Deployku.sanitize_app_name(db_name)
63
+ system "PGPASSWORD=\"#{@config['env']['POSTGRES_PASSWORD']}\" pg_dump -h #{ip} -d #{db} -U postgres"
64
+ end
65
+
40
66
  describe 'db:create', '<NAME> <DB_NAME>', 'create a database in postgres instance', acl_sys: :admin
41
67
  def db_create(name, db_name)
42
68
  config_load(name)
@@ -47,7 +73,8 @@ module Deployku
47
73
  end
48
74
  ip = Deployku::Engine.ip(cid)
49
75
  db = Deployku.sanitize_app_name(db_name)
50
- system "echo \"#{@config['env']['POSTGRES_PASSWORD']}\n\" 'CREATE DATABASE #{db};' | psql -h #{ip} -U postgres"
76
+ system "echo 'CREATE DATABASE #{db};' | PGPASSWORD=\"#{@config['env']['POSTGRES_PASSWORD']}\" psql -h #{ip} -U postgres"
77
+ #system "echo \"#{@config['env']['POSTGRES_PASSWORD']}\n\" 'CREATE DATABASE #{db};' | psql -h #{ip} -U postgres"
51
78
  end
52
79
 
53
80
  describe 'db:drop', '<NAME> <DB_NAME>', 'destroy a database in postgres instance', acl_sys: :admin
@@ -60,7 +87,8 @@ module Deployku
60
87
  end
61
88
  ip = Deployku::Engine.ip(cid)
62
89
  db = Deployku.sanitize_app_name(db_name)
63
- system "echo \"#{@config['env']['POSTGRES_PASSWORD']}\n\" 'DROP DATABASE #{db};' | psql -h #{ip} -U postgres"
90
+ #system "echo \"#{@config['env']['POSTGRES_PASSWORD']}\n\" 'DROP DATABASE #{db};' | psql -h #{ip} -U postgres"
91
+ system "echo 'DROP DATABASE #{db};' | PGPASSWORD=\"#{@config['env']['POSTGRES_PASSWORD']}\" psql -h #{ip} -U postgres"
64
92
  end
65
93
 
66
94
  describe 'db:link', '<NAME> <DB_NAME> <APP>', 'connect appliaction with database', acl_sys: :admin
@@ -72,8 +100,8 @@ module Deployku
72
100
  user_name = 'user_' + SecureRandom.uuid.gsub('-','')
73
101
  user_passwd = SecureRandom.uuid
74
102
  database_url = "postgres://#{user_name}:#{user_passwd}@#{container_name(name)}/#{db}"
75
- system "echo \"#{@config['env']['POSTGRES_PASSWORD']}\n\" \"CREATE USER #{user_name} WITH PASSWORD '#{user_passwd}';\" | psql -h #{ip} -U postgres"
76
- system "echo \"#{@config['env']['POSTGRES_PASSWORD']}\n\" 'GRANT ALL ON DATABASE #{db} TO #{user_name};' | psql -h #{ip} -U postgres"
103
+ system "echo \"CREATE USER #{user_name} WITH PASSWORD '#{user_passwd}';\" | PGPASSWORD=\"#{@config['env']['POSTGRES_PASSWORD']}\" psql -h #{ip} -U postgres"
104
+ system "echo 'GRANT ALL ON DATABASE #{db} TO #{user_name};' | PGPASSWORD=\"#{@config['env']['POSTGRES_PASSWORD']}\" psql -h #{ip} -U postgres"
77
105
  if $?.exitstatus == 0
78
106
  Deployku::AppPlugin.run('config:set', [app_name, 'DATABASE_URL', database_url])
79
107
  Deployku::AppPlugin.run(:link, [app_name, container_name(name)])
@@ -92,6 +120,20 @@ module Deployku
92
120
  system "PGPASSWORD=\"#{@config['env']['POSTGRES_PASSWORD']}\" psql -h #{ip} -U postgres #{dbname}"
93
121
  end
94
122
 
123
+ describe 'db:connect:app', '<NAME> <APP_NAME>', 'connect to database as an app user and enter prompt', acl_app: { 1 => :admin }
124
+ def db_connect_app(name, app_name)
125
+ config_load(name)
126
+ db_id = get_container_id(name)
127
+ ip = Deployku::Engine.ip(db_id)
128
+ database_url = Deployku::AppPlugin.instance.config_get(app_name, 'DATABASE_URL')
129
+ if database_url =~ /postgres:\/\/([^:]+):([^@]+)@[^\/]+\/([^\/]+)/
130
+ user_name, password, dbname = $1, $2, $3
131
+ system "PGPASSWORD=\"#{password}\" psql -h #{ip} -U #{user_name} #{dbname}"
132
+ else
133
+ puts "Wrong DATABASE_URL: #{database_url}"
134
+ end
135
+ end
136
+
95
137
  # methods from containerable
96
138
  describe :start, '<NAME>', 'starts container', acl_sys: :admin
97
139
  def start(app_name)
@@ -103,6 +145,7 @@ module Deployku
103
145
  end
104
146
  @config['env']['PGDATA'] = '/postgresql/' unless @config['env']['PGDATA']
105
147
  @config['env']['POSTGRES_PASSWORD'] = SecureRandom.uuid unless @config['env']['POSTGRES_PASSWORD']
148
+ @config['env']['PGPASSWORD'] = @config['env']['POSTGRES_PASSWORD']
106
149
  config_save(app_name)
107
150
 
108
151
  Deployku::Config.merge!(@config)
@@ -112,6 +155,13 @@ module Deployku
112
155
  puts "Container #{app_hash} started."
113
156
  end
114
157
 
158
+ describe :run, '<NAME> <CMD>', 'starts a cmd in postgresql environment', acl_sys: :admin
159
+ def run(app_name, *cmd)
160
+ config_load(app_name)
161
+ Deployku::Config.merge!(@config)
162
+ Deployku::Engine.run(@config['from'], dir(app_name), *cmd)
163
+ end
164
+
115
165
  describe :status, '<NAME>', 'show container status', acl_sys: :admin
116
166
  describe :stop, '<NAME>', 'stops running container', acl_sys: :admin
117
167
  describe :restart, '<NAME>', 'restarts container', acl_sys: :admin
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deployku
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Petr Kovář
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-22 00:00:00.000000000 Z
11
+ date: 2016-02-21 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: pejuko@gmail.com