J'ai donc créé sur ma machine hôte (Ubuntu 17.10) une machine virtuelle avec VirtualBox + Vagrant + Ansible.
Vagrant.configure("2") do |config|
config.vm.box = "centos-7.3-x86_64_latest.box"
config.vm.box_url = "http://nas.my-compamy.intern/centos-7.3-x86_64_latest.box"
config.vm.hostname = "login.my-cloud.dev"
config.vm.network "private_network", ip: "192.168.33.240"
# enable to use synced folders
# config.vm.synced_folder "/my/local/path", "/var/www/cce_login", disabled: true
config.ssh.forward_agent = true
config.ssh.keep_alive = true
config.ssh.username = "vagrant"
config.ssh.password = "vagrant"
config.vm.provider :virtualbox do |v|
# workaround as some virtualbox version seem to disconnect the NAT adapter
v.customize ['modifyvm', :id, '--cableconnected1', 'on']
v.memory = 1024
v.cpus = 2
v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
v.customize ["modifyvm", :id, "--name", "login.cce-cloud.dev"]
v.customize ["modifyvm", :id, "--accelerate3d", "off"]
v.customize ["modifyvm", :id, "--accelerate2dvideo", "off"]
v.customize ["modifyvm", :id, "--cpuexecutioncap", "75"]
v.customize ["modifyvm", :id, "--largepages", "on"]
end
config.vm.provision "ansible" do |ansible|
ansible.playbook = "ansible/site.yml"
ansible.verbose = "vvv"
end
end
J'apporte cette machine via
$ vagrant up --provision
Après tout cela, je peux me connecter à SSH via Vagrant comme ceci.
$ vagrant ssh
mais lorsque je veux l'utiliser depuis MySQL Workbench, un accès FTP ou SSH direct, j'obtiens une erreur. Je ne peux même pas cingler la machine .
$ ping 192.168.33.240
PING 192.168.33.240 (192.168.33.240) 56(84) bytes of data.
From 192.168.33.1 icmp_seq=1 Destination Host Unreachable
From 192.168.33.1 icmp_seq=2 Destination Host Unreachable
From 192.168.33.1 icmp_seq=3 Destination Host Unreachable
N'ayant pas la permission de modifier le fichier Vagrantfile à partir de l'équipe DevOps, j'ai supposé que l'erreur devait se situer quelque part dans la configuration de mon ordinateur hôte, mais je n'arrive pas à comprendre le problème.
$ ifconfig
enxdc9b9cee07b2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.111.198 netmask 255.255.255.0 broadcast 192.168.111.255
inet6 fe80::f0ad:1d52:8e55:7fc7 prefixlen 64 scopeid 0x20<link>
ether dc:9b:9c:ee:07:b2 txqueuelen 1000 (Ethernet)
RX packets 11159 bytes 4878538 (4.8 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8289 bytes 2106425 (2.1 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<Host>
loop txqueuelen 1000 (Local Loopback)
RX packets 1607 bytes 173261 (173.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1607 bytes 173261 (173.2 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vboxnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.33.1 netmask 255.255.255.0 broadcast 192.168.33.255
inet6 fe80::800:27ff:fe00:0 prefixlen 64 scopeid 0x20<link>
ether 0a:00:27:00:00:00 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 170 bytes 18067 (18.0 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Comment puis-je modifier la configuration de mon système d'exploitation hôte afin qu'il atteigne le système virtuel?
Remarque: le enxdc9b9cee07b2
est ma connexion câblée. Je sais que c'est généralement eth0
mais j'utilise un adaptateur pour un port USB
Mettre à jour
Plus d'informations
J'ai finalement trouvé la solution moi-même.
Apparemment, la version pré-installée avec Ubuntu n’est pas le DEB officiel d’Oracle.
Ce que j'ai fait est de sauvegarder mes machines virtuelles dans un dossier de sauvegarde temporaire, puis de supprimer Vagrant et Virtualbox, puis télécharger le fichier deb officiel depuis leur site Web.
Une fois que j'ai démarré les machines, elles fonctionnaient sans problème.
Les seules configurations réseau permettant à l'hôte de communiquer avec l'hôte VM sont les modes hôte uniquement et ponté. Il existe un tableau ici qui indique les différents types de réseau et s’il peut accéder à l’hôte, à d’autres ordinateurs virtuels, à Internet, etc. Seul le mode ponté permet d’obtenir un accès complet au réseau, mais tire généralement une adresse IP de votre serveur DHCP. que vous ne voulez probablement pas dans cette situation.
Vous pouvez contourner ce problème en disposant de 2 réseaux pour répondre à vos besoins, NAT et hôte uniquement.