运行 仅在先前未执行的情况下使用 puppet 的命令

Running a command using puppet only if it has not been executed earlier

假设我想确保我的 VM 上有 devstack。

exec{ "openstack":
  command => "git clone https://git.openstack.org/openstack-dev/devstack",
}

这是我为它编写的木偶代码,第一次运行良好。现在我想开一张支票。我只想在尚未完成的情况下克隆存储库。怎么做

exec { "openstack":
  command => 'git clone https://git.openstack.org/openstack-dev/devstack /path/to/devstack",
  unless => 'test -d /path/to/devstack'
}

这是一种非常老套的处理方式。你应该查看 vcsrepo puppet 模块 https://github.com/puppetlabs/puppetlabs-vcsrepo

你说

exec { 'openstack':
  command => 'git clone https://git.openstack.org/openstack-dev/devstack',
  creates => '/path/to/somewhere/devstack',
  cwd     => '/path/to/somewhere',
  path    => '/usr/bin',
}

现在,如果目录 /path/to/somewhere/devstack 存在,克隆命令将不会 运行。