我正在运行一个流浪汉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" }
我很困惑,为什么我在这里看不到内核版本的相同值?
答案 0 :(得分:1)
根据执行任务的用户,事实存在差异: 我猜你用了
ansible -m setup machine_name
获取ansible内核。 还可以尝试:
ansible -s -m setup machine_name
你会看到差异