如何向傀儡定义添加“确保”参数?

如何向傀儡定义添加“确保”参数?

我有一个 puppet 定义,它运行 exec 类型来创建一个如下所示的 mysql 用户:

define mysql::mysql-user ($user, $host="$mysql_subnet", $passwd="", $ensure="present") {
    exec { "mysql -e \"CREATE USER '$user'@'$host' IDENTIFIED BY PASSWORD '$passwd'\"":
        path    => "/usr/bin:/bin",
        unless => "mysql -e \"SELECT Host,User FROM mysql.user WHERE Host='$host' AND User='$user'\" | grep $user",
        require => Service[ mysql ], 
    }
}

因此,我想让 $ensure 参数正常工作,调用完全不同的 exec 来删除用户。最好的方法是什么?

我尝试过以下设置:

define mysql::mysql-user ($user, $host="$mysql_subnet", $passwd="", $ensure="present") {
    case $ensure {
        present:    { include add-user }
        absent:     { include remove-user }
    }
}

class mysql::add-user {
    exec { ... }
}

class mysql::remove-user {
    exec { ... }
}

但这失败了,因为我的授权定义(未显示)现在不再依赖于首先运行的 mysql-user。

答案1

define blah($ensure = present) {
    if $ensure == "present" {
        exec { do_something_to_make_it_be_here: }
    } else {
        exec { do_something_to_make_it_not_be_here: }
    }
}

除了确保存在/不存在之外,您还可以切换到相同类型的案例。不要转到子类,因为正如您所说,它们会丢失依赖关系信息。

相关内容