Forum: Cfengine Help
Subject: Parsing fstab
Author: Beto
Link to topic: https://cfengine.com/forum/read.php?3,20565,20565#msg-20565

Hey folks, this is going to be a bit lengthy so fasten your seat belts.

I have a simple requirement: ensure nfs file sytems in fstab are mounted.

My method is to read fstab into a list and then grep the nfs entries from the 
list.  But I cannot get the grep to work at all.  This is what I'm testing with:

body common control
{
bundlesequence          => { "test" };
}

bundle agent test
{
vars:

        "Fstab" string  => "/home/root/fstab";

        "fstab"
                slist   => readstringlist(
                        "/home/root/fstab",
                        "#.*",
                        "\n",
                        "32",
                        "2048"
                        );

        "nfs"
                slist   => grep(".* nfs .*","fstab");

        "list1"
                slist   => { "nfs$(const.n)", "nfs1", "anfs", "anfs1", "xxx nfs 
xxx" };
        "list2"
                slist   => { "/dev/vg02/lvol3 /var/opt/applmgr vxfs 
rw,suid,largefiles,delaylog,nodatainlog 0 2",
                             "adama:/var/opt/applmgr/PRISTINE 
/var/opt/applmgr/PRISTINE nfs rw,suid,soft 0 0"
                           };
        "grep1"
                slist   => grep(".*nfs.*","list1");
        "grep2"
                slist   => grep(".*nfs.*","list2");

classes:

        "nfsfound"
                expression      => reglist("@(fstab)",".*nfs.*");

reports:

    linux|hpux::
        "------------ All mounts -----------";
        "$(fstab)";
        "------------ NFS mounts -----------";
        "$(nfs)";
        "------------ grep test 1 ----------";
        "$(grep1)";
        "------------ grep test 2 ----------";
        "$(grep2)";
        "----------- reglist test -----------";
    nfsfound::
        "NFS found in list";
}

and

/dev/vg00/lvol3 / vxfs log 0 1
/dev/vg00/lvol1 /stand         vxfs             tranflush 0 1
/dev/vg00/lvol4 /tmp vxfs delaylog 0 2
/dev/vg00/lvol5 /home vxfs nosuid,delaylog 0 2
/dev/vg00/lvol6 /opt vxfs delaylog 0 2
/dev/vg00/lvol7 /usr vxfs delaylog 0 2
/dev/vg00/lvol8 /var vxfs delaylog 0 2
/dev/vg01/lvol1 /u01 vxfs rw,nosuid,largefiles,delaylog,nodatainlog 0 2
/dev/vg01/lvol2 /u02 vxfs rw,nosuid,largefiles,delaylog,nodatainlog 0 2
/dev/vg01/lvol3 /u03 vxfs rw,nosuid,largefiles,delaylog,nodatainlog 0 2
/dev/vg01/lvol4 /u04 vxfs rw,nosuid,largefiles,delaylog,nodatainlog 0 2
/dev/vg01/lvol5 /u05 vxfs rw,nosuid,largefiles,delaylog,nodatainlog 0 2
/dev/vg01/lvol6 /u06 vxfs rw,nosuid,largefiles,delaylog,nodatainlog 0 2
/dev/vg02/lvol1 /opt/oracle vxfs rw,suid,largefiles,delaylog,nodatainlog 0 2
/dev/vg02/lvol2 /u07 vxfs rw,nosuid,largefiles,delaylog,nodatainlog 0 2
/dev/vg02/lvol3 /var/opt/applmgr vxfs rw,suid,largefiles,delaylog,nodatainlog 0 
2
adama:/var/opt/applmgr/PRISTINE /var/opt/applmgr/PRISTINE nfs rw,suid,soft 0 0
adama:/var/opt/applmgr/TEST /var/opt/applmgr/TEST nfs rw,suid,soft 0 0

I am never able to grep nfs entries from fstab or from list2 as shown by the 
lack of report output under "NFS mounts" and "grep test 2":

plucky:/home/root/inputs# /usr/local/sbin/cf-agent -Kf ./nfs_mount.cf
R: ------------ All mounts -----------
R: /dev/vg00/lvol3 / vxfs log 0 1
R: /dev/vg00/lvol1 /stand         vxfs             tranflush 0 1
R: /dev/vg00/lvol4 /tmp vxfs delaylog 0 2
R: /dev/vg00/lvol5 /home vxfs nosuid,delaylog 0 2
R: /dev/vg00/lvol6 /opt vxfs delaylog 0 2
R: /dev/vg00/lvol7 /usr vxfs delaylog 0 2
R: /dev/vg00/lvol8 /var vxfs delaylog 0 2
R: /dev/vg01/lvol1 /u01 vxfs rw,nosuid,largefiles,delaylog,nodatainlog 0 2
R: /dev/vg01/lvol2 /u02 vxfs rw,nosuid,largefiles,delaylog,nodatainlog 0 2
R: /dev/vg01/lvol3 /u03 vxfs rw,nosuid,largefiles,delaylog,nodatainlog 0 2
R: /dev/vg01/lvol4 /u04 vxfs rw,nosuid,largefiles,delaylog,nodatainlog 0 2
R: /dev/vg01/lvol5 /u05 vxfs rw,nosuid,largefiles,delaylog,nodatainlog 0 2
R: /dev/vg01/lvol6 /u06 vxfs rw,nosuid,largefiles,delaylog,nodatainlog 0 2
R: /dev/vg02/lvol1 /opt/oracle vxfs rw,suid,largefiles,delaylog,nodatainlog 0 2
R: /dev/vg02/lvol2 /u07 vxfs rw,nosuid,largefiles,delaylog,nodatainlog 0 2
R: /dev/vg02/lvol3 /var/opt/applmgr vxfs 
rw,suid,largefiles,delaylog,nodatainlog 0 2
R: adama:/var/opt/applmgr/PRISTINE /var/opt/applmgr/PRISTINE nfs rw,suid,soft 0 0
R: adama:/var/opt/applmgr/TEST /var/opt/applmgr/TEST nfs rw,suid,soft 0 0
R: ------------ NFS mounts -----------
R: ------------ grep test 1 ----------
R: nfs1
R: anfs
R: anfs1
R: xxx nfs xxx
R: ------------ grep test 2 ----------
R: ----------- reglist test -----------
R: NFS found in list

Anyone have any ideas?  I'm testing and get the same result with 3.0.5p1 and 
3.1.5a1. 

Is there a better way to address the requirement?

Thanks in advance for any suggestions.

_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to