我有下载脚本文件的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
答案 0 :(得分:4)
如果您未使用get_url选项,则在文件位于该位置后,使用stat
选项documented here调用get_checksum
模块。
- name: Get sha256 sum of script
stat:
path: /opt/script.db.sh
checksum_algorithm: sha256
get_checksum: yes
register: shell_stat
- name: Verify sha256sum of script before execution.
fail:
msg: "Failure, file is not correct."
when: script_stat.stat.checksum != '19d6105fa1a581cf3ad38f67080b6d55cb152b5441ae8bdf194e593f292f31e9'
- name: Execute the script
script: /opt/script.db.sh
更新when:
行的总和以匹配您期望的文件。
生成校验和(本例中为sha256)因操作系统而异。在大多数Linux发行版上使用sha256sum {filename}
命令,在OSX上使用shasum -a 256 {filename}
。
答案 1 :(得分:1)
get_url
有一个可以使用的校验和参数。
- name: Add xx official repository for ubuntu/debain
get_url:
url: https://script.deb.sh
dest: /opt/script.db.sh
checksum: md5:1234
答案 2 :(得分:1)
您可以使用“ 校验和”参数“ get_url ”模块。我向您展示了一个剧本示例,该剧本仅在 md5sum 正确的情况下,才执行“角色”以下载OpenJDK8。
文件:playbook.yml
---
- name: "Download binaries"
hosts: localhost
roles:
- openjdk
文件:openjdk/tasks/main.yml
- 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
文件:openjdk/vars/main.yml
---
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中可用的加密算法为: sha1 , sha224 , sha384 , sha256 , sha512 , md5 。
它对我有用,我也希望对你有用。