From 07d75df75ada34ef4b7de9cb07770b19251520f1 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sun, 1 Oct 2017 17:21:16 -0300 Subject: Change markdown extension to .md --- nodo.md | 157 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 nodo.md (limited to 'nodo.md') diff --git a/nodo.md b/nodo.md new file mode 100644 index 0000000..5f1e289 --- /dev/null +++ b/nodo.md @@ -0,0 +1,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. -- cgit v1.2.3