如何使用命令链接 类
How to chain classes with commands
我有以下 class,它安装 mysql 并设置一个名为 user 的用户,但是当运行 create-database 命令时,该用户尚未创建。
我如何链接命令以便在 create-database 尝试使用它之前创建用户?
class { '::mysql::server':
package_name => 'mariadb-server.x86_64',
root_password => 'root',
remove_default_accounts => true,
override_options => $override_options,
restart => true,
users => {
'user@%' => {
ensure => 'present',
max_connections_per_hour => '0',
max_queries_per_hour => '0',
max_updates_per_hour => '0',
max_user_connections => '0',
password_hash => '...',
}
},
grants => {
'user@%/*.*' => {
ensure => 'present',
options => ['GRANT'],
privileges => ['ALL'],
table => '*.*',
user => 'user@%',
},
}
}->
exec { 'create-database':
creates => '/opt/dbinstalled',
command => '/usr/bin/mysql -u user -puser < /create-db.sql'
}
我正在使用 puppetlabs-mysql 软件包来安装 mysql。
您应该查看 require, before, subscribe, notify
元参数的文档。它们用于描述资源排序 (before, notify
),或资源排序和依赖失败时的失败 (require, subscribe
)。请注意,subscribe, notify
元参数仅适用于某些资源类型(exec, service
等)。
在这种情况下,您可以执行以下操作来链接 class:
exec { 'create-database':
creates => '/opt/dbinstalled',
command => '/usr/bin/mysql -u user -puser < /create-db.sql',
require => Class[::mysql::server],
}
但你真的只需要对用户资源的依赖:
exec { 'create-database':
creates => '/opt/dbinstalled',
command => '/usr/bin/mysql -u user -puser < /create-db.sql',
require => User[username or array of users],
}
另外你可能只想创建一次数据库,所以我们可以给它一个 subscribe/refreshonly
的幂等性:
exec { 'create-database':
creates => '/opt/dbinstalled',
command => '/usr/bin/mysql -u user -puser < /create-db.sql',
subscribe => User[username or array of users],
refreshonly => true,
}
请注意,如果您更改 create-database
订阅的 user
资源,这将重新运行 exec
资源,因此请查看 unless, onlyif
参数 exec
与其他建立幂等性的方法一样。
我有以下 class,它安装 mysql 并设置一个名为 user 的用户,但是当运行 create-database 命令时,该用户尚未创建。 我如何链接命令以便在 create-database 尝试使用它之前创建用户?
class { '::mysql::server':
package_name => 'mariadb-server.x86_64',
root_password => 'root',
remove_default_accounts => true,
override_options => $override_options,
restart => true,
users => {
'user@%' => {
ensure => 'present',
max_connections_per_hour => '0',
max_queries_per_hour => '0',
max_updates_per_hour => '0',
max_user_connections => '0',
password_hash => '...',
}
},
grants => {
'user@%/*.*' => {
ensure => 'present',
options => ['GRANT'],
privileges => ['ALL'],
table => '*.*',
user => 'user@%',
},
}
}->
exec { 'create-database':
creates => '/opt/dbinstalled',
command => '/usr/bin/mysql -u user -puser < /create-db.sql'
}
我正在使用 puppetlabs-mysql 软件包来安装 mysql。
您应该查看 require, before, subscribe, notify
元参数的文档。它们用于描述资源排序 (before, notify
),或资源排序和依赖失败时的失败 (require, subscribe
)。请注意,subscribe, notify
元参数仅适用于某些资源类型(exec, service
等)。
在这种情况下,您可以执行以下操作来链接 class:
exec { 'create-database':
creates => '/opt/dbinstalled',
command => '/usr/bin/mysql -u user -puser < /create-db.sql',
require => Class[::mysql::server],
}
但你真的只需要对用户资源的依赖:
exec { 'create-database':
creates => '/opt/dbinstalled',
command => '/usr/bin/mysql -u user -puser < /create-db.sql',
require => User[username or array of users],
}
另外你可能只想创建一次数据库,所以我们可以给它一个 subscribe/refreshonly
的幂等性:
exec { 'create-database':
creates => '/opt/dbinstalled',
command => '/usr/bin/mysql -u user -puser < /create-db.sql',
subscribe => User[username or array of users],
refreshonly => true,
}
请注意,如果您更改 create-database
订阅的 user
资源,这将重新运行 exec
资源,因此请查看 unless, onlyif
参数 exec
与其他建立幂等性的方法一样。