2017-07-24 51 views
0

我有可以下載腳本文件的角色,如何在執行前使用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可以實現嗎?

回答

1

如果你不使用GET_URL選項,之後該文件中的位置,使用get_checksum選項爲documented here調用stat模塊。

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

+0

有什麼辦法在下載之前檢查文件的真實性嗎? – Swat

+0

@Swat:*您*需要確認您推送到您系統的文件是否是您想要的文件。一旦你知道該文件是好的,然後生成它的校驗和,以確保你只安裝該文件。請記住,如果文件不在您的控制範圍內,並且其他人以任何方式更改了您下載的文件,則校驗和將會更改,並且您的手冊會報告失敗。這是一件好事情*它迫使您和您的團隊通過更新劇本中的校驗和來重新驗證文件並批准文件。 –

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

+0

我試過,但收到的錯誤 - 命令:校驗和/opt/script.db.sh 寄存器:md5_value - 名稱:檢查md5checksome GET_URL: 網址:https://script.deb.sh dest:/opt/script.db.sh checksum:md5:{{md5_value}} force:true fatal:[localhost]:FAILED! => {「changed」:false,「failed」:true,「msg」:「校驗和參數的格式爲」} – Swat

+1

AFAIK您不能在get_url模塊中使用CRC校驗和。但是'md5sum'將起作用。您還需要在checksum參數中指定算法(即 - checksum:「md5:{{md5_value}}」') – kfreezy