【问题标题】:Differentiate Amazon Linux 2 and Amazon Linux AMI 2018.03.0 in Ansible Script在 Ansible 脚本中区分 Amazon Linux 2 和 Amazon Linux AMI 2018.03.0
【发布时间】:2020-05-18 17:41:53
【问题描述】:
在 ansible 脚本中,我想使用条件区分 Amazon Linux 2 和 Amazon Linux AMI 2018.03.0。就像我们使用 ansible_os_family 条件一样,ansible 中是否有任何条件函数可以用来区分这两者。
我的目标是根据操作系统的差异运行不同的命令(使用 ansible 脚本)(尤其是在 Amazon Linux 2 和 Amazon Linux 2018.03.0 之间)。
【问题讨论】:
-
嗨,ram n,欢迎来到 SO。您能否edit your post 包含每个分发版的/etc/os-release 文件中的内容,和/或运行/usr/bin/lsb_release 的输出?如果您发布您已经尝试过但对您不起作用的内容也会很有帮助
标签:
amazon-ec2
ansible
amazon-ami
ansible-facts
【解决方案1】:
对于 Amazon Linux 2 和 2018.03.0,ansible_distribution_major_version 事实分别设置为 "2" 和 "2018",因此您可以将其用于您的条件,如下所示:
when: ansible_distribution_major_version == "2018"
【解决方案2】:
您可以为此使用以下 ansible 事实,
{{ hostvars[inventory_hostname].ansible_distribution }}
对于根据条件运行不同的任务,这样做
- name: <Task name goes here>
import_tasks: yourtask.yml
when: hostvars[inventory_hostname].ansible_distribution | lower == 'amazon linux 2'