Ansible - Adiciona uma palavra a uma linha específica em uma parte específica dessa linha

1

Eu quero adicionar a palavra "nodev" à linha que contém / home no arquivo / etc / fstab
aqui está o arquivo antes

UUID=2ea6e2e5-d902-4289-b516-40c175cd481b /                       ext3    defaults        1 1
UUID=114107f7-5b48-44b7-ad38-09b47b1d6b02 /boot                   ext3    defaults        1 2
UUID=830757d1-60ad-4f4a-b41a-cad04d309e9d /home                   ext3    defaults        1 2
UUID=4b309559-2391-4f28-b2f5-38029e278db0 /tmp                    ext3    defaults        1 2
UUID=1dfc4cab-4de4-491f-8bd0-3503e9027717 /var                    xfs     defaults        0 0
UUID=f0846773-528b-42a2-a0dc-7a736595f7e1 /var/log                xfs     defaults        0 0
UUID=25ef70f1-7083-4a9b-a64c-970f5d4ad742 /var/log/audit          xfs     defaults        0 0
UUID=40d2f177-aa5c-43a1-9d85-e21bf2bafb39 swap                    swap    defaults        0 0

Aqui está o que eu quero ter

UUID=2ea6e2e5-d902-4289-b516-40c175cd481b /                       ext3    defaults        1 1
UUID=114107f7-5b48-44b7-ad38-09b47b1d6b02 /boot                   ext3    defaults        1 2
UUID=830757d1-60ad-4f4a-b41a-cad04d309e9d /home                   ext3    defaults,nodev        1 2
UUID=4b309559-2391-4f28-b2f5-38029e278db0 /tmp                    ext3    defaults        1 2
UUID=1dfc4cab-4de4-491f-8bd0-3503e9027717 /var                    xfs     defaults        0 0
UUID=f0846773-528b-42a2-a0dc-7a736595f7e1 /var/log                xfs     defaults        0 0
UUID=25ef70f1-7083-4a9b-a64c-970f5d4ad742 /var/log/audit          xfs     defaults        0 0
UUID=40d2f177-aa5c-43a1-9d85-e21bf2bafb39 swap                    swap    defaults        0 0

Como posso fazer isso usando o módulo ansible e lineinfile?

    
por Houssem Salhi 25.11.2018 / 01:36

1 resposta

1

Isso pode ser feito com lineinfile , talvez, supondo que o formato do arquivo não seja alterado e defaults esteja lá para restringir a correspondência, após o qual a opção nodev e o restante da linha podem ser adicionado:

- hosts: localhost
  tasks:
    - lineinfile:
        path: /tmp/fstab
        regexp: '^(\S+\s+/home\s+\S+\s+defaults)'
        line: ',nodev 1 2'
        backrefs: yes

como testado com:

$ ansible-playbook lineinfile.yml
$ diff /tmp/fstab.orig /tmp/fstab

no entanto, para pontos de montagem, há o módulo de montagem que pode ser menor frágil do que a análise regular de fstab . Por outro lado, o regex não se importará com o que é o UUID, enquanto uma entrada do módulo mount pode precisar de algo específico que pode variar entre os hosts. Uma regra ou script adicional que testa que o dispositivo de sistema de arquivos apropriado está definido pode ser necessário para capturar as chances baixas, mas não zero, de que a regex falhe.

    
por 25.11.2018 / 02:48

Tags