Commit ca349857155d74522ac500c3a3bf419bf475395d

Authored by Antonio Terceiro
1 parent 28a8fdc6

checkpoint + Data for the staging environment

config/homologa/config.yaml 0 → 100644
... ... @@ -0,0 +1,15 @@
  1 +admins:
  2 + - ["Nayanne Araújo", "nayanne.bonifacio@planejamento.gov.br"]
  3 + - ["Marisa Souza dos Santos", "marisa.santos@planejamento.gov.br"]
  4 +external_hostname: homologa.softwarepublico.gov.br
  5 +external_ip: 189.9.151.65
  6 +site_url: https://homologa.softwarepublico.gov.br
  7 +colab_from_address: '"Portal do Software Publico (homologação)" <noreply@homologa.softwarepublico.gov.br>'
  8 +server_email: '"Portal do Software Publico (homologação)" <noreply@homologa.softwarepublico.gov.br>'
  9 +email_subject_prefix: '[spb]'
  10 +lists_hostname: listas.homologa.softwarepublico.gov.br
  11 +lists_admin: nayanne.bonifacio@planejamento.gov.br
  12 +relay_hostname: relay.homologa.softwarepublico.gov.br
  13 +relay_ip: 189.9.151.66
  14 +alt_ssh_port: 55555
  15 +from_address: noreply@homologa.softwarepublico.gov.br
... ...
config/homologa/ips.yaml 0 → 100644
... ... @@ -0,0 +1,5 @@
  1 +reverseproxy: 10.0.13.2
  2 +database: 10.0.13.6
  3 +social: 10.0.13.4
  4 +email: 10.0.13.5
  5 +integration: 10.0.13.7
... ...
config/homologa/ssh_config 0 → 100644
... ... @@ -0,0 +1,33 @@
  1 +Host *
  2 + ForwardAgent yes
  3 +
  4 +Host reverseproxy
  5 + Hostname 164.41.9.49
  6 + Port 55555
  7 +
  8 +Host reverseproxy.unconfigured
  9 + Hostname 164.41.9.49
  10 +
  11 +Host database
  12 + Hostname 10.10.40.47
  13 + Port 55555
  14 + # connect via reverseproxy host
  15 + ProxyCommand ssh 164.41.9.49 -p %p nc %h 22
  16 +
  17 +Host social
  18 + Hostname 10.10.40.46
  19 + Port 55555
  20 + # connect via reverseproxy host
  21 + ProxyCommand ssh 164.41.9.49 -p %p nc %h 22
  22 +
  23 +Host email
  24 + Hostname 10.10.40.48
  25 + Port 55555
  26 + # connect via reverseproxy host
  27 + ProxyCommand ssh 164.41.9.49 -p %p nc %h 22
  28 +
  29 +Host integration
  30 + Hostname 10.10.40.45
  31 + Port 55555
  32 + # connect via reverseproxy host
  33 + ProxyCommand ssh 164.41.9.49 -p %p nc %h 22
... ...
config/local/config.yaml
1 1 admins:
2   - -
3   - - Paulo Meirelles
4   - - paulo@softwarelivre.org
5   -external_hostname: softwarepublico.dev
  2 + - ["Paulo Meirelles", "paulo@softwarelivre.org"]
6 3 site_url: https://softwarepublico.dev
  4 +external_hostname: softwarepublico.dev
  5 +external_ip: 10.10.10.6
7 6 colab_from_address: '"Portal do Software Publico" <noreply@softwarepublico.dev>'
8 7 server_email: '"Portal do Software Publico" <noreply@softwarepublico.dev>'
9 8 email_subject_prefix: '[spb]'
10 9 lists_hostname: listas.softwarepublico.dev
11 10 lists_admin: paulo@softwarelivre.org
12 11 relay_hostname: relay.softwarepublico.dev
  12 +relay_ip: 10.10.10.3
13 13 alt_ssh_port: 5555
14 14 from_address: noreply@softwarepublico.dev
... ...
config/production/config.yaml
1 1 admins:
2   - -
3   - - Paulo Meirelles
4   - - paulo@softwarelivre.org
  2 + - ["Paulo Meirelles", "paulo@softwarelivre.org"]
5 3 external_hostname: beta.softwarepublico.gov.br
6 4 external_ip: 164.41.9.49
7 5 site_url: https://beta.softwarepublico.gov.br
... ...
docs/.gitignore
1 1 architecture.png
  2 +implantacao.rst
... ...
docs/arquitetura.rst
... ... @@ -6,3 +6,13 @@ A figura a seguir representa a arquitetura do SPB.
6 6 .. TODO incluir uma figura feita manualmente, a gente deve ter isso de
7 7 .. apresentações anterires
8 8 .. image:: architecture.png
  9 +
  10 +TODO:
  11 +
  12 +* descrever arquitetura
  13 +* descrever papel de cada máquina
  14 +* descrever conexões
  15 +* adicionar links com o repositório de gestão de configuração
  16 +
  17 +* descrever repositório de gestão de configuração
  18 +* descrever como o chake funciona
... ...
docs/build.rb 0 → 100644
... ... @@ -0,0 +1,10 @@
  1 +$SPB_ENV = ENV.fetch('SPB_ENV', 'local')
  2 +
  3 +$_.gsub!('@@SPB_ENV@@', $SPB_ENV)
  4 +
  5 +$_.gsub!(/@@config\(([^\)]*)\)@@/) do |f|
  6 + lines = File.read("../config/#{$SPB_ENV}/#{$1}").lines
  7 + lines.shift + lines.map do |line|
  8 + ' ' + line
  9 + end.join
  10 +end
... ...
docs/implantacao.rst
... ... @@ -1,4 +0,0 @@
1   -Implantação
2   -===========
3   -
4   -.. include:: dns.rst
docs/implantacao.rst.in 0 → 100644
... ... @@ -0,0 +1,200 @@
  1 +Implantação
  2 +===========
  3 +
  4 +Preparação da estação de trabalho
  5 +---------------------------------
  6 +
  7 +Para gerenciar o SPB, é necessária uma estação de trabalho GNU/Linux,
  8 +que pode ser Debian 8 ou posterior, Ubuntu 14.04 ou superior, ou CentOS
  9 +7 ou superior (e equivalentes como RHEL 7 ou superior, ou Fedora).
  10 +
  11 +As seguintes ferramentas serão necessárias:
  12 +
  13 +* git_: ferramenta de controle de versão.
  14 +* chake_: ferramenta de gestão de configuração.
  15 +
  16 +.. _chake: https://gitlab.com/terceiro/chake
  17 +.. _git: http://git-scm.com/
  18 +
  19 +Para instalar em Debian/Ubuntu::
  20 +
  21 + $ sudo apt-get install git ruby
  22 + $ sudo gem install chake
  23 +
  24 +Para instalar em CentOS/RHEL/Fedora::
  25 +
  26 + $ sudo yum install git ruby
  27 + $ sudo gem install chake
  28 +
  29 +Além dessas ferramentas, será necessário um emulador de terminal. O
  30 +emulador de terminal padrão do seu ambiente de trabalho, ou qualquer
  31 +outro, vai servir.
  32 +
  33 +Obtendo o repositório de configuração
  34 +-------------------------------------
  35 +
  36 +Para iniciar, é necessário uma conta e usuário no SPB, com uma chave SSH
  37 +configurada.
  38 +
  39 +Para obter o repositório de configuração, é necessário clonar o
  40 +repositório com ``git``::
  41 +
  42 + $ git clone git@beta.softwarepublico.gov.br:softwarepublico/softwarepublico.git
  43 +
  44 +A partir daqui, todos os passos serão executados de dentro do
  45 +repositório, então se certifique que o seu *shell* está no diretório
  46 +onde foi clonado o repositório::
  47 +
  48 + $ cd softwarepublico/
  49 +
  50 +
  51 +Preparação dos servidores
  52 +-------------------------
  53 +
  54 +* Os servidores precisam estar acessíveis por SSH. Caso necessário,
  55 + podem ser feitas configurações do SSH em
  56 + ``config/@@SPB_ENV@@/ssh_config`` para isso.
  57 +* O usuário que vai conectar via SSH nos servidores precisa:
  58 + * ter acesso SSH configurado via chave SSH para evitar digitar senha.
  59 + * ter permissão de usar ``sudo`` sem a necessidade de digitar senha.
  60 +
  61 +Configuração do ambiente alvo
  62 +-----------------------------
  63 +
  64 +O SPB tem o conceito de "ambientes", que são diferentes instalações da
  65 +mesma plataforma. Todas as informações específicas sobre um determinado
  66 +ambiente estão centralizadas em arquivos dentro do diretório
  67 +``config/${ambiente}/``. Por exemplo, o ambiente "local", que se destina
  68 +ao uso para desenvolvimento local com máquinas virtuais, possui o
  69 +seguinte conteúdo::
  70 +
  71 + $ find config/local/ | sort
  72 + config/local/config.yaml
  73 + config/local/ips.yaml
  74 + config/local/ssh_config
  75 +
  76 +Cada um destes arquivos possui uma finalidade:
  77 +
  78 +=============== =======================================================
  79 +Arquivo Finalidade
  80 +=============== =======================================================
  81 +``config.yaml`` Parâmetros gerais de configuração
  82 +``ips.yaml`` Tabela de IP's (na rede local) das máquinas que compõem
  83 + o ambiente.
  84 +``ssh_config`` Configuração necessária para o SSH. Pode ser um arquivo
  85 + caso não seja necessária nenhuma configuração especial
  86 + para acessar as máquinas (e.g. se você está na mesma
  87 + rede local que elas).
  88 +=============== =======================================================
  89 +
  90 +Vamos agora verificar o conteúdo de cada arquivo no ambiente
  91 +**@@SPB_ENV@@**. Primeiro, ``config.yaml``:
  92 +
  93 +.. code-block:: yaml
  94 +
  95 + @@config(config.yaml)@@
  96 +
  97 +Para nossa sorte, o significado de cada um dos campo acima deve ser
  98 +autoexplicativo.
  99 +
  100 +O arquivo ``ips.yaml`` contém uma tabela com os endereços IP de cada
  101 +servidor da plataforma na rede local. Exemplo:
  102 +
  103 +.. code-block:: yaml
  104 +
  105 + @@config(ips.yaml)@@
  106 +
  107 +Já o arquivo ``ssh_config`` contém opções padrão de configuração do
  108 +``ssh`` para conexão às máquinas::
  109 +
  110 + @@config(ssh_config)@@
  111 +
  112 +Configuração do DNS
  113 +-------------------
  114 +
  115 +A tabela a seguir foi gerada dinamicamente a partir da configuração do
  116 +ambiente **@@SPB_ENV@@**. As seguintes entradas precisam ser configuradas no
  117 +DNS:
  118 +
  119 +.. include:: dns.rst
  120 +
  121 +Verificando o ambiente
  122 +----------------------
  123 +
  124 +Para listar as máquinas do ambiente::
  125 +
  126 + $ rake nodes SPB_ENV=@@SPB_ENV@@
  127 +
  128 +O comando acima deve dar o seguinte resultado::
  129 +
  130 + integration ssh
  131 + email ssh
  132 + social ssh
  133 + database ssh
  134 + reverseproxy ssh
  135 +
  136 +Note que todas as vezes que formos chamar ``rake``, será preciso
  137 +informar sobre qual ambiente desejamos operar (``SPB_ENV=@@SPB_ENV@@``).
  138 +Caso você for operar sobre apenas um ambiente, ou caso você queira
  139 +evitar digitação, você pode criar um arquivo ``local.rake`` na raiz do
  140 +repositório com o seguinte conteúdo::
  141 +
  142 + ENV['SPB_ENV'] ||= '@@SPB_ENV@@'
  143 +
  144 +Isto fará com que o valor e ``SPB_ENV`` seja sempre ``@@SPB_ENV@@``, a
  145 +não ser que você informe na linha de comando. Daqui para frente, vamos
  146 +representar o parâmetro ``SPB_ENV=@@SPB_ENV@@`` entre ``[]`` pra lembrar
  147 +que se ele estiver configurado no ``local.rake``, pode ser omitido.
  148 +
  149 +Para testar a conectividade às máquinas, podemos executar um comando
  150 +nelas::
  151 +
  152 + $ rake nodes [SPB_ENV=@@SPB_ENV@@]
  153 + $ <PROMPT PARA VOCÊ DIGITAR>
  154 +
  155 +No prompt, entre um comando simples como ``sudo date``. O resultado deve ser
  156 +parecido com o seguinte::
  157 +
  158 + $ rake run
  159 + $ sudo date
  160 + integration: $ sudo date
  161 + integration: Qui Mai 14 18:59:19 BRT 2015
  162 + email: $ sudo date
  163 + email: Qui Mai 14 18:59:22 BRT 2015
  164 + social: $ sudo date
  165 + social: Qui Mai 14 18:59:24 BRT 2015
  166 + database: $ sudo date
  167 + database: Qui Mai 14 18:59:27 BRT 2015
  168 + reverseproxy: $ sudo date
  169 + reverseproxy: Qui Mai 14 18:59:28 BRT 2015
  170 +
  171 +Se o resultado se parece com o exemplo acima, e você não precisou digitar a sua
  172 +senha nehuma vez, significa que 1) você conseguiu conectar em todas as máquinas
  173 +e 2) o sudo sem senha está configurado corretamente. Está tudo certo para
  174 +começar!
  175 +
  176 +Primeira instalação
  177 +-------------------
  178 +
  179 +Uma vez configurados os parâmetros em ``config/@@SPB_ENV@@/``, podemos
  180 +dar início à instalação. O primeiro passo é uma preconfiguração que
  181 +precisamos fazer::
  182 +
  183 + $ rake preconfig [SPB_ENV=@@SPB_ENV@@]
  184 +
  185 +
  186 +This will perform some initial configuration to the system that is required
  187 +before doing the actual deployment.
  188 +
  189 +After that:
  190 +
  191 +```bash
  192 +$ rake SPB_ENV=production # deploys all servers
  193 +$ rake nodes SPB_ENV=production # lists all servers
  194 +$ rake converge:$server SPB_ENV=production # deploys only $server
  195 +```
  196 +
  197 +You can also do `export SPB_ENV=production` in your shell and omit it in the
  198 +`rake` calls.
  199 +
  200 +See the output of `rake -T` for other tasks.
... ...
docs/local.mk
1 1 # autogenerated DNS documentation
2 2  
3 3 BUILT += dns.rst
4   -
5 4 dns.rst: ../test/dns_test.sh
6 5 (cd .. && sh test/dns_test.sh --doc) > $@
7 6  
8 7 BUILT += architecture.png
9   -
10 8 architecture.png: architecture.dot
11 9 dot -Tpng -o $@ $<
12 10  
  11 +SPB_ENV ?= local
  12 +
  13 +BUILT += $(patsubst %.in, %, $(wildcard *.rst.in))
  14 +%.rst: %.rst.in build.rb
  15 + ruby -p build.rb $< > $@ || ($(RM) $@; false)
13 16  
14 17 CLEAN_FILES += $(BUILT)
... ...
docs/manutencao.rst
1 1 Manutenção
2 2 ==========
  3 +
  4 +* mantendo o sistema atualizado
  5 +
  6 +* modificando configurações
... ...