确保使用Ansible下载二进制文件的幂等性的最佳做法是什么?

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

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

就像是:

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

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

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

谢谢您的帮助!

elasticsearch ansible
2个回答
2
投票

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

在你的特殊情况下并且理所当然地认为你的elasticsearch_download_url没有改变,你可以使用createsunarchive module选项轻松实现这一点:

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

我的示例中的目录完全弥补了这个场合,并且应该与创建的目录的确切名称相匹配。

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


0
投票

使用带有参数“checksum”的get_url

从文档:

- name: Download file with check (sha256)
  get_url:
    url: http://example.com/path/file.conf
    dest: /etc/foo.conf
    checksum: sha256:b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c
© www.soinside.com 2019 - 2024. All rights reserved.