Tengo 4 máquinas virtuales en mi Vagrantfile: 3 servidores de aplicaciones y un host de control Ansible.
Solo uso Vagrant para crear las máquinas virtuales, ya que las aprovisiono manualmente desde el host de control ansible porque todavía estoy creando / editando los scripts ansibles.
Puedo hacer vagrant ssh ansibley vagrant ssh app1/2/3etc., pero cuando intento hacerlo ansible-playbook oracle.ymldesde el host de control Ansible, SSH falla con
fatal: [192.168.60.10]: UNREACHABLE! => {"changed": false, "msg": "SSH encountered an unknown error during the connection. We recommend you re-run the command using -vvvv, which will enable SSH debugging output to help diagnose the issue", "unreachable": true}
Puedo realizar ssh con éxito desde la VM de Ansible a la VM de Oracle utilizando el vagabundo de usuario y el vagabundo de contraseña.
Las partes clave de mi Vagrantfile son:
config.ssh.insert_key = false
config.vm.define "db" do |db|
db.vm.box = "boxcutter/ol67"
db.vm.hostname = "oracle-vm"
db.vm.network "forwarded_port", guest: 22, host: 2201, id: "ssh", auto_correct: false
db.vm.network "forwarded_port", guest: 1521, host: 1521
db.vm.network "private_network", ip: "192.168.60.10"
db.vm.provider "virtualbox" do |v|
v.name = "oracle-vm"
v.linked_clone = true
v.memory = 2048
v.cpus = 2
end
end
#Optional ansible control machine for Windows users
config.vm.define "ansible", autostart: false do |ansible|
ansible.vm.box = "williamyeh/ansible"
ansible.vm.hostname = "ansible-vm"
ansible.vm.network "forwarded_port", guest: 22, host: 2204, id: "ssh", auto_correct: false
ansible.vm.network "private_network", ip: "192.168.60.50"
ansible.vm.provider "virtualbox" do |v|
v.linked_clone = true
end
#Mount the project directory on the guest so we can run the playbooks from there
ansible.vm.synced_folder ".", "/data/ansible", create: true
end
¿Qué necesito poner en el Vagrantfile para permitir que la VM Ansible se conecte a las otras VM sin requerir una contraseña o pasos manuales adicionales después vagrant up?
Esto es solo para las pruebas de desarrollo en una red privada en las PC de los desarrolladores, por lo que la seguridad no es realmente un problema y ocupa el segundo lugar para facilitar la implementación y la experiencia del usuario sin problemas.