Gestão de nodos¶
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.
- 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 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 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.
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.