# apt install python3-pip python3-winrm sshpass
# pip3 install ansible argcomplete --break-system-packages
$ activate-global-python-argcomplete --user
Control node 10.10.10.1/24
Managed node Debian 12 10.10.10.10/24
Managed node Windows 11 10.10.10.11/24
Criar arquivo hosts.ini como inventário:
[Linux]
debian12 ansible_host=10.10.10.10
[Windows]
win11 ansible_host=10.10.10.11
ansible -i setic25/hosts.ini -u setic25 -k -m ping debian12
Executar no powershell como administrador:
$url = "https://raw.githubusercontent.com/ansible/ansible-documentation/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"
$file = "\ConfigureRemotingForAnsible.ps1"
(New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file)
powershell.exe -ExecutionPolicy ByPass -File $file
Verificar se o WinRM está em execução:
winrm enumerate winrm/config/listener
Pesquisar por Alterar sua senha e definir a senha setic25
Teste de conexão:
ansible -i setic25/hosts.ini -e ansible_winrm_server_cert_validation=ignore -c winrm -u setic25 -k -m win_ping win11
[Linux]
debian12 ansible_host=10.10.10.10
[Windows]
win11 ansible_host=10.10.10.11
[Linux:vars]
ansible_user=setic25
ansible_password=setic25
ansible_python_interpreter=/usr/bin/python3
[Windows:vars]
ansible_user=setic25
ansible_password=setic25
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
Linux - Teste com módulo ping
ansible -i setic25/hosts.ini -m ping debian12
Windows - Teste com módulo win_ping
ansible -i setic25/hosts.ini -m win_ping win11
Comandos ad hoc para tarefas não repetitivas:
ansible -i setic25/hosts.ini -m setup debian12
ansible -i setic25/hosts.ini -m shell -b -a 'apt install nginx -y' debian12
ansible -i setic25/hosts.ini -m apt -a 'pkg=nginx' debian12
Usar o playbook nginx.yml. Testar o notify.
Verificar as diferenças do playbook nginx e da role nginx
Lista de pacotes do chocolatey
ansible -i setic25/hosts.ini -m win_chocolatey -a 'name=notepadplusplus' win11
Encripitar todo o arquivo hosts:
ansible-vault encrypt setic25/hosts-encripitado.ini
ansible -i setic25/hosts-com-vault.ini -m win_ping win11 --ask-vault-pass
Usar arquivo com variáveis encripitadas:
ansible -i setic25/hosts.ini -e "@setic25/vault.yml" -m win_ping win11 --ask-vault-pass
Usar variáveis de ambiente:
ansible_password="{{ lookup('env', 'ANSIBLE_PASSWORD') }}"
export ANSIBLE_PASSWORD=setic25
Role ingressa_dominio
Encripitar a senha e adicionar na variável domain_admin_password:
ansible-vault encrypt_string -p
Verificar se a senha ficou correta:
ansible localhost -m ansible.builtin.debug -a var="domain_admin_password" -e "@setic25/roles/ingressa_dominio/vars/main.yml" --ask-vault-pass
Falar como usamos: nossos computadores como Control node, repositórios abertos e fechados.
Falar de IaC
Links sugeridos:
https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_intro.html#desired-state-and-idempotency https://docs.ansible.com/ansible/latest/command_guide/intro_adhoc.html https://ansible.readthedocs.io/projects/lint/