Como adiciono argumentos de “garantia” às definições de fantoches?

2

Eu tenho uma definição de puppet que executa um tipo exec para criar um usuário mysql que se parece com isso:

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 ], 
    }
}

Então, eu quero fazer o argumento $ garantir funcionar corretamente, chamando um executivo completamente diferente para deixar o usuário. Qual é a melhor maneira de fazer isso?

Eu tentei a seguinte configuração:

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 { ... }
}

mas isso falha porque minha definição de concessões (não mostrada) agora não é mais dependente do uso do mysql-user primeiro.

    
por Daniel Zollinger 18.08.2009 / 02:15

1 resposta

4
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: }
    }
}

Para mais do que apenas garantir presente / ausente, você pode mudar para um caso na mesma veia. Não vá para as subclasses, porque, como você diz, elas perdem informações de dependência.

    
por 18.08.2009 / 02:42

Tags