とりあえず、よく使うものから。随時更新していきます。
シェル実行系
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 (入力待ち) の実現とその周辺テクニックのまとめ に書きましたのでそちらを参照してください。