Commit ca349857155d74522ac500c3a3bf419bf475395d
1 parent
28a8fdc6
Exists in
master
and in
90 other branches
checkpoint + Data for the staging environment
Showing
12 changed files
with
288 additions
and
13 deletions
Show diff stats
| @@ -0,0 +1,15 @@ | @@ -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 |
| @@ -0,0 +1,33 @@ | @@ -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 | admins: | 1 | admins: |
| 2 | - - | ||
| 3 | - - Paulo Meirelles | ||
| 4 | - - paulo@softwarelivre.org | ||
| 5 | -external_hostname: softwarepublico.dev | 2 | + - ["Paulo Meirelles", "paulo@softwarelivre.org"] |
| 6 | site_url: https://softwarepublico.dev | 3 | site_url: https://softwarepublico.dev |
| 4 | +external_hostname: softwarepublico.dev | ||
| 5 | +external_ip: 10.10.10.6 | ||
| 7 | colab_from_address: '"Portal do Software Publico" <noreply@softwarepublico.dev>' | 6 | colab_from_address: '"Portal do Software Publico" <noreply@softwarepublico.dev>' |
| 8 | server_email: '"Portal do Software Publico" <noreply@softwarepublico.dev>' | 7 | server_email: '"Portal do Software Publico" <noreply@softwarepublico.dev>' |
| 9 | email_subject_prefix: '[spb]' | 8 | email_subject_prefix: '[spb]' |
| 10 | lists_hostname: listas.softwarepublico.dev | 9 | lists_hostname: listas.softwarepublico.dev |
| 11 | lists_admin: paulo@softwarelivre.org | 10 | lists_admin: paulo@softwarelivre.org |
| 12 | relay_hostname: relay.softwarepublico.dev | 11 | relay_hostname: relay.softwarepublico.dev |
| 12 | +relay_ip: 10.10.10.3 | ||
| 13 | alt_ssh_port: 5555 | 13 | alt_ssh_port: 5555 |
| 14 | from_address: noreply@softwarepublico.dev | 14 | from_address: noreply@softwarepublico.dev |
config/production/config.yaml
| 1 | admins: | 1 | admins: |
| 2 | - - | ||
| 3 | - - Paulo Meirelles | ||
| 4 | - - paulo@softwarelivre.org | 2 | + - ["Paulo Meirelles", "paulo@softwarelivre.org"] |
| 5 | external_hostname: beta.softwarepublico.gov.br | 3 | external_hostname: beta.softwarepublico.gov.br |
| 6 | external_ip: 164.41.9.49 | 4 | external_ip: 164.41.9.49 |
| 7 | site_url: https://beta.softwarepublico.gov.br | 5 | site_url: https://beta.softwarepublico.gov.br |
docs/.gitignore
docs/arquitetura.rst
| @@ -6,3 +6,13 @@ A figura a seguir representa a arquitetura do SPB. | @@ -6,3 +6,13 @@ A figura a seguir representa a arquitetura do SPB. | ||
| 6 | .. TODO incluir uma figura feita manualmente, a gente deve ter isso de | 6 | .. TODO incluir uma figura feita manualmente, a gente deve ter isso de |
| 7 | .. apresentações anterires | 7 | .. apresentações anterires |
| 8 | .. image:: architecture.png | 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 |
| @@ -0,0 +1,10 @@ | @@ -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
| @@ -0,0 +1,200 @@ | @@ -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 | # autogenerated DNS documentation | 1 | # autogenerated DNS documentation |
| 2 | 2 | ||
| 3 | BUILT += dns.rst | 3 | BUILT += dns.rst |
| 4 | - | ||
| 5 | dns.rst: ../test/dns_test.sh | 4 | dns.rst: ../test/dns_test.sh |
| 6 | (cd .. && sh test/dns_test.sh --doc) > $@ | 5 | (cd .. && sh test/dns_test.sh --doc) > $@ |
| 7 | 6 | ||
| 8 | BUILT += architecture.png | 7 | BUILT += architecture.png |
| 9 | - | ||
| 10 | architecture.png: architecture.dot | 8 | architecture.png: architecture.dot |
| 11 | dot -Tpng -o $@ $< | 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 | CLEAN_FILES += $(BUILT) | 17 | CLEAN_FILES += $(BUILT) |
docs/manutencao.rst