Criei um arquivo de link systemd para impor nomes persistentes de interface de rede para uma pilha de hosts inicializados em rede. Como o MAC varia entre as máquinas, preciso usar o caminho PCI para combinar a interface:
[Match]
Path=pci-0000:02:00.0-0
[Link]
Name=eth0
Isso funciona em uma VM ou em uma caixa física. No entanto, em um host netboot ele falha com a mensagem:
Failed at step NAMESPACE spawning /usr/lib/systemd/system/systemd-networkd: Invalid Argument
Tentei remover o arquivo do link e reiniciar, mas com o mesmo resultado. Portanto, não tem nada a ver com meu arquivo de link.
O host netboot é feito a partir do Centos 7.2.
Anteriormente, com o CentOS 6, usávamos uma regra de rede persistente no /etc/udev.rules
, mas isso falha no CentOS 7.
Responder1
O Systemd possui várias opções que você pode definir no arquivo de unidade de um serviço para proteger diretórios específicos no sistema de arquivos. Isso é feito usando o namespace do sistema de arquivos.
Parece que esta funcionalidade não é suportada em um host inicializado por PXE, portanto, os serviços que a exigem não serão iniciados.
No caso do systemd-networkd, isso pode ser corrigido desativando todas as opções que exigem namespace.
Primeiro, crie uma cópia do arquivo de serviço. Os arquivos em /etc/systemd
substituirão os padrões em /usr/lib/systemd
:
cp /usr/lib/systemd/system/networkd-systemd.service /etc/systemd/systemd/
Agora edite /etc/systemd/system/systemd-networkd.service
, removendo a proteção do namespace:
ProtectSystem=no
ProtectHome=no
Finalmente, reinicie o daemon:
systemctl restart networkd-systemd
Aviso: Isso pode expor riscos de segurança.