LoginSignup
20
18

More than 5 years have passed since last update.

Ansibleのget_urlはdestをファイル名にしてsha256sumを指定するのがお勧め

Last updated at Posted at 2014-07-12

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
20
18
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
18