Salve, Srs
Em meu plano de estudo utilizei Windows com:
- Vagrant
- Virtualbox
- Git bash
- Atom
O Ansible pra se comunicar com os servidores ele utiliza as chaves publica do ssh dos hosts.
Dessa forma na criação dos servidores ja setei no Vagrantfile pra que fosse ajustado a comunicação.
Gerei a chave ssh no Git bash com o nome id_hirsute dento da pasta que utilizei para criar o projeto que irei utlizar durante o curso
$ ssh-keygen.exe -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/usuario/.ssh/id_rsa): /d/ambinte_dev/ansible/config/id_hirsute
Com isso no Vagrantfile fiz a criação dos servidores.
Usei as informação abaixo no Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/hirsute64"
config.vm.define "ansible" do |ansible|
ansible.vm.network "public_network", ip: "192.168.10.108"
ansible.vm.provision "shell", inline: "cat /config/id_hirsute > /home/vagrant/id_hirsute && \
chmod 600 /home/vagrant/id_hirsute && \
chown vagrant:vagrant /home/vagrant/id_hirsute "
ansible.vm.provision "shell", inline: "apt-get update && \
apt-get upgrade -y && \
apt-get install python -y && \
apt-add-repository ppa:ansible/ansible && \
apt install ansible -y "
ansible.vm.synced_folder "./config", "/config"
ansible.vm.synced_folder ".", "/vagrant", disabled: true
ansible.vm.provider "virtualbox" do |ansible|
ansible.memory = 1024
ansible.cpus = 1
ansible.name = "SRVANS01"
end
end
config.vm.define "web" do |web|
web.vm.network "public_network", ip: "192.168.10.111"
web.vm.provision "shell", inline: "cat /config/id_hirsute.pub >> .ssh/authorized_keys"
web.vm.synced_folder "./config", "/config"
web.vm.synced_folder ".", "/vagrant", disabled: true
web.vm.provider "virtualbox" do |web|
web.memory = 1024
web.cpus = 1
web.name = "SRVWEB01"
end
end
config.vm.define "mysql" do |mysql|
mysql.vm.network "public_network", ip: "192.168.10.110"
mysql.vm.provision "shell", inline: "cat /config/id_hirsute.pub >> .ssh/authorized_keys"
mysql.vm.synced_folder "./config", "/config"
mysql.vm.synced_folder ".", "/vagrant", disabled: true
mysql.vm.provider "virtualbox" do |mysql|
mysql.memory = 2048
mysql.cpus = 2
mysql.name = "SRVSQL01"
end
end
end
Importante que a chave privada seja adicionado no arquivo .ssh/authorized_keys dos servidores client e a publica onde for realizar o comando.
No servidor Ansible pode validar se a chave ta disponivel para ser utilizada
vagrant@ubuntu-hirsute:~$ pwd
/home/vagrant
vagrant@ubuntu-hirsute:~$ ls id_hirsute
id_hirsute
vagrant@ubuntu-hirsute:~$
Nos servidores host tem que ter 2 chaves a privada criada pelo vagrant e a nova
vagrant@ubuntu-hirsute:~$ cat .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCv2buz26IOy4k3TbABpAd8qND68Im0UW+vGlAD5Mk2rG8vr7otsibPTSYtuG9CbNalaXUSU2l1ekzNQvh2TSRHkTU8BFLne056bY8zmX0I16xzJgg7QgN76fqtQo9tki/NdhjMEzoXXltTmOV+ayBdreN73KrDua/fckvbXbyipp16+WAyCkoRl3BlA08wkPjXwOZzeo0En4n+qPZlbwZYUaL4ZAq/AlHNc4nUzz6GOZIMpAiwzFJxqS0N7kB39kY/J7DqfoeKY4cf8m6q7QA+jLs0XCJzSCikBArmW4M/V2+JGR949TkISTwktVdKWRnAwqfhzXMbMbT23QnEDGMV vagrant
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCzr/zm5hPfG4zyte3q/AlEdAujIZQVBPCG9WmK2jWZasJTOUptWuqW7CUgdGjLD5/TS7o9P5gxYDXtSK9Ks7O0l7/sFU50WnMdzrfNVJpywhiPyDyIPxtUeUaAm+727/6uLN13GfepOwlRqeTce8CAKjkywoS8KWCZRGLXg1rZE4YpbvAu4Oyf7zIrL5BbHLz1dGu7D4MTyvsf4r7/BbKRKxtMTgkfVG+S0froj63pDlfwjCOlzFhbbOsAauZDP70UL4cmCeho3PoA/EQSWaBbqyEDs3f1/9KhNgfqEaBVONSDJ3lDgAEc26lWtdBADqjUuCt0HatolO5/FPsLuyXaGii8W0HS0EDPNiw6hkkhvfrdrseswssasds1srDhABVDJRSB07FG+JJcGRDja6On7wxkAxL4IzZNogTPuUa29vqzdbo/Kr/HUNss2//+gEPyDACX6XTjjadmTPBp4vMYpGI1+hz98oYLSq3q99RWlhNCz9d5Kfz9BvU= user@nome_do_PC
vagrant@ubuntu-hirsute:~$
Com isso vai ter o ambiente criado e com as credencias de acesso.
Importante
Na pasta config pode utilizar para salvar o arquivo dos hosts e o playbook
O comando ficaria algo como
ansible-playbook /config/ansible/provisioning.yml -i /config/ansible/hosts -m shell -a 'echo Hello, World'