capistrano-env_config 0.0.1 → 0.0.2
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/CHANGELOG.md +15 -0
- data/README.md +36 -2
- data/capistrano-env_config.gemspec +7 -8
- data/lib/capistrano/env_config.rb +19 -1
- data/lib/capistrano/env_config/environment.rb +43 -44
- data/lib/capistrano/env_config/version.rb +2 -2
- metadata +9 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2dec343550dfd2b3654978a89e53149fa139ca27
|
4
|
+
data.tar.gz: 26058a4ef80721f3c3cdbdfc5b57b306140abed8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af3c204fb185a1bbb94918962f6643e67c999e6788f2920c32c0d34986fcd4f949d4ff3e4f37ce28b47bd9e8938a4088e7e04e534ecdf27fda5a362a24574b57
|
7
|
+
data.tar.gz: ca1260e663d042e711b692901367768ab880e601b2d2907d06dc98fff0f1ecbba4173a3f3e69990721556680b662c8d758e0186f55c3ccf0def392f36f546c52
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
v0.0.2
|
2
|
+
------
|
3
|
+
|
4
|
+
* Removed development dependency on `gem 'rake'`
|
5
|
+
* Improved gem description. Added documentation about programatic use.
|
6
|
+
* Added configuration option for roles that env_config sets/reads the
|
7
|
+
environment variables from.
|
8
|
+
* Added an argument for specifically setting roles when using the `Environment`
|
9
|
+
class programatically.
|
10
|
+
|
11
|
+
|
12
|
+
v0.0.1
|
13
|
+
------
|
14
|
+
|
15
|
+
* Initial version.
|
data/README.md
CHANGED
@@ -1,7 +1,11 @@
|
|
1
|
+
[](https://badge.fury.io/rb/capistrano-env_config)
|
2
|
+
|
1
3
|
capistrano-env_config
|
2
4
|
=====================
|
3
5
|
|
4
|
-
A tool for managing your environment variables across your cluster.
|
6
|
+
A tool for managing your environment variables across your cluster. The library
|
7
|
+
manipulates the system-wide environment variables by modifying the
|
8
|
+
`/etc/environment` file.
|
5
9
|
|
6
10
|
Usage
|
7
11
|
-----
|
@@ -12,9 +16,31 @@ Usage
|
|
12
16
|
* `cap env:set[VARIABLE_NAME=VALUE]` – To set an environment variable
|
13
17
|
* `cap env:sync` – To synchronise the environment configuration across servers
|
14
18
|
|
19
|
+
If you need to programatically manipulate the environment you can use the
|
20
|
+
`Capistrano::EnvConfig::Environment` class like so:
|
21
|
+
|
22
|
+
```ruby
|
23
|
+
require 'capistrano/env_config/environment'
|
24
|
+
|
25
|
+
environment = Capistrano::EnvConfig::Environment.new
|
26
|
+
environment.list
|
27
|
+
environment.get( 'VARIABLE' )
|
28
|
+
environment.set( 'VARIABLE', 'VALUE' )
|
29
|
+
environment.delete( 'VARIABLE' )
|
30
|
+
environment.sync
|
31
|
+
```
|
32
|
+
|
15
33
|
Installation
|
16
34
|
------------
|
17
35
|
|
36
|
+
Add the gem to your Gemfile:
|
37
|
+
|
38
|
+
```gemfile
|
39
|
+
group :development do
|
40
|
+
gem 'capistrano-env_config'
|
41
|
+
end
|
42
|
+
```
|
43
|
+
|
18
44
|
In your server provisioning script, make sure the deploy user has write access
|
19
45
|
to the `/etc/environment` file, which is used to store the configured variables.
|
20
46
|
|
@@ -23,4 +49,12 @@ The simplest way to do that would be to:
|
|
23
49
|
```bash
|
24
50
|
chown :deploy /etc/environment
|
25
51
|
chmod g+w /etc/environment
|
26
|
-
```
|
52
|
+
```
|
53
|
+
|
54
|
+
License
|
55
|
+
-------
|
56
|
+
|
57
|
+
Copyright Itay Grudev (c) 2017.
|
58
|
+
|
59
|
+
This gem and all associated documentation is distributed under the terms of the
|
60
|
+
GNU GPL v3 license.
|
@@ -1,8 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
lib = File.expand_path( '../lib', __FILE__ )
|
4
|
-
$LOAD_PATH.unshift( lib ) unless $LOAD_PATH.include?( lib )
|
5
|
-
|
6
3
|
require 'capistrano/env_config/version'
|
7
4
|
|
8
5
|
Gem::Specification.new do |spec|
|
@@ -11,12 +8,14 @@ Gem::Specification.new do |spec|
|
|
11
8
|
spec.authors = [ 'Itay Grudev' ]
|
12
9
|
spec.email = [ 'itay+capistrano-env_config+github.com[]grudev.com' ]
|
13
10
|
spec.homepage = 'https://github.com/itay-grudev/capistrano-env_config'
|
11
|
+
spec.license = 'GPL-3.0'
|
14
12
|
spec.summary = 'A tool for managing your environment variables across your cluster.'
|
15
|
-
spec.description = <<-EOF
|
13
|
+
spec.description = <<-EOF.gsub(/^\s+/, '')
|
16
14
|
EnvConfig is a tool for setting and syncing environment variables across
|
17
|
-
your the servers in your cluster with a few simple Capistrano tasks.
|
15
|
+
your the servers in your cluster with a few simple Capistrano tasks. The
|
16
|
+
library manipulates the system-wide environment variables by modifying the
|
17
|
+
`/etc/environment` file.
|
18
18
|
EOF
|
19
|
-
spec.license = 'GPL-3.0'
|
20
19
|
|
21
20
|
spec.rubyforge_project = 'capistrano-env_config'
|
22
21
|
|
@@ -24,9 +23,9 @@ Gem::Specification.new do |spec|
|
|
24
23
|
spec.require_paths = [ 'lib' ]
|
25
24
|
|
26
25
|
spec.required_ruby_version = '>= 1.9.3'
|
27
|
-
|
26
|
+
|
27
|
+
spec.add_dependency 'capistrano', '~> 3.7'
|
28
28
|
|
29
29
|
spec.add_development_dependency 'rspec', '~> 3.6'
|
30
30
|
spec.add_development_dependency 'simplecov', '~> 0.14'
|
31
|
-
spec.add_development_dependency 'rake'
|
32
31
|
end
|
@@ -1 +1,19 @@
|
|
1
|
-
|
1
|
+
require 'capistrano/plugin'
|
2
|
+
|
3
|
+
module Capistrano
|
4
|
+
class EnvConfig < Capistrano::Plugin
|
5
|
+
|
6
|
+
def define_tasks
|
7
|
+
eval_rakefile File.expand_path( '../tasks/env_config.rake', __FILE__ )
|
8
|
+
end
|
9
|
+
|
10
|
+
def set_defaults
|
11
|
+
set_if_empty :env_config_roles, :all
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
install_plugin Capistrano::EnvConfig
|
17
|
+
|
18
|
+
require 'capistrano/env_config/environment'
|
19
|
+
require 'capistrano/env_config/version'
|
@@ -1,57 +1,56 @@
|
|
1
1
|
module Capistrano
|
2
|
-
|
3
|
-
class
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
variables[ captures[1] ] = captures[2]
|
18
|
-
end
|
2
|
+
class EnvConfig::Environment
|
3
|
+
class KeyNotSpecified < RuntimeError; end
|
4
|
+
|
5
|
+
BLANK_RE = /\A[[:space:]]*\z/
|
6
|
+
|
7
|
+
def initialize( roles = fetch( :env_config_roles ) )
|
8
|
+
variables = { }
|
9
|
+
|
10
|
+
# Acquire all configuration variables and store them in a dictionary (hash)
|
11
|
+
on roles( roles ) do
|
12
|
+
output = capture( 'cat /etc/environment' )
|
13
|
+
output.each_line do |line|
|
14
|
+
captures = line.match( /\s*([A-Z_][A-Z0-9_]*)=(.*)/ )
|
15
|
+
if captures&.length == 3
|
16
|
+
variables[ captures[1] ] = captures[2]
|
19
17
|
end
|
20
18
|
end
|
21
|
-
@variables = variables
|
22
19
|
end
|
23
20
|
|
24
|
-
|
25
|
-
|
26
|
-
return @variables[ key.to_s.upcase ]
|
27
|
-
end
|
21
|
+
@variables = variables
|
22
|
+
end
|
28
23
|
|
29
|
-
|
30
|
-
|
31
|
-
|
24
|
+
def get( key )
|
25
|
+
raise KeyNotSpecified.new if BLANK_RE === key
|
26
|
+
return @variables[ key.to_s.upcase ]
|
27
|
+
end
|
32
28
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
end
|
29
|
+
def list
|
30
|
+
@variables
|
31
|
+
end
|
37
32
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
33
|
+
def set( key, value )
|
34
|
+
raise KeyNotSpecified.new if BLANK_RE === key
|
35
|
+
@variables[ key.to_s.upcase ] = value.to_s
|
36
|
+
end
|
42
37
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
environment += "#{key.upcase}=#{value}\n"
|
48
|
-
end
|
38
|
+
def delete( key )
|
39
|
+
raise KeyNotSpecified.new if BLANK_RE === key
|
40
|
+
@variables.delete( key.to_s.upcase )
|
41
|
+
end
|
49
42
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
43
|
+
def sync( roles = fetch( :env_config_roles ) )
|
44
|
+
# Concatenate all variables and output them in the appropariate format
|
45
|
+
environment = ''
|
46
|
+
@variables.each do |key, value|
|
47
|
+
environment += "#{key.upcase}=#{value}\n"
|
48
|
+
end
|
49
|
+
|
50
|
+
# Upload the variables to all servers
|
51
|
+
on roles( roles ) do
|
52
|
+
contents = StringIO.new( environment, 'r' )
|
53
|
+
upload! contents, '/etc/environment'
|
55
54
|
end
|
56
55
|
end
|
57
56
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-env_config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Itay Grudev
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '3.
|
19
|
+
version: '3.7'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '3.
|
26
|
+
version: '3.7'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,23 +52,11 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0.14'
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
|
-
description: |2
|
70
|
-
EnvConfig is a tool for setting and syncing environment variables across
|
71
|
-
your the servers in your cluster with a few simple Capistrano tasks.}
|
55
|
+
description: |
|
56
|
+
EnvConfig is a tool for setting and syncing environment variables across
|
57
|
+
your the servers in your cluster with a few simple Capistrano tasks. The
|
58
|
+
library manipulates the system-wide environment variables by modifying the
|
59
|
+
`/etc/environment` file.
|
72
60
|
email:
|
73
61
|
- itay+capistrano-env_config+github.com[]grudev.com
|
74
62
|
executables: []
|
@@ -76,6 +64,7 @@ extensions: []
|
|
76
64
|
extra_rdoc_files: []
|
77
65
|
files:
|
78
66
|
- ".gitignore"
|
67
|
+
- CHANGELOG.md
|
79
68
|
- Gemfile
|
80
69
|
- Gemfile.lock
|
81
70
|
- LICENSE
|