elasticsearch - 确保使用 Ansible 下载二进制文件的幂等性的最佳实践是什么?

标签 elasticsearch ansible

我正在编写一个 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 modulecreates 选项轻松实现此目的。 :

- 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/

相关文章:

elasticsearch - 使用 Elastic Search 中的完成建议查询检查是否为空

json - 使用filebeat记录-将JSON提取到JS文件

Ansible 添加 GPG key 服务器

Ansible 从命令行获取用户名

mongodb - Cassandra、HBase、MongoDB 或 Elastic Search 的写入性能如何

hadoop - Elasticsearch 和 Hadoop?

Elasticsearch 服务器因 java.io.IOException 中断而停止

ansible - blockinfile 模块内的 jinja 变量替换

ansible - 获取 list 主机名列表

python - 我如何使用ansible在ubuntu上安装python 2.7.3