临时禁用资源

有时候,你希望在不会干扰其他工作的情况下临时禁用一个资源。例如, 你可能想要调整服务器上的一个配置文件,经过 Puppet 的不断测试,直到获得你想要的确切设置。 在此期间你不想让 Puppet 覆盖旧版本的配置,为此你可以在资源上设置如下的 noop 元参数:

    noop => true,

操作步骤

  1. 添加如下代码到你的配置清单:

    file { "/tmp/test.cfg":
        content => "Hello, world!\n",
        noop => true,
    }
    
  2. 运行 Puppet:

    # puppet agent --test
    info: Retrieving plugin
    info: Caching catalog for cookbook.bitfieldconsulting.com
    info: Applying configuration version '1306159566'
    
    notice: /Stage[main]//Node[cookbook]/File[/tmp/test.cfg]/ensure:
    is absent, should be file (noop)
    
    notice: Finished catalog run in 0.53 seconds
    
  3. 测试之后,移除 noop 参数:

    file { "/tmp/test.cfg":
        content => "Hello, world!\n",
    }
    
  4. 再次运行 Puppet:

    # puppet agent --test
    
    info: Retrieving plugin
    info: Caching catalog for cookbook.bitfieldconsulting.com
    info: Applying configuration version '1306159705'
    
    notice: /Stage[main]//Node[cookbook]/File[/tmp/test.cfg]/ensure:
    defined content as '{md5}746308829575e17c3331bbcb00c0898b'
    
    notice: Finished catalog run in 0.52 seconds
    

工作原理

首次运行 Puppet 时,由于 noop 元参数被设置为 true, 因此对于这一特定资源, 与你使用 --noop 标志运行 Puppet 的效果是一样的。 Puppet 会指出此资源将被应用, 除此之外什么也没做。

再次运行 Puppet 时,由于 noop 元参数被移除,所以此资源会被正常地应用到节点。