我正在编写一个 ansible 剧本来安装 Elastic 堆栈,并将该堆栈的每个组件分解为一个单独的角色。在剧本执行期间,我使用unarchive模块从供应商处获取二进制文件并将其解压。
类似于:
- name: Install | Get binary
unarchive:
src: "{{ elasticsearch_download_url }}"
dest: "{{ base_dir }}"
remote_src: yes
我遇到的问题是下载二进制文件时的幂等性。据我所知,剧本运行期间真正的幂等性将是一堆“ok”响应,并且没有“changed”响应。
在确保下载二进制文件的幂等性方面是否有最佳实践?我在想也许可以使用 when: 键检查现有安装,但我并不是 100% 相信这一点。
感谢您的帮助!
最佳答案
对于您的整体问题,有几种可能的解决方案(取决于例如能够管理升级、解耦下载和取消存档等的角色)。
在您的特定情况下,并且理所当然地认为您的 elasticsearch_download_url
不会更改,您可以使用 unarchive module 的 creates
选项轻松实现此目的。 :
- 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
关于elasticsearch - 确保使用 Ansible 下载二进制文件的幂等性的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55904040/