stat モジュール

2019/05/25

Ansible

 Ansible Documentation

stat – Retrieve file or file system status

 機能

ファイルやディレクトリのステータスを取得する

 パラメータ

パラメータ選択肢/
Default
説明
checksum_algorithm・ md5
sha1
・ sha224
・ sha256
・ sha384
・ sha512
ファイルのチェックサムを求めるためのアルゴリズムを指定する
followno
・ 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$ 

カテゴリー

目次

QooQ