ansible和ansible-playbook不回复内核事实的相同值

时间:2015-10-09 09:22:09

标签: vagrant ansible ansible-playbook

我正在运行一个流浪汉VM来测试ansible playbooks。

其中一个剧本包括一些基于内核版本的测试。 vagrant VM是Ubuntu 12.04。这是Vagrantfile。

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|

  config.vm.box = "ubuntu/precise64"
  config.vm.provider "virtualbox" do |v|
    v.customize ["modifyvm", :id, "--cpuexecutioncap", "90", "--memory", "2048"]
  end

  config.vm.provision :shell, path: "vagrant/bootstrap.sh"
  config.vm.network :private_network, ip: "192.168.2.2"
  config.vm.provision :ansible do |ansible|
    ansible.playbook = "vagrant/setup.yml"
  end
end

现在在VM中,我更新内核以反映我的生产环境从3.8到3.11,使用登录到VM时:

sudo apt-get install --install-recommends linux-generic-lts-saucy xserver-xorg-lts-saucy libgl1-mesa-glx-lts-saucy

现在,当我使用 ansible 命令收集Vagrant VM的事实时,我得到:

  

“ansible_kernel”:“3.11.0-26-generic”,

然而,使用小剧本(因此使用 ansible-playbook 命令)

- hosts: default
  sudo: True
  tasks:
  - debug: msg={{ ansible_kernel }}

我明白了:

TASK: [debug msg={{ ansible_kernel }}] 
**************************************** 
ok: [default] => { 
     "msg": "3.2.0-90-virtual"
}

我很困惑,为什么我在这里看不到内核版本的相同值?

1 个答案:

答案 0 :(得分:1)

根据执行任务的用户,事实存在差异: 我猜你用了

ansible -m setup machine_name

获取ansible内核。 还可以尝试:

ansible -s -m setup machine_name

你会看到差异