LoginSignup
123
126

More than 5 years have passed since last update.

ansible のモジュール(ファイル操作等)をまとめてみました

Last updated at Posted at 2016-02-17

とりあえず、よく使うものから。随時更新していきます。

シェル実行系

shell

ファイルやフォルダが既に有るならスキップされる
- shell: シェル
  args:
    chdir: 実行ディレクトリ(省略可)
    creates: ファイルやフォルダ
ファイルやフォルダが既に無いならスキップされる
- shell: シェル
  args:
    chdir: 実行ディレクトリ(省略可)
    removes: ファイルやフォルダ
情報を取得したいだけのシェル実行
- shell: ls 取得したいパス
  register: register
  changed_when: false  # 常に未変更にする
  failed_when: false  # 結果コードに関係なく成功にする(ファイルがなかったり権限エラーだと2が返るので)
- file: path="{{ item }}"
        state=absent
  with_items: register.stdout_lines

ファイル/フォルダ系

file

ディレクトリ作成(サブディレクトリも一気に作れる)
- file: path=作成したいパス
        state=directory
        owner=foo
        group=foo
        mode=0644
ファイル/ディレクトリ削除(下位も一気に消せる)
- file: path=作成したいパス
        state=absent
ファイル属性変更
- file: path=作成したいパス
        owner=foo
        group=foo
        mode=0644
# 新規作成はできない。したいなら template や copy を使う
8日以上更新の無いバックアップファイルを削除
- shell: find /var/backups/log.???????? -maxdepth 0 -ctime +8
  sudo: yes
  register: register
  changed_when: false
  failed_when: register.rc not in [0,1]

- file: path="{{ item }}"
        state=absent
  with_items: register.stdout_lines

copy

ローカルのファイルをリモートに
- copy: src=ローカル側のコピー元ファイルのパス
        dest=リモート側のファイルパス(srcがディレクトリならこれもディレクトリ)
        backup=yes  # タイムスタンプつきのbackupつくる(省略可)
        directory_mode=yes  # 新規だけでなく既存についてもmodeを再現する(省略可)

template

テンプレートのファイルを置く
- template: src="ローカル側のテンプレートのファイルパス"
            dest="リモート側の配置先"

synchronize

rsyncする
- synchronize: src="rsync元のローカルディレクトリ"
               dest="rsync先のリモートディレクトリ"  # この中にローカルディレクトリで指定したディレクトリが作成される
  • src="/tmp/aaa" dest="/tmp/aaa" の場合はリモート側に /tmp/aaa/aaa が出来てしまう。dest="/tmp" とするのが正しい。
  • 環境によっては sudo 状態だと鍵が使えずエラーになるので、その場合は sudo: no をつける。
sudoをnoにする例
- synchronize: src="パス"
               dest="パス"
  sudo: no

find (v2.0以降)

パターンで検索
- find: paths=検索対象のパス
        patterns="'*.txt','*.js'"
正規表現で検索
- find: paths=検索対象のパス
        patterns="\.(?:txt|js)$"
        use_regex=Treu
日時で検索
- find: paths=検索対象のパス
        age="1w"  # "1d":1日以上、"-1w":1週間以内
戻り値
- find: paths=検索対象のパス
        patterns="'*.txt','*.js'"
  register: found_files

git / composer

git

cloneもしくはpull
- git: repo="リポジトリ名"
       version="ブランチ名やタグ名など"
       dest="clone先のパス"  # リポジトリ名含む
       accept_hostkey=True
       key_file="秘密鍵のパス"  

composer

composer
- composer: command=install
            working_dir="composer.jsonがあるディレクトリのパス"
            no_dev="no"  # (省略可) no を指定すると require-dev となる。

入力待ち

ansible で prompt (入力待ち) の実現とその周辺テクニックのまとめ に書きましたのでそちらを参照してください。

123
126
0

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
123
126