Carregando scripts netplan do destino de montagem opcional

1

Estou tentando aproveitar a capacidade do netplan de substituir configurações com arquivos lexicograficamente posteriores, mas quando esses arquivos vêm de outro ponto de montagem, a coisa toda falha.

Eu criei uma máquina virtual com algumas interfaces, e elas são configuradas com padrões sensíveis usando arquivos como /etc/netplan/01-primary.yaml e /etc/netplan/02-local.yaml (que basicamente dizem "use dhcp"). Essa parte funciona bem. No entanto, o que estou tentando alcançar é a capacidade de substituir as configurações usando uma montagem de unidade opcional .

Para isso, adicionei um ponto de montagem a /etc/fstab com o seguinte conteúdo:

/dev/vdb /mnt/config ext4 defaults,nofail,x-systemd.device-timeout=10,x-systemd.before=systemd-networkd.service 0 0

Em seguida, adicionei links simbólicos a /etc/netplan que apontam para novos arquivos de configuração, como ln -s /mnt/config/netplan/11-primary.yaml /etc/netplan/11-primary.yaml .

Meu primeiro problema foi que, se a unidade não está presente e montada, todo o netplan gera falha no momento da inicialização e eu fico sem interfaces (eu emiti um relatório de bug sobre falta de links simbólicos para o netplan). Consegui superar esse problema simplesmente criando a estrutura de diretório necessária com arquivos vazios em /mnt/config . No entanto, mesmo com a unidade presente, o netplan não vê esses arquivos no momento da inicialização. Se eu executar netplan generate e netplan apply após a inicialização, todas as interfaces serão configuradas corretamente.

Eu tentei muitas metas x-systemd.before diferentes, mas nenhuma delas funcionou. Existe alguma maneira de fazer isso funcionar corretamente? A montagem de configuração deve ser opcional para que a máquina virtual possa ser inicializada sem uma.

    
por Teemu Karimerto 22.08.2018 / 11:50

1 resposta

0

Eu tenho lutado com isso hoje e identifiquei duas soluções principais para isso:

  1. Use o cron para executar netplan apply em @reboot , mas parecia haver muitas ressalvas muitas advertências anexadas para isso.
  2. Crie uma unidade do systemd para executar netplan apply após a montagem.

Eu escolho a opção 2 e aqui está o arquivo de unidade do systemd:

[Unit]
Description=Execute netplan apply after mount
After=multi-user.target mnt.mount

[Service]
Type=oneshot
ExecStart=/bin/sh -c "netplan apply"

[Install]
WantedBy=multi-user.target

Salve-o em /etc/systemd/system/network-after-mount.service e vá em systemctl enable network-after-mount . Reinicie para testar.

No nosso caso, é um stick USB interno que é montado sob /mnt/ contendo os arquivos extras de configuração do netplan. Se você montar sua unidade sob outro caminho, a unidade de montagem systemd gerada será nomeada de forma diferente. Você pode listar as unidades de montagem com

systemctl list-units --type=mount

e identificar qual é o correto para segmentar.

    
por 30.11.2018 / 01:19