Issue #20679 has been updated by Josh Cooper.

Puppet applies multiple catalogs (each in a Transaction) during a single agent 
run. For example, settings defined in puppet.conf are applied in one catalog, 
pluginsync in another, statefile in another, ssl files in another, etc.

So I think we want to ignore noop when applying non-host catalogs, which the 
code currently does, see `Property#noop`. But if we are applying a host 
catalog, then we want to give precedence to the global setting `Puppet[:noop]` 
over the resource's `noop` metaparameter. I think the following in 
`lib/puppet/property.rb:1079-1085` will accomplish this:

<pre>
    if Puppet[:noop]
      true
    elsif defined?(@noop)
      @noop
    else
      false
    end
</pre>


----------------------------------------
Bug #20679: puppet agent --noop command line option does not guarantee a fully 
dry run
https://projects.puppetlabs.com/issues/20679#change-92190

* Author: Nick Moriarty
* Status: Needs Decision
* Priority: High
* Assignee: Andrew Parker
* Category: agent
* Target version: 
* Affected Puppet version: 2.7.11
* Keywords: noop simulation dry-run dryrun simulate test backlog
* Branch: 
----------------------------------------
According to some documentation (including man pages), and common sense, 
specifying --noop should cause Puppet agent to run in 'dry-run' mode, and make 
no changes.

However, it seems that this actually just changes the global resource default 
for 'noop' to true.  If a resource is defined which determines noop itself (for 
example, based on a parameter), this will escape what would reasonably be 
expected to be a simulation run, as it will override the global noop with 
'false'.

I noticed this while testing a development branch and noting that it actually 
affected a file mode somewhere.

If not implemented via the 'noop' mechanism, a proper simulation mode should be 
provided which will show exactly what will happen, but with the guarantee that 
nothing will be done.  The current --noop flag certainly doesn't provide that 
guarantee.

This issue may cause us to internally ban the use of 'noop' in manifests, as it 
leaves us with no way of guaranteeing a proper dry run.


-- 
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 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].
Visit this group at http://groups.google.com/group/puppet-bugs?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to