我正在尝试使用Vagrant创建开发环境,这取决于在Docker容器内运行的某些应用程序。
所需的环境是Ubuntu 12.04 LTS,它映射为Vagrant中的precise64
框。问题是确保以下内容:
我正在尝试使用Puppet配置该框,但我无法找到确保执行以下命令的方法:
apt-get install linux-image-generic-lts-saucy linux-headers-generic-lts-saucy
reboot
我显然需要重新启动它才能加载并运行新内核。
有没有办法可以将这些项目定义为Puppet中的依赖项?
我希望做这样的事情:
package { "lxc-docker":
/* ... */
requires => Package["lts-kernel-saucy"]
}
关于如何实现这一目标的任何想法?
答案 0 :(得分:0)
如果包管理器正在使用apt-get
,那么您可以尝试以下操作:
# Create an array of package names that need to be installed
$mypack = [ "linux-image-generic-lts-saucy", "linux-header-generic-lts-saucy", "lts-kernel-saucy" ]
# Install all the packages
package { $mypack :
ensure => installed,
}
# Install other package that depends on the packages above :
package { "lxc-docker" :
ensure => installed,
requires => Package[$mypack],
}
# Create an `exec` that will reboot the machine if a new package is installed
# `refreshonly` sits there waiting for something new to happen
exec { "reboot_machine" :
command => "shutdown -r now",
path => "/bin:/usr/sbin:/sbin:/usr/local/sbin",
subscribe => Package ["lxc-docker"],
refreshonly => true,
}
答案 1 :(得分:0)