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