2014-03-31 21 views
0

我想创建一个使用Vagrant的开发环境,它依赖于在Docker容器内运行的某些应用程序。确保节点至少运行某个内核版本?

所需环境是Ubuntu 12.04 LTS,它映射为Vagrant中的precise64框。问题是确保以下内容:

  1. 安装了Saucy LTS内核。
  2. 该Saucy LTS内核是运行

我试图提供使用木偶,我无法想出一个办法盒子,以确保下面的命令执行:

apt-get install linux-image-generic-lts-saucy linux-headers-generic-lts-saucy 
reboot 

我显然需要重新启动箱为它加载和运行新的内核。

有没有一种方法可以将这些项目定义为Puppet中的依赖关系?

我希望做这样的事情:

package { "lxc-docker": 
    /* ... */ 
    requires => Package["lts-kernel-saucy"] 
} 

我如何能做到这一点任何想法?

回答

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