我正在使用Ansible:2.2.0.0
我有3台机器:
两个 vagrant 盒子(一个 CentOS 7.x 和一个 Ubuntu 14.04)和
第三个盒子是 EC2 Amazon Linux 实例(Amazon Linux AMI 版本 2016.03)。
在这些框中,我正在运行以下命令并获得有效输出(如下所示):
中央操作系统:
[vagrant@myvagrant ~] $ ansible all -m setup -i "`hostname`," --connection=local -a "filter=ansible_distribution*"
myvagrant | SUCCESS => {
"ansible_facts": {
"ansible_distribution": "CentOS",
"ansible_distribution_major_version": "7",
"ansible_distribution_release": "Core",
"ansible_distribution_version": "7.2.1511"
},
"changed": false
}
Ubuntu:
vagrant@myubuntuvagrant:~$ ansible all -m setup -i "`hostname`," --connection=local -a "filter=ansible_distribution*"
myubuntuvagrant | SUCCESS => {
"ansible_facts": {
"ansible_distribution": "Ubuntu",
"ansible_distribution_major_version": "14",
"ansible_distribution_release": "trusty",
"ansible_distribution_version": "14.04"
},
"changed": false
}
vagrant@myubuntuvagrant:~$
Amazon EC2 实例/盒子:
$ ansible all -m setup -i "`hostname`," --connection=local -a "filter=ansible_distribution*"
ip-10-200-1-145 | SUCCESS => {
"ansible_facts": {
"ansible_distribution": "Amazon",
"ansible_distribution_major_version": "NA",
"ansible_distribution_release": "NA",
"ansible_distribution_version": "2016.03"
},
"changed": false
}
在我的 Ansible playbook / templates/yum.repos.d.file.j2 文件之一中,我使用{{ ansible_distribution_major_version }}
变量并在 .repo 文件中使用它的baseurl
值作为 CentOS/Amazon EC2 实例的属性值,即when: ansible_distribution == "CentOS" or ansible_distribution == "Amazon"
.
baseurl=https://packagecloud.io/company/packages/telegraf/el/6/$basearch
PS:我不是在寻找 Ubuntu(因为在我的剧本中使用 apt-get 来设置 apt-get 源列表和安装软件包时,这部分工作正常)。
我的问题:为什么 ansible facter 变量没有为 Amazon EC2 实例的版本
设置任何有效的有效版本?ansible_distribution_major_release
我可以使用什么facter_*
/ansible_*
可以在所有 3 种操作系统类型中使用哪个。
PS:当我在其中使用baseurl
's 值../el/6/..
时(在 yum.repos.d/target-pacakge.amazon-os.repo 文件中), yum install 可以很好地在 Amazon linux 机器上安装软件包(不过,../el/7/..
在 baseurl中使用没用)。有关更多详细信息,请参见此处:https ://packagecloud.io/docs#os_distro_version (在标题下:Enterprise Linux(CentOS、RedHat、Amazon Linux))