У меня есть следующий код марионетки:
exec { 'set mysql root password':
user => root,
path => "/usr/bin:/usr/sbin:/bin",
command => "/usr/bin/mysqladmin -u root password \'${root_pwd}\'",
onlyif => 'grep /etc/mysql_root_password_setup.cf -nrw -e \'0\'',
}
exec { 'set mysql hostname password':
user => root,
path => "/usr/bin:/usr/sbin:/bin",
command => "/usr/bin/mysqladmin -u root -h ${::fqdn} password \'${root_pwd}\'",
onlyif => 'grep /etc/mysql_root_password_setup.cf -nrw -e \'0\'',
}
exec { 'Modify the Breadcrumb':
user => root,
path => "/usr/bin:/usr/sbin:/bin",
command => "echo 1 > /etc/mysql_root_password_setup.cf",
onlyif => 'grep /etc/mysql_root_password_setup.cf -nrw -e \'0\'',
}
Как видите, я выполняю три команды exec. Первый устанавливает пароль Mysql, второй делает то же самое, третий, однако, записывает 1 в файл хлебных крошек /etc/mysql_root_password_setup.cf
.
Я хочу, чтобы третий exec выполнялся только после завершения первых двух exec.
Как я могу указать марионетке выполнить их в том порядке, в котором они определены в файле класса.
Вы можете использовать Puppet's require
параметр.
Например:
exec { 'set mysql root password':
...
}
exec { 'set mysql hostname password':
require => Exec['set mysql root password'],
...
}
exec { 'Modify the Breadcrumb':
require => Exec['set mysql hostname password'],
...
}