两国之间的傀儡移民

两国之间的傀儡移民

如果我在 Puppet 中的配置在两次运行之间发生了变化,是否可以为此实施一些迁移任务?

例如,我指定

apache::vhost { 'vhost.example.com':
  port    => '80',
  docroot => '/var/www/vhost',
}

一开始,我愉快地用了几个月。然后我想将 docroot 更改为/home/www/vhost。Puppet 随后更改了 apache vhost,但我在旧/var/www/vhost文件夹中也有一些不受 Puppet 管理的数据。是否可以在其中添加一些迁移步骤,例如:

“如果文档根目录从 更改为/var/www/vhost/home/www/vhostmv /var/www/vhost /home/www/vhost”。

谢谢!

答案1

也许你可以使用复杂的技巧,但我不会那样做。

困难在于,puppet 的语言不是命令式的,而是声明式的,因此当您更改变量设置时,您没有以前的值。Puppet 只会检查机器是否处于您想要的状态,如果不是,则确保它按照您要求的方式运行,否则会出错。

我认为进行此类更改的正确方法是像使用 puppet 进行旧站点那样配置新站点,并检查旧文档根目录是否存在,如果找到就将其删除。

这是您决定更改 docroot 之后的代码(未经测试的)示例:

$old_docroot = "/var/www/vhost"
$new_docroot = "/home/www/vhost"

apache::vhost { 'vhost.example.com':
  port    => '80',
  docroot => $new_docroot,
  notify  => Exec['cleanup_old_docroot_if_needed'],
}

exec {'cleanup_old_docroot_if_needed':
  command     => "/bin/rm -qrf $old_docroot",
  refreshonly => true,
}

相关内容