在ansible中检查文件的真实性

在ansible中检查文件的真实性,ansible,ansible-2.x,Ansible,Ansible 2.x,我有一个负责下载脚本文件的角色,如何在执行之前使用md5sum检查文件的真实性 - name: Add xx official repository for ubuntu/debain get_url: url: https://script.deb.sh dest: /opt/script.db.sh - name: Execute the script script: /opt/script.db.sh 我想在下载文件之前检查真实性-这可以在ansible

我有一个负责下载脚本文件的角色,如何在执行之前使用md5sum检查文件的真实性

- name: Add xx official repository for ubuntu/debain
  get_url:
     url:  https://script.deb.sh
     dest: /opt/script.db.sh

- name: Execute the script
  script: /opt/script.db.sh
  • 我想在下载文件之前检查真实性-这可以在ansible中实现吗

get\u url
有一个可以使用的校验和参数

- name: Add xx official repository for ubuntu/debain
  get_url:
    url:  https://script.deb.sh
    dest: /opt/script.db.sh
    checksum: md5:1234

如果您没有使用“获取url”选项,则在文件到达该位置后,使用“获取校验和”选项调用
stat
模块

更新
when:
行上的总和,以匹配所需的文件

生成校验和(本例中为sha256)随操作系统而异。在大多数Linux发行版上使用
sha256sum{filename}
命令,在OSX上使用
shasum-a 256{filename}
您可以使用“校验和”参数“获取url”模块。我向您展示了一个playbook的示例,该playbook仅在md5sum正确时才执行“角色”下载OpenJDK8

文件:
playbook.yml

---
- name: "Download binaries"
  hosts: localhost
  roles:
  - openjdk
- name: "Download OpenJDK {{ openjdk_version }} binaries"
  get_url:
    url: https://download.java.net/openjdk/jdk8u40/ri/{{ openjdk_file }}
    dest: "{{ download_destination }}"
    checksum: "{{ openjdk_md5 }}"
    mode: 0750
  tags:
    - always
---
download_destination: /var/tmp
openjdk_version: "8u40-b25"
openjdk_file: "openjdk-{{ openjdk_version }}-linux-x64-10_feb_2015.tar.gz"
openjdk_md5: "md5: 4980716637f353cfb27467d57f2faf9b"
文件:
openjdk/tasks/main.yml

---
- name: "Download binaries"
  hosts: localhost
  roles:
  - openjdk
- name: "Download OpenJDK {{ openjdk_version }} binaries"
  get_url:
    url: https://download.java.net/openjdk/jdk8u40/ri/{{ openjdk_file }}
    dest: "{{ download_destination }}"
    checksum: "{{ openjdk_md5 }}"
    mode: 0750
  tags:
    - always
---
download_destination: /var/tmp
openjdk_version: "8u40-b25"
openjdk_file: "openjdk-{{ openjdk_version }}-linux-x64-10_feb_2015.tar.gz"
openjdk_md5: "md5: 4980716637f353cfb27467d57f2faf9b"
文件:
openjdk/vars/main.yml

---
- name: "Download binaries"
  hosts: localhost
  roles:
  - openjdk
- name: "Download OpenJDK {{ openjdk_version }} binaries"
  get_url:
    url: https://download.java.net/openjdk/jdk8u40/ri/{{ openjdk_file }}
    dest: "{{ download_destination }}"
    checksum: "{{ openjdk_md5 }}"
    mode: 0750
  tags:
    - always
---
download_destination: /var/tmp
openjdk_version: "8u40-b25"
openjdk_file: "openjdk-{{ openjdk_version }}-linux-x64-10_feb_2015.tar.gz"
openjdk_md5: "md5: 4980716637f353cfb27467d57f2faf9b"
Ansible 2.7中可用的加密算法有:sha1SH224sha384sha256sha512md5


它对我有效,我也希望对你有效。

我尝试过这个,但得到一个错误-命令:cksum/opt/script.db.sh register:md5_value-name:检查md5checksome get_url:url:dest:/opt/script.db.sh校验和:md5:{md5_value}force:true fatal:[localhost]:失败!=>{“changed”:false,“failed”:true,“msg”:“校验和参数的格式必须为:”}AFAIK您不能在
get_url
模块中使用CRC校验和<但是,代码>md5sum将起作用。您还需要在
checksum
参数中指定算法(即-
checksum:{md5:{{md5_value}}}
)下载前是否有任何方法检查文件的真实性?@Swat:您需要确认要推送到系统的文件是您想要的文件。一旦知道该文件正常,则生成该文件的校验和,以确保只安装该文件。请记住,如果文件不在您的控制范围内,而其他人以任何方式更改了您正在下载的文件,则校验和将发生更改,您的playbook将报告失败。这是一件好事——它迫使您和您的团队重新验证文件,并通过更新剧本中的校验和来批准文件。