简体   繁体   English

如何确保人偶执行在每个触发的事件上运行?

[英]how to ensure puppet exec run on every event triggered?

I want puppet exec to run on first deployment of a file and on every further change on the file. 我希望puppet exec在文件的首次部署以及文件的所有其他更改上运行。 For that I have created below code in puppet . 为此,我在puppet中创建了以下代码。

Exec does not run on first file deployment. Exec不会在首次文件部署上运行。 I am assuming it is because of refreshonly. 我假设这是因为refreshonly。 Does anyone know what needs to be changed in the code? 有谁知道代码中需要更改的内容?

define dev_tools::javacert(
  $keystore="/etc/alternatives/java_sdk/jre/lib/security/cacerts",
  $storepass='xxx',
  $alias = $name,
  $filecertpath = "/var/lib/certs/${name}.crt",

){
  file{
    $filecertpath:
      source => "puppet:///modules/${module_name}/sonarqube/${::env}/${::server_location}/${filecertpath}",
      mode   => '0644',
      notify => Exec["deploy_javacert_${name}"];
  }
  exec {
    "deploy_javacert_${name}":
       path => "/usr/bin",
       command => "keytool -importcert -keystore ${keystore} -alias $alias -file $filecertpath -storepass ${storepass} -noprompt  2>/dev/null",
       provider => shell,
       refreshonly => true;
  }

}

The use of refreshonly looks correct. 使用refreshonly看起来正确。 I am unable to reproduce this. 我无法重现。 Using this simplified version of your code: 使用此简化的代码版本:

Attempt to create a MCVE : 尝试创建一个MCVE

# test.pp

file { 'foo': 
  path   => '/tmp/foo',
  source => '/tmp/source',
  notify => Exec['bar'],
}
exec { 'bar':
  path        => '/bin',
  command     => 'echo "baz qux"',
  refreshonly => true,
  logoutput   => true,
}

Setup: 设定:

▶ touch /tmp/source 

Initial run: 初始运行:

▶ puppet apply test.pp
...
Notice: /Stage[main]/Main/File[foo]/content: content changed '{md5}0a227d644d5435d49addae1da06e909c' to '{md5}d41d8cd98f00b204e9800998ecf8427e'
Notice: /Stage[main]/Main/Exec[bar]/returns: baz qux
Notice: /Stage[main]/Main/Exec[bar]: Triggered 'refresh' from 1 event

Subsequent run: 随后的运行:

▶ puppet apply test.pp
...
Notice: Compiled catalog for 192-168-1-2.tpgi.com.au in environment production in 0.08 seconds
Notice: Applied catalog in 0.03 seconds

New content: 新内容:

▶ echo foobar > /tmp/source
▶ puppet apply test.pp
...
Notice: /Stage[main]/Main/File[foo]/content: content changed '{md5}d41d8cd98f00b204e9800998ecf8427e' to '{md5}14758f1afd44c09b7992073ccf00b43d'
Notice: /Stage[main]/Main/Exec[bar]/returns: baz qux

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM