On Monday, 14 November 2016 14:38:59 UTC-8, [email protected] wrote:
>
>
>
> On Monday, November 14, 2016 at 2:07:05 PM UTC-8, [email protected] wrote:
>>
>>
>> I wrote the below to ensure certain options are set in a server's 
>> /etc/fstab file for CIS compliance:
>>
>>   - name: Describe file system options
>>     set_fact:
>>       filesystems:
>>         - fs: /tmp
>>           options:
>>             - nodev
>>             - nosuid
>>         - fs: /home
>>           options:
>>             - nodev
>>         - fs: /dev/shm
>>           options:
>>             - nodev
>>             - nosuid
>>             - noexec
>>
>>   - name: CIS - Set options for file systems
>>     replace: dest=/etc/fstab
>>           
>> regexp='(^[/\-\w]*\s+{{item.0.fs}}\s+\w+\s+(?!.*\b{{item.1}}\b))([\w,]+)(\s+[0-9]\s+[0-9])$'
>>           replace='\1\2,{{item.1}}\3'
>>     with_subelements:
>>       - "{{filesystems}}"
>>       - options
>>
>> My fstab file starts out like this:
>>
>> /dev/mapper/VolGroup00-root                           /                 
>> xfs       defaults        1 1
>> UUID=55b51f79-af10-4590-88df-8aefeeedb3fc    /boot           xfs       
>> defaults        0 0
>> /dev/mapper/VolGroup00-home                        /home          
>> xfs       defaults        0 0
>> /dev/mapper/VolGroup00-tmp                           /tmp            
>> xfs       defaults        0 0
>> /dev/mapper/VolGroup00-var                             /var             
>> xfs       defaults        0 0
>> UUID=c56d0641-b1ef-4ef5-ba3c-1dfb983e28ce   swap          swap    
>> defaults        0 0
>>
>> The expectation is that options listed under a given file system name 
>> will be added to the options for that file system.  For example:
>>
>> /dev/mapper/VolGroup00-home                        /home          
>> xfs       defaults,nodev        0 0
>> /dev/mapper/VolGroup00-tmp                           /tmp            
>> xfs       defaults,nodev,nosuid        0 0
>>
>> This worked perfectly on Ansible version 1.9.4, but when I ported it to 
>> Ansible 2.1.2, it broke.  When I run it on 2.1.2, Ansible no longer detects 
>> that the options have already been applied and applies them again.  Each 
>> time the playbook is run against the servers, another set of options is 
>> added to the already existing set:
>>
>> /dev/mapper/VolGroup00-home                        /home          
>> xfs       defaults,nodev,nodev        0 0
>> /dev/mapper/VolGroup00-tmp                           /tmp            
>> xfs       defaults,nodev,nosuid,nodev,nosuid        0 0
>>
>> What changed between Ansible versions 2.1.2 and 1.9.4?
>> The clients are a mix of OEL and RHEL versions 6 and 7.  I get the same 
>> results regardless of the OS releases and versions.
>>
>> -Mark
>>
>>
>
> It is very definitely related to version 2 of Ansible.  I downgraded the 
> version of Ansible on my server to 1.9.4 and ran the playbook again.  It 
> ran perfectly and no changes were made to the target system.  I upgraded to 
> version 2.2.0 and tested again, and it added another set of options to the 
> fstab file even though the options were already present.  So something 
> changed between Ansible versions 1.9 and 2.
>     -Mark
>


It appears to be the negative lookahead assertion in the regular 
expression: "(?!.*\b{{item.1}}\b)". This is the part that looks to see if 
the string stored in {{item.1}} is present in the line being examined.  If 
the string is present, the line should be declared a no-match and the line 
is skipped. If the string is not present, the line is a match and the 
replace should be execute.  For some reason this appears to be broken in 
Ansible version 2.
    -Mark

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/b8de4112-ff2e-4b0a-9c40-569877eaedda%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to