systemd-networkd falha ao iniciar quando a rede inicializa via pxelinux

1

Eu criei um arquivo de link systemd para impor a nomenclatura persistente da interface de rede para uma pilha de hosts inicializados pela rede. Como o MAC varia entre máquinas, preciso usar o caminho PCI para corresponder à 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 de inicialização de rede, ele falha com a mensagem:

Failed at step NAMESPACE spawning /usr/lib/systemd/system/systemd-networkd: Invalid Argument

Eu tentei remover o arquivo de link e reinicializar, mas com o mesmo resultado. Então não tem nada a ver com o meu arquivo de link.

O host do netboot é feito a partir do Centos 7.2.

Anteriormente, com o CentOS 6, usamos uma regra de rede persistente em /etc/udev.rules , mas isso falha no CentOS 7.

    
por orodbhen 22.06.2016 / 03:57

1 resposta

1

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 essa funcionalidade não é suportada em um host inicializado por PXE, portanto, os serviços que precisam dela não serão iniciados.

No caso de systemd-networkd, isso pode ser corrigido desabilitando todas as opções que exigem namespacing.

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 o /etc/systemd/system/systemd-networkd.service , removendo a proteção do namespace:

ProtectSystem=no
ProtectHome=no

Por fim, reinicie o daemon:

systemctl restart networkd-systemd

Aviso: isso pode expor os riscos de segurança.

    
por 27.07.2016 / 23:02