Configurando variáveis ​​do manual do Ansible a partir do Makefile

Os droplets do Digital Ocean são configurados por padrão com o rootusuário e as chaves SSH são definidas para esta conta. No entanto, normalmente queremos desabilitar o acesso root remoto para nosso servidor e usar um usuário administrador diferente, então basicamente temos duas opções: (A) executar um script de bootstrap na máquina remota para criar um administratorusuário ou (B) passar um argumento para o makecomando do servidor para alternar entre os usuários. A última opção nos permitirá usar um processo de instalação mais limpo e simples, conforme descrito abaixo.

Para a primeira instalação (isso será executado pelo rootusuário, instalando o sistema básico e, em seguida, desabilitando o acesso root):

make myserver install

Para as instalações subsequentes (com o administratorusuário), usaremos:

make myserver

Podemos obter os argumentos da linha de comando dentro do Makefilecom algo como:

myserver:
ifneq
(,$(findstring install,$(MAKECMDGOALS)))
ansible
-playbook -l myserver playbook-myserver.yml -vvvv -e install=true
else
ansible
-playbook -l myserver playbook-myserver.yml -vvvv
endif

E no manual do Ansible, podemos selecionar o usuário com base no parâmetro de instalação:

- hosts: myserver
sudo
: true
remote_user
: "{{'root' if install is defined else 'administrator'}}"

Isso é tudo 🙂