Vagrant Puppet:当从另一个类执行成功时从类执行
我只想在来自不同类的另一个Exec成功执行时调用ExecVagrant Puppet:当从另一个类执行成功时从类执行,vagrant,puppet,Vagrant,Puppet,我只想在来自不同类的另一个Exec成功执行时调用Exec class mysql { exec { 'load-sql': command => 'mysql -uadmi -pxxx general < /vagrant/sites/ddbb/general.sql', path => ['/bin', '/usr/bin'], timeout => 0, onlyif => "te
class mysql {
exec { 'load-sql':
command => 'mysql -uadmi -pxxx general < /vagrant/sites/ddbb/general.sql',
path => ['/bin', '/usr/bin'],
timeout => 0,
onlyif => "test -f /vagrant/sites/ddbb/general.sql",
}
exec { 'delete-general-sql':
command => 'sudo rm /vagrant/sites/ddbb/general.sql',
path => ['/bin', '/usr/bin'],
onlyif => "test -f /vagrant/sites/ddbb/general.sql",
require => Exec['load-sql'],
}
}
class sphinx {
exec { 'sphinx-create-all-index':
command => 'sudo indexer -c /etc/sphinxsearch/sphinx.conf --all --rotate',
require => Exec['load-sql'],
path => '/usr/bin/';
}
}
classmysql{
exec{'load sql':
command=>'mysql-uadmi-pxxx-general['/bin','/usr/bin'],
超时=>0,
onlyif=>“test-f/vagrant/sites/ddbb/general.sql”,
}
exec{'delete general sql':
command=>'sudorm/vagrant/sites/ddbb/general.sql',
路径=>['/bin','/usr/bin'],
onlyif=>“test-f/vagrant/sites/ddbb/general.sql”,
require=>Exec['load-sql'],
}
}
斯芬克斯类{
exec{'sphinx创建所有索引':
command=>'sudo indexer-c/etc/sphinxsearch/sphinx.conf--all--rotate',
require=>Exec['load-sql'],
路径=>'/usr/bin/';
}
}
仅当“加载sql”成功执行,但“sphinx-create-all-index”忽略“加载sql”的结果时,才会执行命令“delete general sql”
提前谢谢 你搞砸了
require
和onlyif
。
了解
要求
导致在目标资源之后应用资源
所以
表示在执行exec{'load-sql':}
resource之后执行resource
另一方面,only如果
in意味着:
如果设置了此参数,则仅当命令的退出代码为0时,此exec才会运行
因此,您必须在
'sphinx-create-all-index'
中添加带有适当测试的onlyif
(可能是onlyif=>“test-f/vagrant/sites/ddbb/general.sql
)以使依赖的exec
仅在前一个运行时运行,您可以使用订阅和刷新
exec { 'sphinx-create-all-index':
command => 'sudo indexer -c /etc/sphinxsearch/sphinx.conf --all --rotate',
subscribe => Exec['load-sql'],
refreshonly => true,
path => '/usr/bin/';
}
这有一些警告-如果第一次出现问题,您可能很难让Puppet再次执行此任务
exec { 'sphinx-create-all-index':
command => 'sudo indexer -c /etc/sphinxsearch/sphinx.conf --all --rotate',
subscribe => Exec['load-sql'],
refreshonly => true,
path => '/usr/bin/';
}