Virtualbox Ubuntu Network Bridge criar automaticamente no início da máquina

0

Estou usando imagens do Ubuntu 16.04

Eu sigo este tutorial

A última parte, fazer com que a parte permanente da rede não funcione no meu cenário.

At this point, the network bridge will be detatched from eth1 if you reboot the machine. So here are two more things to make the setting permanent.

Update /etc/network/interfaces like this:

auto eth1 iface eth1 inet manual    
pre-up ifconfig $IFACE up   
post-down ifconfig $IFACE down

And add the following command on /etc/rc.local (before exit 0):

brctl addif docker1 eth1

Depois de reiniciar a máquina, não consigo fazer o ping do IP do meu host. Então eu suspeito que rc.local não funcionou.

Eu também tentei remover o parâmetro -e no arquivo rc.local , mas depois da reinicialização, ainda não estou funcionando.

Em seguida, tento solução 2

Crie um arquivo docker-network.sh no diretório /etc/init.d :

#!/bin/sh
sudo ip addr del 192.168.33.10/24 dev eth1
sudo brctl addif docker1 eth1

Torne-o executável:

sudo chmod +x /etc/init.d/docker-network.sh

Crie links simbólicos para o meu script para vários runlevels:

sudo update-rc.d docker-network.sh defaults

Depois de reiniciar minha máquina virtual. Eu ainda não consigo ping direto para a máquina. No entanto, após eu SSH para a máquina eu corro /etc/init.d/docker-network.sh , então eu sou capaz de ping it.

Então, como posso garantir que ele possa ser executado depois da reinicialização?

UPDATE

Eu corro sudo systemctl enable rc-local.service e reinicio. Então eu corro sudo systemctl status rc-local

vagrant@vagrant:~$ sudo systemctl status rc-local
● rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset:
  Drop-In: /lib/systemd/system/rc-local.service.d
           └─debian.conf
   Active: active (exited) since Mon 2017-08-21 09:27:56 UTC; 10min ago
  Process: 1247 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS)
    Tasks: 0
   Memory: 0B
      CPU: 0

Aug 21 09:27:56 vagrant systemd[1]: Starting /etc/rc.local Compatibility...
Aug 21 09:27:56 vagrant sudo[1259]:     root : TTY=unknown ; PWD=/ ; USER=root ;
Aug 21 09:27:56 vagrant sudo[1259]: pam_unix(sudo:session): session opened for u
Aug 21 09:27:56 vagrant sudo[1308]:     root : TTY=unknown ; PWD=/ ; USER=root ;
Aug 21 09:27:56 vagrant sudo[1308]: pam_unix(sudo:session): session opened for u
Aug 21 09:27:56 vagrant rc.local[1247]: bridge eth1 does not exist!
Aug 21 09:27:56 vagrant systemd[1]: Started /etc/rc.local Compatibility.
    
por Shiro 15.08.2017 / 05:27

1 resposta

1

O Ubuntu agora está usando systemd desde que começou na versão beta do Ubuntu 15.04 e rc.local está "off" por padrão em 16.04.

Você pode habilitar rc.local pelo seguinte comando e reiniciar seu Ubuntu.

sudo systemctl enable rc-local.service

Você gostaria de verificar o status ativo pelo seguinte comando:

sudo systemctl status rc-local

Com base na linha impressa acima do resultado do comando:

Aug 21 09:27:56 vagrant rc.local[1247]: bridge eth1 does not exist

Isso significa que rc.local é acionado seu script e foi executado, mas às vezes rc.locsl executando muito primeiro ao inicializar e isso causa alguma interrupção durante a execução dos comandos / script em seu rc.local .

Sugiro colocar um sleep x antes que seu comando / script seja executado em rc.local (onde x pode especificar o valor em segundos, talvez seja necessário aumentar esse x segundos para ver quando funciona), você também pode fazer sleep x no seu script antes de executar o comando principal.

    
por devWeek 17.08.2017 / 09:26