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