Eu crio um usuário especificamente para o uso de ansible, que pode usar sudo sem senha, mas que não tem senha definida e requer uma chave ssh para fazer o login. Desta forma, a conta é privilegiada, mas não é acessível remotamente sem a chave ssh.
Como alternativa, você pode criar uma conta ansible com uma senha e exigir a senha sudo toda vez que você executar ansible.
Você pode criar um usuário assim:
# Create user
adduser ansible
# Lock password preventing password login (optional)
passwd -l ansible
# Expire any existing password, preventing password login (optional)
chage -E 0 ansible
# Ensure ansible can sudo without a password (optional)
echo "ansible ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible
# Create ansible's .ssh directory
mkdir -m 700 /home/ansible/.ssh
# Insert your desired SSH keys here
echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB7/BSV84tCEQ8SSwygqjEVPFcH+G2JSFEdyuJI7A2iG [email protected]" > /home/ansible/.ssh/authorized_keys
# Correct ownership of newly created files and directories
chown -R ansible.ansible /home/ansible/.ssh
Adapte-o conforme necessário ao processo que você usar para exibir novas instâncias do servidor (kickstart, preseed, cloud-init, o que for).
Eu configurei ansible.cfg
para o sudo sem senha:
[defaults]
remote_user = ansible
[privilege_escalation]
become = True
become_method = sudo
become_user = root
become_ask_pass = False
Se você deseja exigir uma senha sudo para executar os manuais, basta definir become_ask_pass = True
em ansible.cfg
e não criar /etc/sudoers.d/ansible
conforme mostrado acima.