加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何创建Ansible playbook以获取远程主机的操作系统版

发布时间:2020-12-14 01:12:48 所属栏目:Linux 来源:网络整理
导读:我是ansible的新手.我有一个要求,要求我为AWS中托管的450多个 Linux服务器提取操作系统版本. AWS不提供此功能 – 它建议我们从木偶或厨师那里获取它. 我创建了几个没有运行的简单剧本 ---- hosts: testmachineuser: ec2-usersudo: yestasks:- name: Update a
我是ansible的新手.我有一个要求,要求我为AWS中托管的450多个 Linux服务器提取操作系统版本. AWS不提供此功能 – 它建议我们从木偶或厨师那里获取它.

我创建了几个没有运行的简单剧本

---
- hosts: testmachine
user: ec2-user
sudo: yes
tasks:
- name: Update all packages to latest
yum: name=* state=latest

task:
- name: obtain OS version
shell: Redhat-release

playbook应该输出一个带有主机名和操作系统版本的文本文件.任何有关这方面的见解将受到高度赞赏.

解决方法

使用以下Jinja2表达式之一:

{{ hostvars[inventory_hostname].ansible_distribution }}
{{ hostvars[inventory_hostname].ansible_distribution_major_version }}
{{ hostvars[inventory_hostname].ansible_distribution_version }}

哪里:

> hostvars和ansible _…由Ansible内置并自动收集
> ansible_distribution是Ansible正在处理的主机

例如,假设您针对运行CentOS 7发行版的主机host.example.com运行Ansible角色test_role:

---
- debug:
    msg: "{{ hostvars[inventory_hostname].ansible_distribution }}"
- debug:
    msg: "{{ hostvars[inventory_hostname].ansible_distribution_major_version }}"
- debug:
    msg: "{{ hostvars[inventory_hostname].ansible_distribution_version }}"

会给你:

TASK [test_role : debug] *******************************************************
ok: [host.example.com] => {
    "msg": "CentOS"
}

TASK [test_role : debug] *******************************************************
ok: [host.example.com] => {
    "msg": "7"
}

TASK [test_role : debug] *******************************************************
ok: [host.example.com] => {
    "msg": "7.5.1804"
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读