确保节点至少运行某个内核版本?

时间:2014-03-31 22:20:00

标签: linux-kernel ubuntu-12.04 puppet docker

我正在尝试使用Vagrant创建开发环境,这取决于在Docker容器内运行的某些应用程序。

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

  1. 安装了Saucy LTS内核。
  2. Saucy LTS内核正在运行
  3. 我正在尝试使用Puppet配置该框,但我无法找到确保执行以下命令的方法:

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

    我显然需要重新启动它才能加载并运行新内核。

    有没有办法可以将这些项目定义为Puppet中的依赖项?

    我希望做这样的事情:

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

    关于如何实现这一目标的任何想法?

2 个答案:

答案 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)

这里最好和最简单的解决方案是use a Vagrant box which supports Docker by running the right kernel