summaryrefslogtreecommitdiff
path: root/docs/nodo.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/nodo.md')
-rw-r--r--docs/nodo.md162
1 files changed, 162 insertions, 0 deletions
diff --git a/docs/nodo.md b/docs/nodo.md
new file mode 100644
index 0000000..77bbd85
--- /dev/null
+++ b/docs/nodo.md
@@ -0,0 +1,162 @@
+# 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](/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.