Commit ca349857155d74522ac500c3a3bf419bf475395d
1 parent
28a8fdc6
Exists in
master
and in
36 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 @@ |
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 @@ |
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
docs/.gitignore
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/implantacao.rst
... | ... | @@ -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