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$