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 # 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`
admin@box$ git commit -a -m "Adicionando nodo $node"
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.
|