deployku 0.0.3 → 0.0.4

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.
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