如何降级 Ansible 使用的 Jinja 版本

109次阅读
没有评论

问题描述

在使用 Ansible 2.8.0(在 macOS 上通过 Homebrew 安装的)时,注意到 Ansible 使用的是 Jinja 2.10。他已经尝试通过 pip3 install jinja2==2.8 命令将 Jinja 版本降级到 2.8,通过 pip3 list 确认了版本变更,但 Ansible 仍然在使用 Jinja 2.10(通过 这些步骤 进行验证)。这似乎是因为 Ansible 使用了不同的 Python 的 site-packages 文件夹。用户想要降级 Jinja 版本是因为一个 bug,他希望测试一下在使用较旧的 Jinja 版本时的 Ansible 行为。他想知道如何在不降级 Ansible 自身的情况下降级 Ansible 使用的 Jinja 版本。

解决方案

请注意以下操作可能因版本差异而有所不同。如果涉及到重要操作,请务必提前备份。

使用 Pip 安装 Ansible

由于用户在 macOS 上使用 Homebrew 安装了 Ansible,可以通过使用 Pip 来实现降级 Jinja 版本的目标。以下是操作步骤:

  1. 首先,需要移除通过 Homebrew 安装的 Ansible:
    bash
    $ brew remove ansible

  2. 然后,使用 Pip 安装 Ansible 和所需的 Jinja 版本(这里是 2.8):
    bash
    $ pip3 install ansible
    $ pip3 install jinja2==2.8

  3. 确认 Ansible 和 Jinja2 版本已正确安装:
    bash
    $ pip3 list | grep -e ansible -e Jinja2

验证 Jinja 版本变更

你可以通过创建一个简单的 Ansible Playbook 来验证 Jinja 版本是否已经成功降级。以下是操作步骤:

  1. 创建一个名为 check_jinja.yaml 的文件,并添加以下内容:
    “`yaml

  • hosts: localhost
    tasks:

    • name: Check Jinja version
      command: python -c “import jinja2; print(jinja2.version)”
      register: jinja_version

    • name: Display Jinja version
      debug:
      var: jinja_version.stdout
      “`

  • 运行 Ansible Playbook,验证 Jinja 版本是否变为 2.8:
    bash
    $ ansible-playbook check_jinja.yaml -v

    如果一切正常,你应该能够在输出中看到 Jinja 版本为 2.8。

请注意,这个解决方案是基于用户提供的信息和回答中的最佳回答。在执行任何操作前,请务必备份你的系统以及重要的数据。

正文完