gpt4 book ai didi

linux - 如何创建 Ansible 剧本来获取远程主机的操作系统版本?

转载 作者:IT王子 更新时间:2023-10-29 00:18:21 27 4
gpt4 key购买 nike

我是ansible的新手。我有一个要求,要求我为 AWS 中托管的 450 多个 Linux 服务器提取操作系统版本。 AWS 不提供此功能——它建议我们从 puppet 或 chef 那里获取它。

我创建了一些无法运行的简单剧本

---
- 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

剧本应该输出一个包含主机名和操作系统版本的文本文件。对此的任何见解将不胜感激。

最佳答案

使用以下 Jinja2 表达式之一:

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

哪里:

  • hostvarsansible_... 是内置的,由 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"
}

关于linux - 如何创建 Ansible 剧本来获取远程主机的操作系统版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38078247/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com