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 +4 -4
- data/README.md +17 -1
- data/deployku.gemspec +1 -1
- data/lib/deployku/configurable.rb +5 -0
- data/lib/deployku/plugins/postgres.rb +54 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d820a40a2faa5a55dbf1ec2950e2e8493f956006
|
4
|
+
data.tar.gz: 368c32c1335fe5498bf9671619e0cdef0b86e27f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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.
|
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"]
|
@@ -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
|
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 \"
|
76
|
-
system "echo
|
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.
|
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:
|
11
|
+
date: 2016-02-21 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email: pejuko@gmail.com
|