Issue #3387 has been reported by Marc Fournier.
----------------------------------------
Bug #3387: backslashes aren't correctly passed to augeas anymore
http://projects.reductivelabs.com/issues/3387
Author: Marc Fournier
Status: Unreviewed
Priority: Normal
Assigned to:
Category:
Target version:
Affected version: 0.25.4
Keywords:
Branch:
The following code snippet used to work on 0.24.8:
<pre>
augeas { "set rsyncd pidfile":
context => "/files/etc/rsyncd.conf/.anon/",
changes => "set 'pid\ file' /var/run/rsyncd.pid",
}
</pre>
But I now get the following error (tested on the tip of
bkearney/ticket/0.25.x/3379 as well as 0.25.4, on redhat and debian, with
augeas 0.7.0):
<pre>
warning: Unrecognised escape sequence '\ ' in file
/home/marc/src/puppet/augbug.pp at line 3
debug: Creating default schedules
debug: Failed to load library 'selinux' for feature 'selinux'
debug: Puppet::Type::User::ProviderLdap: true value when expecting false
debug: Puppet::Type::User::ProviderUser_role_add: file roleadd does not exist
debug: Puppet::Type::User::ProviderDirectoryservice: file /usr/bin/dscl does
not exist
debug: Puppet::Type::User::ProviderPw: file pw does not exist
debug: Failed to load library 'ldap' for feature 'ldap'
debug: /File[/etc/puppet/ssl/private_keys]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/var/puppet/lib]: Autorequiring File[/var/puppet]
debug: /File[/var/puppet/client_yaml]: Autorequiring File[/var/puppet]
debug: /File[/etc/puppet/ssl/public_keys]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/var/puppet/clientbucket]: Autorequiring File[/var/puppet]
debug: /File[/var/puppet/state]: Autorequiring File[/var/puppet]
debug: /File[/etc/puppet/ssl]: Autorequiring File[/etc/puppet]
debug: /File[/etc/puppet/ssl/certs]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/var/puppet/run]: Autorequiring File[/var/puppet]
debug: /File[/etc/puppet/ssl/certificate_requests]: Autorequiring
File[/etc/puppet/ssl]
debug: /File[/var/puppet/log]: Autorequiring File[/var/puppet]
debug: /File[/etc/puppet/ssl/private]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/var/puppet/state/graphs]: Autorequiring File[/var/puppet/state]
debug: /File[/var/puppet/facts]: Autorequiring File[/var/puppet]
debug: Finishing transaction 70143984607080 with 0 changes
info: Applying configuration version '1268907221'
debug: Augeas[set rsyncd pidfile](provider=augeas): Opening augeas with root /,
lens path , flags 0
debug: Augeas[set rsyncd pidfile](provider=augeas): Augeas version 0.7.0 is
installed
debug: Augeas[set rsyncd pidfile](provider=augeas): Will attempt to save and
only run if files changed
debug: Augeas[set rsyncd pidfile](provider=augeas): sending command 'set' with
params ["/files/etc/rsyncd.conf/.anon/'pid\\ file'", "/var/run/rsyncd.pid"]
debug: Augeas[set rsyncd pidfile](provider=augeas): Files changed, should
execute
debug: Augeas[set rsyncd pidfile](provider=augeas): Closed the augeas connection
debug: //Augeas[set rsyncd pidfile]: Changing returns
debug: //Augeas[set rsyncd pidfile]: 1 change(s)
debug: Augeas[set rsyncd pidfile](provider=augeas): Opening augeas with root /,
lens path , flags 0
debug: Augeas[set rsyncd pidfile](provider=augeas): Augeas version 0.7.0 is
installed
debug: Augeas[set rsyncd pidfile](provider=augeas): sending command 'set' with
params ["/files/etc/rsyncd.conf/.anon/'pid\\ file'", "/var/run/rsyncd.pid"]
debug: Augeas[set rsyncd pidfile](provider=augeas): Closed the augeas connection
err: //Augeas[set rsyncd pidfile]/returns: change from need_to_run to 0 failed:
Save failed with return code false
debug: Finishing transaction 70143984239220 with 1 changes
</pre>
Removing the backslash:
<pre>
augeas { "set rsyncd pidfile":
context => "/files/etc/rsyncd.conf/.anon/",
changes => "set 'pid file' /var/run/rsyncd.pid",
}
</pre>
... makes the warning disappear but not the error (which is slightly different):
<pre>
debug: Creating default schedules
debug: Failed to load library 'selinux' for feature 'selinux'
debug: Puppet::Type::User::ProviderLdap: true value when expecting false
debug: Puppet::Type::User::ProviderUser_role_add: file roleadd does not exist
debug: Puppet::Type::User::ProviderDirectoryservice: file /usr/bin/dscl does
not exist
debug: Puppet::Type::User::ProviderPw: file pw does not exist
debug: Failed to load library 'ldap' for feature 'ldap'
debug: /File[/var/puppet/state]: Autorequiring File[/var/puppet]
debug: /File[/var/puppet/clientbucket]: Autorequiring File[/var/puppet]
debug: /File[/etc/puppet/ssl/private_keys]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/etc/puppet/ssl/certificate_requests]: Autorequiring
File[/etc/puppet/ssl]
debug: /File[/etc/puppet/ssl/private]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/var/puppet/state/graphs]: Autorequiring File[/var/puppet/state]
debug: /File[/var/puppet/log]: Autorequiring File[/var/puppet]
debug: /File[/var/puppet/client_yaml]: Autorequiring File[/var/puppet]
debug: /File[/var/puppet/run]: Autorequiring File[/var/puppet]
debug: /File[/etc/puppet/ssl]: Autorequiring File[/etc/puppet]
debug: /File[/etc/puppet/ssl/certs]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/var/puppet/lib]: Autorequiring File[/var/puppet]
debug: /File[/etc/puppet/ssl/public_keys]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/var/puppet/facts]: Autorequiring File[/var/puppet]
debug: Finishing transaction 69911763370840 with 0 changes
info: Applying configuration version '1268907443'
debug: Augeas[set rsyncd pidfile](provider=augeas): Opening augeas with root /,
lens path , flags 0
debug: Augeas[set rsyncd pidfile](provider=augeas): Augeas version 0.7.0 is
installed
debug: Augeas[set rsyncd pidfile](provider=augeas): Will attempt to save and
only run if files changed
debug: Augeas[set rsyncd pidfile](provider=augeas): sending command 'set' with
params ["/files/etc/rsyncd.conf/.anon/'pid", "file'"]
debug: Augeas[set rsyncd pidfile](provider=augeas): Files changed, should
execute
debug: Augeas[set rsyncd pidfile](provider=augeas): Closed the augeas connection
debug: //Augeas[set rsyncd pidfile]: Changing returns
debug: //Augeas[set rsyncd pidfile]: 1 change(s)
debug: Augeas[set rsyncd pidfile](provider=augeas): Opening augeas with root /,
lens path , flags 0
debug: Augeas[set rsyncd pidfile](provider=augeas): Augeas version 0.7.0 is
installed
debug: Augeas[set rsyncd pidfile](provider=augeas): sending command 'set' with
params ["/files/etc/rsyncd.conf/.anon/'pid", "file'"]
debug: Augeas[set rsyncd pidfile](provider=augeas): Closed the augeas connection
err: //Augeas[set rsyncd pidfile]/returns: change from need_to_run to 0 failed:
Save failed with return code false
debug: Finishing transaction 69911763001060 with 1 changes
</pre>
Changing the resource like this:
<pre>
augeas { "set rsyncd pidfile":
#context => "/files/etc/rsyncd.conf/.anon/",
changes => "set '/files/etc/rsyncd.conf/.anon/pid\ file' /var/run/rsyncd.pid",
}
</pre>
... removes the error but not the warning, and fails to add/change the line as
expected (so I guess this should produce an error and fail instead of the
warning):
<pre>
warning: Unrecognised escape sequence '\ ' in file /tmp/aug.pp at line 3
debug: Creating default schedules
debug: Puppet::Type::User::ProviderPw: file pw does not exist
debug: Puppet::Type::User::ProviderDirectoryservice: file /usr/bin/dscl does
not exist
debug: Puppet::Type::User::ProviderUser_role_add: file roleadd does not exist
debug: Failed to load library 'ldap' for feature 'ldap'
debug: Puppet::Type::User::ProviderLdap: feature ldap is missing
debug: /File[/var/lib/puppet/ssl/certs/kisvm5.epfl.ch.pem]: Autorequiring
File[/var/lib/puppet/ssl/certs]
debug: /File[/var/lib/puppet/ssl/certificate_requests]: Autorequiring
File[/var/lib/puppet/ssl]
debug: /File[/var/puppet/facts]: Autorequiring File[/var/puppet]
debug: /File[/var/puppet/run]: Autorequiring File[/var/puppet]
debug: /File[/var/lib/puppet/ssl/private]: Autorequiring
File[/var/lib/puppet/ssl]
debug: /File[/var/lib/puppet/ssl/public_keys]: Autorequiring
File[/var/lib/puppet/ssl]
debug: /File[/var/puppet/state/graphs]: Autorequiring File[/var/puppet/state]
debug: /File[/var/puppet/state/state.yaml]: Autorequiring
File[/var/puppet/state]
debug: /File[/var/lib/puppet/ssl/private_keys/kisvm5.epfl.ch.pem]:
Autorequiring File[/var/lib/puppet/ssl/private_keys]
debug: /File[/var/lib/puppet/ssl/public_keys/kisvm5.epfl.ch.pem]: Autorequiring
File[/var/lib/puppet/ssl/public_keys]
debug: /File[/var/puppet/state]: Autorequiring File[/var/puppet]
debug: /File[/var/lib/puppet/ssl/certs/ca.pem]: Autorequiring
File[/var/lib/puppet/ssl/certs]
debug: /File[/var/lib/puppet/ssl/csr_kisvm5.epfl.ch.pem]: Autorequiring
File[/var/lib/puppet/ssl]
debug: /File[/var/puppet/clientbucket]: Autorequiring File[/var/puppet]
debug: /File[/var/puppet/lib]: Autorequiring File[/var/puppet]
debug: /File[/var/lib/puppet/ssl/certs]: Autorequiring File[/var/lib/puppet/ssl]
debug: /File[/var/lib/puppet/ssl/private_keys]: Autorequiring
File[/var/lib/puppet/ssl]
debug: /File[/var/puppet/state/classes.txt]: Autorequiring
File[/var/puppet/state]
debug: /File[/var/puppet/client_yaml]: Autorequiring File[/var/puppet]
debug: /File[/var/puppet/log]: Autorequiring File[/var/puppet]
debug: /File[/var/lib/puppet/ssl/crl.pem]: Autorequiring
File[/var/lib/puppet/ssl]
debug: Finishing transaction 23456254014360 with 0 changes
info: Applying configuration version '1268908267'
debug: Augeas[set rsyncd pidfile](provider=augeas): Opening augeas with root /,
lens path , flags 0
debug: Augeas[set rsyncd pidfile](provider=augeas): Augeas version 0.7.0 is
installed
debug: Augeas[set rsyncd pidfile](provider=augeas): Will attempt to save and
only run if files changed
debug: Augeas[set rsyncd pidfile](provider=augeas): sending command 'set' with
params ["'/files/etc/rsyncd.conf/.anon/pid\\ file'", "/var/run/rsyncd.pid"]
debug: Augeas[set rsyncd pidfile](provider=augeas): Skipping becuase no files
were changed
debug: Augeas[set rsyncd pidfile](provider=augeas): Closed the augeas connection
debug: Finishing transaction 23456254927480 with 0 changes
</pre>
This is the syntax which works, using the cli tool:
<pre>
# augtool
augtool> set "/files/etc/rsyncd.conf/.anon/pid\ file" /var/run/rsyncd.pid
augtool> save
Saved 1 file(s)
</pre>
I'm not sure if this is an augeas bug or if it could be something that changed
in the way puppet deals with backslashes.
--
You have received this notification because you have either subscribed to it,
or are involved in it.
To change your notification preferences, please click here:
http://reductivelabs.com/redmine/my/account
--
You received this message because you are subscribed to the Google Groups
"Puppet Bugs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/puppet-bugs?hl=en.