检查ansible文件的真实性

时间:2017-07-24 18:08:08

标签: ansible ansible-2.x

我有下载脚本文件的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中实现吗?

3 个答案:

答案 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

http://docs.ansible.com/ansible/latest/get_url_module.html

答案 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

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