我有一个工作木偶配置来帮助在机器上安装mysql实例。我的环境设置为在同一台计算机上运行多个实例(具有不同的configs/ports/etc)。让木偶有条件地执行多个命令
基本设置我有一个清单看起来像
File{
owner => $owner,
group => $group,
before => Exec["mysql_install_db-${name}"],
}
exec{"mysql_install_db-${name}":
creates => "/var/lib/mysql/${name}/mysql",
command => "/usr/local/percona/mysql-${version}/usr/bin/mysql_install_db --user=mysql --datadir=/var/lib/mysql/${name} --basedir=/usr/local/percona/mysql-${version}/usr",
logoutput => true,
}
这工作完全正常,但现在我想修改该安装程序运行一些后续命令来引导新的一些内部安装存储过程以及我们为新安装做的其他“准备工作”。
的命令将基本上像
mysql -u user < /path/to/bootstrap1.sql
mysql -u user < /path/to/bootstrap2.sql
mysql -u user < /path/to/bootstrap3.sql
我只希望这些运行一次,mysql_install_db的命令之后,但略低于同一个“创造”后卫。
我发现了一些仅仅将数组传递给command参数的引用,但引用的形式并不总是一致地工作。
完成这样的事情的首选方法是什么,并确保命令按确定的顺序执行并且仅在运行mysql_install_db之后执行?
用于幂等SQL脚本的+1。我曾经用'create'命令创建一个文件,指示数据库不应再被触摸,但最终在我的脚本中解决了“DROP ... IF EXISTS”和“CREATE IF NOT EXISTS”,现在已经有了安心。 – xiankai