Issue #8922 has been reported by Mark Heily.

----------------------------------------
Bug #8922: invalid mount entries created in Solaris /etc/vfstab
https://projects.puppetlabs.com/issues/8922

Author: Mark Heily
Status: Unreviewed
Priority: Normal
Assignee: 
Category: 
Target version: 
Affected Puppet version: 
Keywords: 
Branch: 


The mount provider on Solaris appears to be creating entries in /etc/vfstab 
using the wrong syntax. Here is the resource definition that I used: 

<pre>
 mount { '/tmp':
    device      => 'swap',
    atboot      => 'true',
    blockdevice => '-',
    fstype      => 'tmpfs',
    options     => 'size=1024m',
    remounts    => false,
}
</pre>

Here is the puppet agent log:

<pre>
notice: /Stage[main]//Mount[/tmp]/device: defined 'device' as 'swap'
notice: /Stage[main]//Mount[/tmp]/fstype: defined 'fstype' as 'tmpfs'
notice: /Stage[main]//Mount[/tmp]/options: defined 'options' as 'size=1024m'
notice: /Stage[main]//Mount[/tmp]/pass: defined 'pass' as '0'
notice: /Stage[main]//Mount[/tmp]/dump: defined 'dump' as '0'
</pre>

Here is the entry it created. The syntax would be perfectly valid on Linux, but 
not on Solaris:
<pre>
swap /tmp tmpfs size=1024m 0 0
</pre>

Here is what it should have created:
<pre>
swap - tmpfs size=1024m - yes -
</pre>

Specifically, it needs to do the following:

 * Add the 'device to fsck' column
 * Add the 'mount at boot' column
 * Use '-' instead of '0' for the dump column
 * Change the order of the 'mount options' column

I'm running Puppet version 2.6.8 installed via RubyGems. The system is running 
Solaris 10 (SPARC). See below for the output when running with the --debug and 
--trace options.

<pre>
verne# puppet apply vfstab-bug.pp --debug --trace
debug: Failed to load library 'selinux' for feature 'selinux'
debug: Creating default schedules
debug: Failed to load library 'shadow' for feature 'libshadow'
debug: Puppet::Type::User::ProviderUseradd: file chage does not exist
debug: Puppet::Type::User::ProviderLdap: true value when expecting false
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::File::ProviderMicrosoft_windows: feature microsoft_windows 
is missing
debug: Failed to load library 'ldap' for feature 'ldap'
debug: /File[/var/lib/puppet/state/classes.txt]: Autorequiring 
File[/var/lib/puppet/state]
debug: /File[/var/lib/puppet/client_data]: Autorequiring File[/var/lib/puppet]
debug: /File[/var/lib/puppet/log]: Autorequiring File[/var/lib/puppet]
debug: /File[/etc/puppet/ssl/certs/ca.pem]: Autorequiring 
File[/etc/puppet/ssl/certs]
debug: /File[/etc/puppet/ssl/certs]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/var/lib/puppet/run]: Autorequiring File[/var/lib/puppet]
debug: /File[/etc/puppet/ssl/crl.pem]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/etc/puppet/ssl/certificate_requests]: Autorequiring 
File[/etc/puppet/ssl]
debug: /File[/var/lib/puppet/facts]: Autorequiring File[/var/lib/puppet]
debug: /File[/etc/puppet/ssl]: Autorequiring File[/etc/puppet]
debug: /File[/var/lib/puppet/lib]: Autorequiring File[/var/lib/puppet]
debug: /File[/etc/puppet/ssl/private]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/var/lib/puppet/state/graphs]: Autorequiring 
File[/var/lib/puppet/state]
debug: /File[/etc/puppet/ssl/public_keys]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/etc/puppet/ssl/private_keys]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/etc/puppet/ssl/private_keys/verne.es.gwu.edu.pem]: Autorequiring 
File[/etc/puppet/ssl/private_keys]
debug: /File[/etc/puppet/ssl/certs/verne.es.gwu.edu.pem]: Autorequiring 
File[/etc/puppet/ssl/certs]
debug: /File[/var/lib/puppet/client_yaml]: Autorequiring File[/var/lib/puppet]
debug: /File[/var/lib/puppet/state/last_run_report.yaml]: Autorequiring 
File[/var/lib/puppet/state]
debug: /File[/etc/puppet/ssl/public_keys/verne.es.gwu.edu.pem]: Autorequiring 
File[/etc/puppet/ssl/public_keys]
debug: /File[/var/lib/puppet/state]: Autorequiring File[/var/lib/puppet]
debug: /File[/var/lib/puppet/state/state.yaml]: Autorequiring 
File[/var/lib/puppet/state]
debug: /File[/var/lib/puppet/clientbucket]: Autorequiring File[/var/lib/puppet]
debug: /File[/var/lib/puppet/state/last_run_summary.yaml]: Autorequiring 
File[/var/lib/puppet/state]
debug: Finishing transaction 8594212
debug: Loaded state in 0.10 seconds
debug: Loaded state in 0.10 seconds
debug: Prefetching parsed resources for mount
debug: Puppet::Type::Mount::ProviderParsed: Executing '/usr/sbin/mount'
info: Applying configuration version '1313073251'
notice: /Stage[main]//Mount[/tmp]/device: defined 'device' as 'swap'
notice: /Stage[main]//Mount[/tmp]/fstype: defined 'fstype' as 'tmpfs'
notice: /Stage[main]//Mount[/tmp]/options: defined 'options' as 'size=1024m'
notice: /Stage[main]//Mount[/tmp]/pass: defined 'pass' as '0'
notice: /Stage[main]//Mount[/tmp]/dump: defined 'dump' as '0'
debug: Flushing mount provider target /etc/vfstab
debug: Finishing transaction 8008324
info: FileBucket adding {md5}454510c4f4b5bb5c28bdb7d71c86508f
info: /Stage[main]//Mount[/tmp]: Scheduling refresh of Mount[/tmp]
info: /Stage[main]//Mount[/tmp]: Scheduling refresh of Mount[/tmp]
info: /Stage[main]//Mount[/tmp]: Scheduling refresh of Mount[/tmp]
info: /Stage[main]//Mount[/tmp]: Scheduling refresh of Mount[/tmp]
info: /Stage[main]//Mount[/tmp]: Scheduling refresh of Mount[/tmp]
info: Mount[/tmp](provider=parsed): Remounting
debug: Puppet::Type::Mount::ProviderParsed: Executing '/usr/sbin/umount /tmp'
err: /Stage[main]//Mount[/tmp]: Failed to call refresh: Execution of 
'/usr/sbin/umount /tmp' returned 1: umount: /tmp busy

/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/util.rb:365:in 
`execute'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/provider.rb:121:in 
`umount'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/provider.rb:128:in 
`umount'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/provider/mount.rb:36:in
 `unmount'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/provider/mount.rb:29:in
 `remount'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/type/mount.rb:229:in 
`refresh'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/transaction/event_manager.rb:80:in
 `process_callback'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/transaction/event_manager.rb:20:in
 `process_events'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/transaction/event_manager.rb:72:in
 `queued_events'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/transaction/event_manager.rb:71:in
 `queued_events'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/transaction/event_manager.rb:19:in
 `process_events'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/transaction.rb:95:in 
`eval_resource'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/transaction.rb:142:in 
`evaluate'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/util.rb:429:in 
`thinmark'
/usr/local/lib/ruby/1.8/benchmark.rb:293:in `measure'
/usr/local/lib/ruby/1.8/benchmark.rb:307:in `realtime'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/util.rb:428:in 
`thinmark'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/transaction.rb:141:in 
`evaluate'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/transaction.rb:134:in 
`evaluate'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/resource/catalog.rb:144:in
 `apply'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/configurer.rb:150:in 
`run'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/util.rb:193:in 
`benchmark'
/usr/local/lib/ruby/1.8/benchmark.rb:293:in `measure'
/usr/local/lib/ruby/1.8/benchmark.rb:307:in `realtime'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/util.rb:192:in 
`benchmark'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/configurer.rb:149:in 
`run'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/application/apply.rb:126:in
 `main'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/application/apply.rb:35:in
 `run_command'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/application.rb:305:in 
`run'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/application.rb:420:in 
`hook'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/application.rb:305:in 
`run'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/application.rb:411:in 
`exit_on_fail'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/application.rb:305:in 
`run'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/lib/puppet/util/command_line.rb:62:in
 `execute'
/usr/local/lib/ruby/gems/1.8/gems/puppet-2.6.8/bin/puppet:4
/usr/local/bin/puppet:19
debug: Finishing transaction 8062156
debug: Storing state
debug: Stored state in 0.62 seconds
notice: Finished catalog run in 1.47 seconds
</pre>


-- 
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://projects.puppetlabs.com/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.

Reply via email to