Se você é como eu e tem muitas máquinas de desenvolvimento (Máquinas Virtuais também) por vários motivos, você pode combinar chaves ssh, um bash_profile inteligente e um RCS de sua escolha.
Eu ficaria em segundo usando nfs / samaba / sshfs. Uma desvantagem é que, se você não tiver acesso à rede o tempo todo, não poderá acessar o que precisa (voar, sem wifi, firewalls, problemas de roteamento etc.). As máquinas que eu mantenho em sincronia não são todas acessíveis ao mesmo tempo, mas eu quero compartilhar informações entre elas.
O seguinte é como eu fui emprestar muitas idéias da Internet.
.bash_profile poderia ter algo assim
$HOME/bin/shell_ssh_agent
Eu tenho isso em alguns lugares, mas não consigo encontrar um link para ele agora. O arquivo shell_ssh_agent:
#!/bin/bash
SSH_ENV=$HOME/.ssh/environment
#echo "starting"
function start_agent {
#echo "reaping agents"
killall ssh-agent
#echo "Initialising new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
#echo succeeded
chmod 600 ${SSH_ENV}
. ${SSH_ENV}
/usr/bin/ssh-add;
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. ${SSH_ENV}
#echo "sourced ssh env"
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent > /dev/null || { start_agent; }
else
start_agent;
fi
Agora, no primeiro login, você configura suas chaves. Efetue logout e entrada e apenas facilite a vida.
Coloque todos os seus scripts em um RCS, o que facilita a sincronização das máquinas de desenvolvimento. Eu uso o git. Autenticação com git é via ssh so chaves ssh ajudam aqui também. Note que neste momento você poderia ter usado algo como nfs. Eu ainda seria um fã de um RCS por uma razão que menciono abaixo.
O caso de uso é
- faça o login pela primeira vez, as chaves são configuradas
- se o RCS não estiver configurado, verifique seus scripts pessoais (e atualize / mescle quando necessário, isso pode até fazer parte do seu .bash_profile se você quiser)
- edite o vimrc, scripts especiais, etc. e confirme-os
- quando conectado a outras máquinas, faça uma atualização / mesclagem / checkout. Isso mantém tudo em sincronia; ou seja, não há mais arquivos de cópia que às vezes você pisa e você não queria.
- como benefício secundário, você obtém o poder de um RCS. Às vezes, faço alterações desfavoráveis em scripts ou configurações e preciso reverter e assim por diante.
Algo que eu quero tentar agora é colocar o login / setup inicial em um makefile que eu copio para a nova máquina. O makefile pode então fazer o trabalho de configurar suas chaves, RCS, etc. Obviamente, há alguma sobrecarga aqui, mas se você acabar configurando muitas máquinas, isto é:
- uma poupança de tempo
- mais fácil manter as configurações e scripts pessoais das máquinas de desenvolvimento em sincronia
- gerenciamento de alterações em scripts e configurações.