从剧本内部检查Ansible版本

问题描述 投票:8回答:2

我有一个在Ansible 1.9.x和2.0中以不同方式运行的剧本。我想检查当前在我的剧本中运行的ansible版本,以避免有人用旧版本运行它。

我不认为这是最好的解决方案:

- local_action: command ansible --version
  register: version

你会建议什么?

ansible ansible-playbook
2个回答
3
投票

Ansible提供了一个名为ansible_version的全局字典,dict包含以下内容

"ansible_version": {
        "full": "2.7.4", 
        "major": 2, 
        "minor": 7, 
        "revision": 4, 
        "string": "2.7.4"
    }

您可以使用以下任何一个ansible_version.full,ansible_version.major或任何其他组合来创建条件语句来检查已安装的ansible的版本。

示例playbook:使用此dict和when语句。

---
- hosts: localhost
  tasks:

    - name: Print message if ansible version is greater than 2.7.0
      debug:
        msg: "Ansible version is  {{ ansible_version.full }}"
      when: ansible_version.full >= "2.7.4"

11
投票

你可以使用assert module

- assert:
    that: ansible_version.major < 2
© www.soinside.com 2019 - 2024. All rights reserved.