Commit 942a634a3532f3bc7e89bad78fd48be7e8c2fc5b
1 parent
0f470404
Exists in
r5_design
and in
1 other branch
Remove IP addresses from main configuration file
This way we can use the exact same nodes.yaml against different deployment sites (e.g. development, staging, production).
Showing
6 changed files
with
36 additions
and
28 deletions
Show diff stats
README.md
| @@ -14,13 +14,16 @@ For development | @@ -14,13 +14,16 @@ For development | ||
| 14 | 14 | ||
| 15 | ## Configuration parameters | 15 | ## Configuration parameters |
| 16 | 16 | ||
| 17 | -For development, all configuration parameters are defined in the file | ||
| 18 | -`nodes.yaml`. | 17 | +All configuration parameters are defined in `nodes.yaml`, with exception of IP |
| 18 | +addresses, which are defined in different files: | ||
| 19 | 19 | ||
| 20 | -For production, create a new file based on `nodes.yaml`, e.g. | ||
| 21 | -`prod.yaml`. | 20 | +- for development, the IP addresses of the Vagrant VMs are defined in |
| 21 | + ips.development.yaml. | ||
| 22 | 22 | ||
| 23 | -Todos os parâmetros de configuração estão definidos no arquivo nodes.yaml | 23 | +- for production, you need to create a new file called `ips.production.yaml` |
| 24 | + | ||
| 25 | +You will probably not need to change nodes.yaml unless you are developing the | ||
| 26 | +deployment process. | ||
| 24 | 27 | ||
| 25 | ## Deploy | 28 | ## Deploy |
| 26 | 29 | ||
| @@ -49,13 +52,13 @@ $ rake converge:$server # deploys only $server | @@ -49,13 +52,13 @@ $ rake converge:$server # deploys only $server | ||
| 49 | * TODO: document SSH configuration | 52 | * TODO: document SSH configuration |
| 50 | 53 | ||
| 51 | ```bash | 54 | ```bash |
| 52 | -$ rake NODES=prod.yaml # deploys all servers | ||
| 53 | -$ rake nodes NODES=prod.yaml # lists all servers | ||
| 54 | -$ rake converge:$server NODES=prod.yaml # deploys only $server | 55 | +$ rake SPB_ENV=production # deploys all servers |
| 56 | +$ rake nodes SPB_ENV=production # lists all servers | ||
| 57 | +$ rake converge:$server SPB_ENV=production # deploys only $server | ||
| 55 | ``` | 58 | ``` |
| 56 | 59 | ||
| 57 | -You can also do `export NODES=prod.yaml` in your shell and omit the | ||
| 58 | -`NODES=prod.yaml` parameter in the `rake` calls. | 60 | +You can also do `export SPB_ENV=production` in your shell and omit it in the |
| 61 | +`rake` calls. | ||
| 59 | 62 | ||
| 60 | See the output of `rake -T` for other tasks. | 63 | See the output of `rake -T` for other tasks. |
| 61 | 64 |
Rakefile
| 1 | require 'chake' | 1 | require 'chake' |
| 2 | 2 | ||
| 3 | +$SPB_ENV = ENV.fetch('SPB_ENV', 'development') | ||
| 4 | +$SPB_IPS = "ips.#{$SPB_ENV}.yaml" | ||
| 5 | + | ||
| 6 | +ips = YAML.load_file($SPB_IPS) | ||
| 7 | +$nodes.each do |node| | ||
| 8 | + node.data['peers'] = ips | ||
| 9 | +end | ||
| 10 | + | ||
| 11 | +task :console do | ||
| 12 | + require 'pry' | ||
| 13 | + binding.pry | ||
| 14 | +end | ||
| 15 | + | ||
| 3 | task :test do | 16 | task :test do |
| 4 | sh './test/run_all' | 17 | sh './test/run_all' |
| 5 | end | 18 | end |
| @@ -7,7 +20,7 @@ end | @@ -7,7 +20,7 @@ end | ||
| 7 | task :default => :test | 20 | task :default => :test |
| 8 | 21 | ||
| 9 | file 'ssh_config.erb' | 22 | file 'ssh_config.erb' |
| 10 | -file '.ssh_config' => ['nodes.yaml', 'ssh_config.erb'] do |t| | 23 | +file '.ssh_config' => ['nodes.yaml', $SPB_IPS,'ssh_config.erb'] do |t| |
| 11 | require 'erb' | 24 | require 'erb' |
| 12 | template = ERB.new(File.read('ssh_config.erb')) | 25 | template = ERB.new(File.read('ssh_config.erb')) |
| 13 | File.open(t.name, 'w') do |f| | 26 | File.open(t.name, 'w') do |f| |
Vagrantfile
| @@ -13,7 +13,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| | @@ -13,7 +13,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| | ||
| 13 | config.vm.provision 'shell', path: 'utils/proxy.sh', args: [proxy] | 13 | config.vm.provision 'shell', path: 'utils/proxy.sh', args: [proxy] |
| 14 | end | 14 | end |
| 15 | 15 | ||
| 16 | - ips = YAML.load_file('nodes.yaml').first[1]['peers'] | 16 | + ips = YAML.load_file('ips.development.yaml') |
| 17 | 17 | ||
| 18 | config.vm.define 'database' do |database| | 18 | config.vm.define 'database' do |database| |
| 19 | database.vm.network 'private_network', ip: ips['database'] | 19 | database.vm.network 'private_network', ip: ips['database'] |
nodes.yaml
| @@ -15,41 +15,27 @@ vagrant@integration: | @@ -15,41 +15,27 @@ vagrant@integration: | ||
| 15 | lists_hostname: listas.softwarepublico.dev | 15 | lists_hostname: listas.softwarepublico.dev |
| 16 | lists_admin: paulo@softwarelivre.org | 16 | lists_admin: paulo@softwarelivre.org |
| 17 | relay_hostname: relay.softwarepublico.dev | 17 | relay_hostname: relay.softwarepublico.dev |
| 18 | - peers: &PEERS | ||
| 19 | - integration: 10.10.10.2 | ||
| 20 | - email: 10.10.10.3 | ||
| 21 | - social: 10.10.10.4 | ||
| 22 | - database: 10.10.10.5 | ||
| 23 | - reverseproxy: 10.10.10.6 | ||
| 24 | vagrant@email: | 18 | vagrant@email: |
| 25 | run_list: | 19 | run_list: |
| 26 | - role[server] | 20 | - role[server] |
| 27 | - role[email_server] | 21 | - role[email_server] |
| 28 | config: | 22 | config: |
| 29 | <<: *CONFIG | 23 | <<: *CONFIG |
| 30 | - peers: | ||
| 31 | - <<: *PEERS | ||
| 32 | vagrant@social: | 24 | vagrant@social: |
| 33 | run_list: | 25 | run_list: |
| 34 | - role[server] | 26 | - role[server] |
| 35 | - role[social_server] | 27 | - role[social_server] |
| 36 | config: | 28 | config: |
| 37 | <<: *CONFIG | 29 | <<: *CONFIG |
| 38 | - peers: | ||
| 39 | - <<: *PEERS | ||
| 40 | vagrant@database: | 30 | vagrant@database: |
| 41 | run_list: | 31 | run_list: |
| 42 | - role[server] | 32 | - role[server] |
| 43 | - role[database_server] | 33 | - role[database_server] |
| 44 | config: | 34 | config: |
| 45 | <<: *CONFIG | 35 | <<: *CONFIG |
| 46 | - peers: | ||
| 47 | - <<: *PEERS | ||
| 48 | vagrant@reverseproxy: | 36 | vagrant@reverseproxy: |
| 49 | run_list: | 37 | run_list: |
| 50 | - role[server] | 38 | - role[server] |
| 51 | - role[reverse_proxy_server] | 39 | - role[reverse_proxy_server] |
| 52 | config: | 40 | config: |
| 53 | <<: *CONFIG | 41 | <<: *CONFIG |
| 54 | - peers: | ||
| 55 | - <<: *PEERS |
test/ip_helper.sh
| @@ -4,7 +4,7 @@ | @@ -4,7 +4,7 @@ | ||
| 4 | # curl http://$reverseproxy | 4 | # curl http://$reverseproxy |
| 5 | # nmap -p 5423 $database | 5 | # nmap -p 5423 $database |
| 6 | # | 6 | # |
| 7 | -# Each node in the `peers:` entry in nodes.yaml will have its own variable | 7 | +# Each entry in ips.${SPB_ENV}.yaml will have its own variable |
| 8 | # | 8 | # |
| 9 | 9 | ||
| 10 | -eval $(sed -E '/[0-9]{1,3}\./!d; s/^ *//; s/: */=/' ${ROOTDIR:-/vagrant}/nodes.yaml) | 10 | +eval $(sed -E '/[0-9]{1,3}\./!d; s/^ *//; s/: */=/' ${ROOTDIR:-.}/ips.${SPB_ENV:-development}.yaml) |