summaryrefslogtreecommitdiff
path: root/nodo.md
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2017-10-01 17:21:16 -0300
committerSilvio Rhatto <rhatto@riseup.net>2017-10-01 17:21:16 -0300
commit07d75df75ada34ef4b7de9cb07770b19251520f1 (patch)
treea3b814eda00e61afbaf9f778edee4ccaba92741d /nodo.md
parentef09f1fdae32c8d46b464bb50a85bb69097c211a (diff)
downloadpadrao-07d75df75ada34ef4b7de9cb07770b19251520f1.tar.gz
padrao-07d75df75ada34ef4b7de9cb07770b19251520f1.tar.bz2
Change markdown extension to .md
Diffstat (limited to 'nodo.md')
-rw-r--r--nodo.md157
1 files changed, 157 insertions, 0 deletions
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.