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