read_csv モジュール

2019/05/25

Ansible

 Ansible Documentation

read_csv – Read a CSV file

 機能

 CSV ファイルを読み込み、リストやディクショナリを作成する

 パラメータ

パラメータ選択肢/
Default
説明
delimiter-項目(フィールド)の区切り文字。デフォルトは dialect: に指定した形式の仕様に従う。このパラメータの指定はデフォルトよりも優先する
dialect"excel"
"excel-tab"
"unix"
CSV ファイルの形式
fieldnames-各列のフィールド名。 CSV ファイルの 1 行目からデータの場合、このパラメータでフィールド名を指定する
key-ディクショナリのキーとして使用するフィールド名。このパラメータを指定した場合はディクショナリを、指定しない場合はリストを作成する
path
※必須※
-CSV ファイル名
skipinitialspace・ no
・ yes
区切り文字の直後の空白を無視するかどうかを指定する。デフォルトは dialect: に指定した形式の仕様に従う。このパラメータの指定はデフォルトよりも優先する
strict・ no
・ yes
CSV ファイルが不正なとき例外を発生させるかどうかを指定する。デフォルトは dialect: に指定した形式の仕様に従う。このパラメータの指定はデフォルトよりも優先する
unique・ no
yes
key: で指定されたフィールドの値が、CSV ファイル内でユニーク(重複がない)かどうかを指定する

 例

■CSV ファイルの内容
name,uid,gid
dag,500,500
jeroen,501,500
■ リストとして読み込み
    - name: csv ファイルをリストとして読み込む
      read_csv:
        path: users.csv
      register: users
      delegate_to: localhost
    - name: 読み込んだ内容を表示
      debug:
        var: users
    - name: 読み込んだ内容を 1 行ずつ表示
      debug:
        msg: "uid {{ item.uid }}   gid {{ item.gid }}   name {{ item.name }}"
      loop:
        "{{ users.list }}"
実行結果
ansibleman@ubuntu-pc:~/ansible/read_csv$ ansible-playbook -i hosts.yml site.yml

PLAY [all] *********************************************************************************************************

TASK [csv ファイルをリストとして読み込む] *****************************************************************************************
ok: [node_c0706]

TASK [読み込んだ内容を表示] **************************************************************************************************
ok: [node_c0706] => {
    "users": {
        "changed": false,
        "dict": {},
        "failed": false,
        "list": [
            {
                "gid": "500",
                "name": "dag",
                "uid": "500"
            },
            {
                "gid": "500",
                "name": "jeroen",
                "uid": "501"
            }
        ]
    }
}

TASK [読み込んだ内容を 1 行ずつ表示] ********************************************************************************************
ok: [node_c0706] => (item={'name': 'dag', 'uid': '500', 'gid': '500'}) => {
    "msg": "uid 500   gid 500   name dag"
}
ok: [node_c0706] => (item={'name': 'jeroen', 'uid': '501', 'gid': '500'}) => {
    "msg": "uid 501   gid 500   name jeroen"
}

PLAY RECAP *********************************************************************************************************
node_c0706                 : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

ansibleman@ubuntu-pc:~/ansible/read_csv$ 
■ ディクショナリとして読み込み
    - name: csv ファイルをディクショナリとして読み込む
      read_csv:
        path: users.csv
        key: name
      register: users
      delegate_to: localhost
    - name: 読み込んだ内容を表示
      debug:
        var: users
    - name: name が dag のデータを表示
      debug:
        msg: "uid {{ users.dict.dag.uid }}   gid {{ users.dict.dag.gid }}   name {{ users.dict.dag.name }}"
実行結果
ansibleman@ubuntu-pc:~/ansible/read_csv$ ansible-playbook -i hosts.yml site.yml

PLAY [all] *********************************************************************************************************

TASK [csv ファイルをディクショナリとして読み込む] *************************************************************************************
ok: [node_c0706]

TASK [読み込んだ内容を表示] **************************************************************************************************
ok: [node_c0706] => {
    "users": {
        "changed": false,
        "dict": {
            "dag": {
                "gid": "500",
                "name": "dag",
                "uid": "500"
            },
            "jeroen": {
                "gid": "500",
                "name": "jeroen",
                "uid": "501"
            }
        },
        "failed": false,
        "list": []
    }
}

TASK [name が dag のデータを表示] ******************************************************************************************
ok: [node_c0706] => {
    "msg": "uid 500   gid 500   name dag"
}

PLAY RECAP *********************************************************************************************************
node_c0706                 : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

ansibleman@ubuntu-pc:~/ansible/read_csv$

■ CSV ファイルの内容
dag;500;500
jeroen;501;500
■ リストとして読み込み
    - name: csv ファイルをリストとして読み込む
      read_csv:
        path: users.csv
        fieldnames: name,uid,gid
        delimiter: ';'
      register: users
      delegate_to: localhost
    - name: 読み込んだ内容を表示
      debug:
        var: users
実行結果
ansibleman@ubuntu-pc:~/ansible/read_csv$ ansible-playbook -i hosts.yml site.yml

PLAY [all] *********************************************************************************************************

TASK [csv ファイルをリストとして読み込む] *****************************************************************************************
ok: [node_c0706]

TASK [読み込んだ内容を表示] **************************************************************************************************
ok: [node_c0706] => {
    "users": {
        "changed": false,
        "dict": {},
        "failed": false,
        "list": [
            {
                "gid": "500",
                "name": "dag",
                "uid": "500"
            },
            {
                "gid": "500",
                "name": "jeroen",
                "uid": "501"
            }
        ]
    }
}

PLAY RECAP *********************************************************************************************************
node_c0706                 : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

ansibleman@ubuntu-pc:~/ansible/read_csv$ 

カテゴリー

目次

QooQ