summaryrefslogtreecommitdiff
path: root/nodo.mdwn
blob: ed5aa6bf77d8b77cbbabe9aa5c29b847083565c9 (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
119
120
121
122
123
124
125
[[!toc levels=4]]

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

Procedimento para adicionar um novo nodo à infraestrutura.

Assumindo
---------

Neste exemplo, assumiremos os seguites parâmetros:

    node=novo-host       # hostname do novo nodo
    hydra=nome-do-grupo  # nome da hydra
    domain="example.org" # dominio do projeto

Ainda:

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

Certifique-se de configurar os parâmetros acima em cada um dos shells mencionados.

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
`$node`, `$ip` ou `$domain` pelos valores apropriados.

No caso de um registro `A`:

    $node 3600 IN A $ip

No caso de um `CNAME`:

    $node 3600 IN CNAME $domain.

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 $node # cria definicoes minimas para o nodo
    admin@box$ hydra $hydra newkeys $node # criar as chaves necessarias para o nodo

Após esses comandos, é preciso editar o arquivo `puppet/hiera/production/domain/$domain/$node.$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`/puppet
    admin@box$ git commit -a -m "Adicionando nodo $node" && git push

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

Instale o pacote:

    root@nodo$ apt-get install puppet

Certifique-se então que os seguintes valores correspondem a `$node.$domain`:

    root@nodo$ facter fqdn

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 --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 | grep $node.$domain

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 $node.$domain

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 $hydra deploy $node.$domain

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

Envie a chave OpenPGP gerada para backups no novo nodo:

    admin@box$ hydra $hydra import-key $node.$domain

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

Verifique os fingerprints do SSH e do puppet:

    root@nodo$   hydractl ssh-finger
    root@nodo$   hydractl puppet-finger
    root@master$ 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@$node.$domain` 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.