Ansibleのget_urlのdestとsha256sum
get_urlモジュールのマニュアルの dest
の説明によると、 dest
にはファイル名かディレクトリ名を指定可能ですが、ディレクトリを指定するとファイルが毎回ダウンロードされるとのことです。
また sha256sum
という属性が用意されていて、これを指定しておけばダウンロード後にチェックサムを計算して整合性をチェックしてくれます。
ということで get_url
モジュールを使う際は dest
はファイル名にして sha256
を指定するのがお勧めです。
MySQLのクライアント用rpmをミラーサイトからダウンロードしてインストールする例
上記を踏まえて、 Ansibleのyumにwith_itemsを指定するときの落とし穴と回避策 - Qiita の例を改善すると以下のようになります。
cent65-mysql.yml
- hosts: cent65
user: vagrant
sudo: yes
vars:
mysql_download_base_url: http://ftp.iij.ad.jp/pub/db/mysql/Downloads/MySQL-5.6
mysql_download_dest_dir: /usr/local/src
mysql_common_rpms:
- filename: MySQL-shared-5.6.19-1.el6.x86_64.rpm
sha256sum: d1b1ccc81d11cb25fbf4e885080e572aea51e503a033047849e1490730cc8a81
- filename: MySQL-shared-compat-5.6.19-1.el6.x86_64.rpm
sha256sum: 2356f10f3255303118578a3ab163340b468a6de7520625c3687018a5ce7c57a8
- filename: MySQL-client-5.6.19-1.el6.x86_64.rpm
sha256sum: c851d9257ef65422256f85195af407ea6a69cc84cc0a1c164fb8c1cbe975a5f0
- filename: MySQL-devel-5.6.19-1.el6.x86_64.rpm
sha256sum: f0027bccdf0fe676f9c445bc9ca5b793e04b299fc643c04cf95281e6a6341025
tasks:
- file: path={{ mysql_download_dest_dir }} state=directory
- get_url: >
url={{ mysql_download_base_url }}/{{ item.filename }}
dest={{ mysql_download_dest_dir }}/{{ item.filename }}
sha256sum={{ item.sha256sum }}
with_items: mysql_common_rpms
- yum: name="{{ mysql_download_dest_dir }}/{{ item.filename }}" state=present
with_items: mysql_common_rpms