aboutsummaryrefslogtreecommitdiff
path: root/nodo.mdwn
blob: 5f1e2891fd0260000c739fa832b43686f3f69291 (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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
[[!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.

No caso de uma máquina virtual hospedada numa máquina física do grupo, considere a [faixa de alocação](allocation) de IPS.

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

Chaves
------

Envie a chaves geradas para o novo nodo:

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

No caso de chaves para conexões TLS, envie-as juntamente com o certificado de cada domínio:

    admin@box$ hydra $hydra import-certs $node.$domain [certs]

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 a instalação da hidra suite no novo nodo:

    admin@box$ hydra $hydra install $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.

Retirando um nodo
=================

Para descomissionar um nodo, proceda na máquina administrativa:

    admin@box$ hydra $hydra sync
    admin@box$ cd hydra $hydra folder
    admin@box$ find -name "$node*" -exec rm {} \;
    admin@box$ $EDITOR manifests/nodes.pp # remova a linha de inclusao do nodo
    admin@box$ git status                 # revisao
    admin@box$ git commit -a -m "Descomissionando $node"
    admin@box$ git push

Em seguida, no nodo master:

    root@master# puppet cert clean $node.$domain
    root@master# hydractl puppet-clean-stored $node.domain

Por fim:

* Checar backups remoto do nodo, caso se queira recuperar algum dado no futuro!
* Apagar entradas DNS.
* Chaves no keyringer não precisam ser movidas necessariamente, pois podem ser úteis para acesso dos backups.
* Limpar página de fingerprints.
* Revogar chaves (OpenPGP, SSL), quando cabível.