问题答案
比如说我有一下配置文件:
 
node 'agent.example.com' {
  include mysql
}
这样一来,agent.example.com 就会安装上mysql这个module,但是这个module可能会产生其他配置文件或者安装了某一些依赖的包。
 
现在我想从agent.example.com中恢复到没有安装mysql这个module的状态,也就删除掉它(我这里说的不是 puppet module uninstall mysql),要如何操作呢?
 
一个package可以用ensure => 'purged'来移除掉,一个module要怎么移除掉呢?
标签: MySQL
答案
package可以使用ensure是因为package的类型定义了ensure这个参数
 
module是一个class(class里可能还引用了别的class),而不是一个类型,没有参数。要删除这个module带来的package、service、file等等,只能在这个module里定义一个module_name::removed类,在这个类里,把各种资源置为删,例如:
 
class mysql::removed {
  Package["mysql-server"] {
      ensure => purged,
  }
 
  File["/etc/my.cnf"] {
      ensure => absent,
  }
}
 
node "xxx.example.com" inherts 'agent.example.com' {
  include mysql::removed
}
举一反三