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.
|