首页 > 解决方案 > 确保使用 Ansible 下载二进制文件的幂等性的最佳实践是什么?

问题描述

我正在编写一个 ansible 剧本来安装 Elastic 堆栈,堆栈的每个组件都分解为一个单独的角色。在 playbook 执行期间,我使用unarchive模块从供应商处获取二进制文件并将其解压缩。

就像是:

- name: Install | Get binary
  unarchive:
    src: "{{ elasticsearch_download_url }}"
    dest: "{{ base_dir }}"
    remote_src: yes


我遇到的问题是下载二进制文件时的幂等性。据我所知,在剧本运行期间真正的幂等性将是一堆“好的”响应,而没有“改变”的响应。

在确保下载二进制文件的幂等性方面是否有最佳实践?我在想也许可以使用when:键检查现有安装,但我不是 100% 的。

谢谢您的帮助!

标签: elasticsearchansible

解决方案


您的整体问题有几种可能的解决方案(取决于例如能够管理升级、解耦下载和取消归档等的角色)。

在您的特定情况下,并且理所当然地认为您elasticsearch_download_url不会更改,您可以使用unarchive 模块creates的选项轻松实现这一点:

- name: Install | Get binary
  unarchive:
    src: "{{ elasticsearch_download_url }}"
    dest: "{{ base_dir }}"
    remote_src: yes
    creates: "{{ base_dir }}/elasticsearch-x.y.z"

我的示例中的 dir 完全是为了这个场合而制作的,应该与创建的目录的确切名称匹配。

如果您对处理nexus 的版本检测和升级的稍微复杂一点的示例感兴趣,我碰巧维护了一个将所有这些实现为功能的角色:https ://github.com/ansible-ThoTeam/nexus3-oss/blob/主/任务/nexus_install.yml


推荐阅读