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

Linux kernel 确保节点至少运行某个内核版本?,linux-kernel,ubuntu-12.04,puppet,docker,Linux Kernel,Ubuntu 12.04,Puppet,Docker,我试图使用Vagrant创建一个开发环境,它依赖于Docker容器中运行的某些应用程序 所需的环境是Ubuntu12.04LTS,它映射为Vagrant中的precise64框。问题在于确保以下几点: 安装了Saucy LTS内核 Saucy LTS内核正在运行 我正在尝试使用Puppet配置该框,但我无法找到确保执行以下命令的方法: apt-get install linux-image-generic-lts-saucy linux-headers-generic-lts-saucy reb

我试图使用Vagrant创建一个开发环境,它依赖于Docker容器中运行的某些应用程序

所需的环境是Ubuntu12.04LTS,它映射为Vagrant中的
precise64
框。问题在于确保以下几点:

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

    apt-get install linux-image-generic-lts-saucy linux-headers-generic-lts-saucy
    reboot
    
    我显然需要重新启动这个盒子,让它加载并运行新内核

    有没有办法在Puppet中将这些项定义为依赖项

    我想做这样的事情:

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

    关于如何实现这一点,您有什么想法吗?

    如果包管理器傀儡使用的是
    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,
      }
    

    这里最好、最简单的解决方案是