为什么 Ansible get_url 给出校验和错误?

Why Ansible get_url gives error about checksums?

我的 ansible 剧本中有一个任务,即从 github url 下载 java 存档。 任务在这里:

- name: Download Jar Plugin
  get_url:
    url: https://GitHub-URL/plugins-1.0.5.jar
    dest: /app/plugins/

没有提到校验和,但它给出了这个错误:

fatal: [host]: FAILED! => {"changed": false, "msg": "attempted to take checksum of directory: /app/plugins/plugins-1.0.5.jar"}

有人对此有任何想法吗?是否有任何解决方法可以让它下载此 java 存档?

首先,GitHub 不是保存二进制文件的正确位置。在大多数情况下,Github 不允许我们存储大于 100 MB 的单个文件。您应该将二进制文件保存在物理服务器或任何云存储中,然后从那里提取。

现在,如果您真的倾向于遵循这种不良做法,我建议您首先创建一个等效的 unix curl 来做到这一点。如果您有现有的 curl 命令来执行此操作,请与我们分享或简单地使用 ansible shell 模块作为起点。您也可以尝试增加超时,因为默认值仅为 10 秒。这是超时设置为 200 秒的片段。

- name: Download Jar Plugin
  get_url:
    url: https://GitHub-URL/plugins-1.0.5.jar
    dest: /app/plugins/
    timeout: 200

尝试如下添加校验和参数:

- name: Download Jar Plugin
  get_url:
   url: https://GitHub-URL/plugins-1.0.5.jar
   dest: /app/plugins/
   timeout: 200
   checksum: <yourchecksum>

希望这对您的错误有所帮助。