Ansible Documentation
stat – Retrieve file or file system status機能
ファイルやディレクトリのステータスを取得するパラメータ
パラメータ | 選択肢/ Default | 説明 |
---|---|---|
checksum_algorithm | ・ md5 ・ sha1 ・ sha224 ・ sha256 ・ sha384 ・ sha512 | ファイルのチェックサムを求めるためのアルゴリズムを指定する |
follow | ・ no ・ yes | no を指定するとファイルのシンボリックリンクをたどらない |
get_attributes | ・ no ・ yes | yes を指定するとファイルの属性を取得する |
get_checksum | ・ no ・ yes | yes を指定するとファイルのチェックサムを取得する |
get_mime | ・ no ・ yes | yes を指定するとファイル形式を取得する |
path ※必須※ | - | 対象となるファイルのパス |
例
■ ファイルの属性を取得するtasks: - name: file-a の属性を取得する stat: path: file-a register: result - name: 取得した属性を表示 debug: var: result実行結果
ansibleman@ubuntu-pc:~/ansible/stat$ ansible-playbook -i hosts.yml site.yml
PLAY [all] *********************************************************************************************************
TASK [file-a の属性を取得する] *********************************************************************************************
ok: [node_c0706]
TASK [取得した属性を表示] ***************************************************************************************************
ok: [node_c0706] => {
"result": {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"failed": false,
"stat": {
"atime": 1558736215.56875,
"attr_flags": "",
"attributes": [],
"block_size": 4096,
"blocks": 8,
"charset": "us-ascii",
"checksum": "03cfd743661f07975fa2f1220c5194cbaff48451",
"ctime": 1558444113.605609,
"dev": 64768,
"device_type": 0,
"executable": false,
"exists": true,
"gid": 0,
"gr_name": "root",
"inode": 33619800,
"isblk": false,
"ischr": false,
"isdir": false,
"isfifo": false,
"isgid": false,
"islnk": false,
"isreg": true,
"issock": false,
"isuid": false,
"mimetype": "text/plain",
"mode": "0644",
"mtime": 1558444113.605609,
"nlink": 1,
"path": "file-a",
"pw_name": "root",
"readable": true,
"rgrp": true,
"roth": true,
"rusr": true,
"size": 4,
"uid": 0,
"version": "18446744072520589415",
"wgrp": false,
"woth": false,
"writeable": true,
"wusr": true,
"xgrp": false,
"xoth": false,
"xusr": false
}
}
}
PLAY RECAP *********************************************************************************************************
node_c0706 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ansibleman@ubuntu-pc:~/ansible/stat$
■ 存在しないファイルの属性を取得する
- name: file-x の属性を取得する stat: path: file-x register: result - name: 取得した属性を表示 debug: var: result実行結果 : exists に false が設定されている
ansibleman@ubuntu-pc:~/ansible/stat$ ansible-playbook -i hosts.yml site.yml
PLAY [all] *********************************************************************************************************
TASK [file-x の属性を取得する] *********************************************************************************************
ok: [node_c0706]
TASK [取得した属性を表示] ***************************************************************************************************
ok: [node_c0706] => {
"result": {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"failed": false,
"stat": {
"exists": false
}
}
}
PLAY RECAP *********************************************************************************************************
node_c0706 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ansibleman@ubuntu-pc:~/ansible/stat$
■ ディレクトリの属性を取得する
- name: ディレクトリ dir-a の属性を取得する stat: path: dir-a register: result - name: 取得した属性を表示 debug: var: result実行結果 : isdir に true が、mimetype に inode/directory がセットされている
ansibleman@ubuntu-pc:~/ansible/stat$ ansible-playbook -i hosts.yml site.yml
PLAY [all] *********************************************************************************************************
TASK [ディレクトリ dir-a の属性を取得する] ***************************************************************************************
ok: [node_c0706]
TASK [取得した属性を表示] ***************************************************************************************************
ok: [node_c0706] => {
"result": {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"failed": false,
"stat": {
"atime": 1558739527.3779078,
"attr_flags": "",
"attributes": [],
"block_size": 4096,
"blocks": 0,
"charset": "binary",
"ctime": 1558739526.1529195,
"dev": 64768,
"device_type": 0,
"executable": true,
"exists": true,
"gid": 0,
"gr_name": "root",
"inode": 33619767,
"isblk": false,
"ischr": false,
"isdir": true,
"isfifo": false,
"isgid": false,
"islnk": false,
"isreg": false,
"issock": false,
"isuid": false,
"mimetype": "inode/directory",
"mode": "0755",
"mtime": 1558739526.1529195,
"nlink": 2,
"path": "dir-a",
"pw_name": "root",
"readable": true,
"rgrp": true,
"roth": true,
"rusr": true,
"size": 34,
"uid": 0,
"version": "18446744072879182361",
"wgrp": false,
"woth": false,
"writeable": true,
"wusr": true,
"xgrp": true,
"xoth": true,
"xusr": true
}
}
}
PLAY RECAP *********************************************************************************************************
node_c0706 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ansibleman@ubuntu-pc:~/ansible/stat$
■ ファイルの拡張子を変更 : png 形式のファイルの拡張子を txt に変更後に実行
- name: ファイル doc.txt のファイル形式を確認する stat: path: doc.txt register: result - name: 取得した属性を表示 debug: var: result.stat.mimetype実行結果 : ファイル自体で判断しているので mimetype が正しく image/png になっている
ansibleman@ubuntu-pc:~/ansible/stat$ ansible-playbook -i hosts.yml site.yml
PLAY [all] *********************************************************************************************************
TASK [ファイル doc.txt のファイル形式を確認する] ***********************************************************************************
ok: [node-c0706]
TASK [取得した属性を表示] ***************************************************************************************************
ok: [node-c0706] => {
"result.stat.mimetype": "image/png"
}
PLAY RECAP *********************************************************************************************************
node-c0706 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ansibleman@ubuntu-pc:~/ansible/stat$