LXC Com rootfs como ContainerName.img

1

Então, estou brincando com o LXC na minha caixa do Ubuntu 16.04.

Eu quero / preciso configurar meus contêineres rootfs como uma imagem com tamanho específico. (Não, zfs não vai funcionar no meu caso)

Então, eu tenho tudo configurado e funcionando perfeitamente através da criação do (s) container (s) através de um script bash, e agora estou precisando adicionar a montagem às máquinas host fstab para persistir a montagem nas reinicializações da máquina host

Tudo isso funciona bem, o container / .img / mounts todos criam e funcionam maravilhosamente, persistindo durante as reinicializações.

Agora, na destruição do contêiner, eu preciso remover essa linha de fstab , pois não precisarei que ela seja montada assim que o contêiner for destruído ... Eu sei que provavelmente poderia deixá-lo sem danos, mas por uma questão de manter meu fstab clean, digamos que eu precise para fazer isso. O truque é, eu gostaria de poder fazer isso via shell script, então eu não tenho que editar manualmente o meu arquivo fstab toda vez que eu achar necessário destruir um container.

Estou adicionando a linha com o seguinte

    T=$(grep -ir "/home/containers/$UsersName/rootfs" /etc/fstab);
    if [ ! -n $T ]; then
        echo "/home/$UsersName.img   /home/containers/$UsersName/rootfs    xfs   noatime    0       0" >> /etc/fstab;
        mount -a;
    fi;

Onde $UserName = uma string pré-especificada.

Como posso remover essa linha através do meu script bash?

    
por Kevin 27.04.2017 / 22:55

1 resposta

1

Confira esta resposta sobre como exclua uma linha . Existem várias maneiras de realizá-lo, mas há várias ressalvas, como escapar de strings e padrões de correspondência. Isso torna difícil dar uma resposta completa.

sed é rápido e fácil, mas requer um escape de barras no seu caso.
Um grep reverso ( grep -v ) provavelmente funcionaria bem para você. Apenas certifique-se de que nada indesejado seja correspondido.

No seu exemplo: grep -v "$UsersName.img" /etc/fstab > /etc/fstab.bak; mv /etc/fstab.bak /etc/fstab
Cada linha, exceto aquelas contendo, é correspondida e redirecionada para fstab.bak e finalmente renomeada para fstab.

    
por 01.05.2017 / 23:00