我有一個工作木偶配置來幫助在機器上安裝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