Mam 4 maszyny wirtualne na moim serwerze aplikacji Vagrantfile - 3 i host sterujący Ansible.
Używam Vagrant tylko do tworzenia maszyn wirtualnych, ponieważ udostępniam je ręcznie z hosta sterowania ansible, ponieważ wciąż tworzę / edytuję skrypty ansible.
Mogę zrobić vagrant ssh ansible
i vagrant ssh app1/2/3
itd., Ale gdy próbuję zrobić ansible-playbook oracle.yml
z ansibl przyjmującym kontrolnej nie powiedzie się z SSH
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}
Mogę pomyślnie ssh z maszyny wirtualnej Ansible na maszynę wirtualną Oracle przy użyciu narzędzia Vagrant użytkownika i hasła Vagrant.
Kluczowe części mojego Vagrantfile to:
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
Co muszę umieścić w pliku Vagrantfile, aby umożliwić maszynie wirtualnej Ansible połączenie się z innymi maszynami wirtualnymi bez konieczności podawania hasła lub dodatkowych ręcznych czynności po vagrant up
?
To jest tylko do testowania programistycznego w prywatnej sieci na komputerach programistów, więc bezpieczeństwo nie jest tak naprawdę problemem i zajmuje drugie miejsce w stosunku do łatwości implementacji i płynnego działania użytkownika.
Odpowiedzi:
Nie ma ogólnej metody i może zależeć od tego, w jaki sposób
boxcutter/ol67
została zapakowana.Najłatwiejszą metodą byłoby zdefiniowanie hasła w pliku ekwipunku Ansible:
Drugą metodą byłoby pozostawienie niezabezpieczonego klucza prywatnego skonfigurowanego na
oracle-vm
komputerze i wstrzyknięcie klucza prywatnego doansible
maszyny wirtualnej:Wygeneruj wcześniej parę kluczy na maszynie hosta, wstrzyknij klucz prywatny do Ansible VM, klucz publiczny do Oracle
authorized_keys
.Wygeneruj parę kluczy na Ansible VM, skopiuj klucz publiczny do Oracle VM przy użyciu dostawcy zasobów powłoki i wstrzyknij
vagrant
jako hasło dlassh-copy-id
.Lista nie kończy się tutaj, zależy to od wymaganego bezpieczeństwa.
źródło
Na podstawie trzeciej sugestii techrafa wykonałem następujące czynności:
vagrant up ansible
ssh-keygen
(nie naciśnięto hasła Enter).ssh/id_rsa
i.ssh/id_rsa.pub
do katalogu projektuvagrant destroy ansible
Vagrantfile
aby skopiować naid_rsa
wszystkie hostyVagrantfile
aby skopiowaćid_rsa.pub
doauthorized_keys
na wszystkich hostachFragment pliku Vagrantfile:
źródło
Jeśli chcesz mieć wstępnie sformatowany blok na liście, wcięcie o osiem spacji:
generuj klucz publiczny / prywatny
edytuj plik Vagrant, dodaj następujące wiersze: config.vm.provision „plik”, źródło: „id_rsa”, miejsce docelowe: „/home/vagrant/.ssh/id_rsa”
źródło