25
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ansibleでファイルダウンロードを行なうPlaybook (修正)

Last updated at Posted at 2013-07-29

構成管理システムが徐々に当たり前になってきている昨今、日本ではChefが盛り上がっているようですね。おそらくこのままスタンダードになると思います。

ただ、個人的にChefに対して以下をクリアできていないんですよね。

  • 管理対象マシンに対してChef環境構築が必要なこと
  • 上記のための作業の自動化がChefと別管理となりそうなこと
  • Chef/Rubyの環境構築自体への心理的ハードル

なので、全然違うシステムを勉強しようかなぁ、と。

というわけで、見つけたのがPythonベースのAnsibleというもので、こちらを少しずつ勉強しています。

で、使い始めの部分はそれなりに情報があるのですが、応用的な書き方の情報となるとなかなか見つけづらいので、未来の自分のために少しずつ書き溜めてみようかと。

今回は、特定のファイルが特定の場所に存在していなかったら、ダウンロードしてくる、というもの。

今回の例では、WordPress日本語版をダウンロードしています。

    - name: WordPress Check
      action: command [ -e wordpress-3.5.2-ja.zip ]
      register: result
      ignore_errors: True
    - name: WordPress Download
      action: command wget -q "http://ja.wordpress.org/wordpress-3.5.2-ja.zip"
      when: result|failed

Check部分で、"wordpress-3.5.2-ja.zip"ファイルがカレントディレクトリに存在しているかチェックしています。
ファイルが存在していない場合エラーが発生するので、それを無視して次を実行できるように"ignore_errors: True"を指定します。

Download部分の"when: result|failed"は、Check部分でエラーが発生した場合にのみ実行されるようにするものです。
"action:"で"command"を指定すれば、コマンドラインでできる大概の事はできてしまうはずです。

とりあえずは、こんな感じで。

以下は @r_rudi さんより頂いた情報により、追記です。

http://www.ansibleworks.com/docs/modules.html#get-url
こちらの情報から、commandで頑張らなくてもファイル取得が可能であることが判明しました。
書き直すと、以下のような感じです。

    - name: WordPress Download
      get_url: url="http://ja.wordpress.org/wordpress-3.5.2-ja.zip" dest=/tmp

ここでは"dest"でダウンロード先を"/tmp"としています。
上記だけで、ファイルダウンロード(ファイルが存在していれば何もしない)の操作が可能です。

25
23
2

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
25
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?