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$