amazon-web-services - Amazon Linux 机器 - Ansible ansible_distribution* 变量主要发行版

标签 amazon-web-services amazon-ec2 yum ansible-2.x ansible-facts

我正在使用 Ansible:2.2.0.0

我有3台机器:

两个流浪盒(一个 CentOS 7.x 和一个 Ubuntu 14.04)和
第三个盒子是 EC2 Amazon Linux 实例(Amazon Linux AMI 版本
2016.03)。

在这些盒子上,我是 运行以下命令 并获得有效的输出(如下所列):

CentOS :

[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 }}变量并在 baseurl 的 .repo 文件中使用它的值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 factor 变量没有为 ansible_distribution_major_release 设置任何有效的有效值Amazon EC2 实例的版本?什么 facter_*/ansible_*我可以使用它适用于所有 3 种操作系统类型吗?

PS:当我使用 baseurl的值与 ../el/6/..在其中(在 yum.repos.d/target-pacakge.amazon-os.repo 文件中), yum install 可以很好地在 Amazon linux box 上安装软件包(尽管在 baseurl 中使用 ../el/7/.. 不起作用)。 详情请看这里 :https://packagecloud.io/docs#os_distro_version (在标题下: Enterprise Linux(CentOS、RedHat、Amazon Linux))

最佳答案

如果您使用以下, set_fact ,您不必专门处理 ansible_distribution_major_version 在所有三种操作系统类型的任务中。

pre_tasks:
- set_fact: ansible_distribution_major_version=6
  when: ansible_distribution == "Amazon" and ansible_distribution_major_version == "NA"

关于amazon-web-services - Amazon Linux 机器 - Ansible ansible_distribution* 变量主要发行版,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41564552/

相关文章:

ruby - 如何将 aws 中的 Gem 与 Ruby 结合使用?

codeigniter - 带有Amazon SES的Codeigniter SMTP电子邮件

ios - 如何将 UIDocumentPickerViewcontroller 文件上传到 AWS S3 TransferUtility Swift

caching - 亚马逊 ec2 实例中的缓存内存大小是多少?

amazon-ec2 - Ansible ec2_remote_facts

java - 如何从 jar 文件在 linux 命令行中执行 yum 安装?

amazon-web-services - 用于 EC2 实例中现货请求的 aws cloudformation 模板

amazon-web-services - 当 Auto Scaling 启动新实例时自动更新 Route 53

linux - 如何运行从当前 rpm 规范文件安装 rpm 的 bash 脚本?

java - 如何安装特定版本的java