summaryrefslogtreecommitdiff
path: root/nodo.mdwn
blob: fa49180c3fb00097b2ebd24ed8dbbadd4bcbc8f5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
[[!toc levels=4]]

Adicionando um nodo 
===================

Procedimento para adicionar um novo nodo à infraestrutura.

Assumindo
---------

Neste exemplo, assumiremos os seguites parâmetros:

    new=novo-host                         # hostname do novo nodo
    hydra=nome-do-grupo                   # nome da hydra
    domain="`hydra $hydra config domain`" # dominio do projeto

Ainda:

* `admin@box$`: indica prompt da máquina do/a administrador.
* `root@nodo$`: indica o prompt do novo nodo.
* `root@master$`: indica o prompt do master.

Configuração de DNS
-------------------

O primeiro passo é criar uma entrade de DNS para o novo nodo. Use uma das
seguintes configurações na interface de atualização de DNS, substituindo
`$new`, `$ip` ou `example.org` pelos valores apropriados.

No caso de um registro `A`:

    $new 3600 IN A $ip

No caso de um `CNAME`:

    $new 3600 IN CNAME example.org.

Provisionamento
---------------

Esta consiste na criação do nodo -- máquina virtual ou servidor físico, podendo ser feita de dois modos:

* Via puppet na própria infraestrutura da `$hydra`.
  * No caso de um servidor físico, proceda [apropriadamente](/install).
  * No caso de uma máquina virtual, defina-a no manifest do puppet da máquina
    hospedeira usando o padrão de virtualização desejado.
* Solicitando a um coletivo hospedeiro altamente confiável.

Definição do nodo
-----------------

Definição básica do nodo:

    admin@box$ hydra $hydra newnode $new # cria definicoes minimas para o nodo
    admin@box$ hydra $hydra newkeys      # criar as chaves necessarias para o nodo

Após esses comandos, é preciso editar o arquivo `puppet/hiera/production/domain/$domain/$new.$domain.yaml`
e ajustar configurações básicas de chaves, senhas, etc.

Em seguida, submeta as mudanças para o repositório:

    admin@box$ cd `hydra $hydra folder`
    admin@box$ git commit -a -m "Adicionando nodo $new"

Configurando o puppet
---------------------

Instale o pacote:

    root@nodo$ apt-get install puppet

Lembre-se de iniciar o `puppet agent` pela primeira vez através de um comando do tipo

    root@nodo$ puppet agent --server puppet.`facter domain` --pluginsync true --waitforcert 60 --digest-sha1 --test

No caso de uma porta fora do padrão, use o parâmetro `--masterport`. Em seguida, verifique se
os fingerprints dos certificados (master e nodo) coincidem. No master:

    root@master$ puppet cert list --digest sha1 | grep camada.projeto.org

Caso os fingerprints batam, basta liberar o novo nodo a partir do host em que roda o master como o comando

    root@master$ puppet cert sign camada.projeto.org

Assista as mudanças nos arquivos de log (`/var/log/daemon.log` ou `/var/log/syslog`):

    root@nodo$ tail -F /var/log/daemon.log /var/log/syslog

Mais detalhes [aqui](http://projects.puppetlabs.com/projects/1/wiki/certificates_and_security) sobre certificados e segurança.

Deploy da Hydra Suite
---------------------

Faça o deploy da hidra suite no novo nodo:

    admin@box$ hydra $projeto deploy camada.projeto.org

Chaves de backup
----------------

Envie a chave OpenPGP gerada para backups no novo nodo:

    admin@box$ hydra $projeto import-key camada.projeto.org

Fingerprints e Monkeysphere
---------------------------

Verifique os fingerprints do SSH e do puppet:

    root@nodo$ hydractl ssh-finger
    root@nodo$ hydractl puppet-finger

Opcionalmente, proceda com a [configuração das chaves de serviço do monkeysphere](http://web.monkeysphere.info/doc/host-keys/).

Inscrição em lista de mensagens
-------------------------------

Caso o alias de email para `root` esteja configurado para o endereço de uma lista de discussão privada de email (o que permite um grupo de administradores/as monitorarem mensagens de sistema), certifique-se de configurar os endereços de `root@camada.projeto.org` e demais endereços como assinantes da lista no modo `no mail` (sem recebimento). Assim, eles poderão enviar mensagens mas não receberão nenhuma mensagem da lista.