elasticsearch - 确保使用 Ansible 下载二进制文件的幂等性的最佳实践是什么?
问题描述
我正在编写一个 ansible 剧本来安装 Elastic 堆栈,堆栈的每个组件都分解为一个单独的角色。在 playbook 执行期间,我使用unarchive模块从供应商处获取二进制文件并将其解压缩。
就像是:
- name: Install | Get binary
unarchive:
src: "{{ elasticsearch_download_url }}"
dest: "{{ base_dir }}"
remote_src: yes
我遇到的问题是下载二进制文件时的幂等性。据我所知,在剧本运行期间真正的幂等性将是一堆“好的”响应,而没有“改变”的响应。
在确保下载二进制文件的幂等性方面是否有最佳实践?我在想也许可以使用when:键检查现有安装,但我不是 100% 的。
谢谢您的帮助!
解决方案
您的整体问题有几种可能的解决方案(取决于例如能够管理升级、解耦下载和取消归档等的角色)。
在您的特定情况下,并且理所当然地认为您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
推荐阅读
- hive - 删除并覆盖配置单元中的外部表
- php - Laravel v5.7 属于安装 Laravel Passport v7 后不返回模型
- scala - Spark SQL - DataFrame - 如何读取不同格式的日期格式
- asp.net - 在 ASP.net 中单击文本框时如何调用自动完成 jquery 功能
- android - React Native 启动画面:不幸的是
在 SplashScreen.show() 之后停止 - c# - -Powershell中的脚本块错误不在catch块中
- javascript - 使用 Javascript 填写 iframe 中包含的表单
- for-loop - Vue2:在 v-for 循环内更改数据
- git - 将 git 存储库迁移到另一个
- python-3.x - 在python3中对列表进行排序并重新排列