AnsibleでExcelファイルからパラメータを抽出する
はじめに
AnsibleにはCSVファイルのパラメータをリスト/辞書データとして抽出できるread_csvモジュールが存在します。
一方、Excelファイルから抽出できるモジュールは公式には無いのですが、GitHubにmamullen13316さんが公開しているxls_to_facts
モジュールがあったので試してみました。
GitHub - mamullen13316/ansible_xls_to_facts
使い方
- openpyxlをインストール
$ sudo pip install openpyxl
-
こちらを参考に、GitHubからのデータ取得、モジュールの格納、パスの追加を実施
Playbook
- タスク(1)
xls_to_facts
モジュールのsrc
アーギュメントで、Excelファイルの格納先を指定。
今回は、GitHub上のサンプルを使わせて頂きました。
- タスク(2)
全データを表示。
- タスク(3)
json_query
フィルターを使い、ホスト名Switch-1
の管理IPアドレスを表示。
playbook_xls_to_facts1.yml
---
- hosts: localhost
gather_facts: no
connection: local
tasks:
- name: read excel spreadsheet and return facts # (1)
xls_to_facts:
src: example.xlsx
register: result
- name: display all facts # (2)
debug:
msg: "{{ result }}"
- name: display the ip address of specific hostname # (3)
debug:
msg: "{{ result | json_query('ansible_facts.spreadsheet_Sheet1[?Hostname==`Switch-1`].Mgmt_ip') }}"
実行結果
$ sudo pip install openpyxl
- タスク(1)
xls_to_facts
モジュールのsrc
アーギュメントで、Excelファイルの格納先を指定。
今回は、GitHub上のサンプルを使わせて頂きました。 - タスク(2)
全データを表示。 - タスク(3)
json_query
フィルターを使い、ホスト名Switch-1
の管理IPアドレスを表示。
playbook_xls_to_facts1.yml
---
- hosts: localhost
gather_facts: no
connection: local
tasks:
- name: read excel spreadsheet and return facts # (1)
xls_to_facts:
src: example.xlsx
register: result
- name: display all facts # (2)
debug:
msg: "{{ result }}"
- name: display the ip address of specific hostname # (3)
debug:
msg: "{{ result | json_query('ansible_facts.spreadsheet_Sheet1[?Hostname==`Switch-1`].Mgmt_ip') }}"
実行結果
タスク(2)を見ると、Excelの各シートのパラメータがspreadsheet_{シート名}
の値として出力されています。
またタスク(3)で想定通りSwitch-1
の管理IPアドレスが表示されました。
$ ansible-playbook playbook_xls_to_facts1.yml
[WARNING]: provided hosts list is empty, only localhost is available. Note that the
implicit localhost does not match 'all'
PLAY [localhost] ***************************************************************************
TASK [read excel spreadsheet and return a list] ********************************************
ok: [localhost]
TASK [display all facts] *******************************************************************
ok: [localhost] => {
"msg": {
"ansible_facts": {
"spreadsheet_Sheet1": [
{
"Hostname": "Switch-1",
"Mgmt_ip": "10.0.0.1"
},
{
"Hostname": "Switch-2",
"Mgmt_ip": "10.0.0.2"
},
{
"Hostname": "Switch-3",
"Mgmt_ip": "10.0.0.3"
}
],
"spreadsheet_Sheet2": [
{
"Description": "To Spine-1",
"Interface": "Ethernet1/1",
"Interface_IP": "192.168.100.1/30"
},
{
"Description": "To Spine-2",
"Interface": "Ethernet1/2",
"Interface_IP": "192.168.100.5/30"
}
]
},
"changed": false,
"failed": false
}
}
TASK [display the ip address of specific hostname] *****************************************
ok: [localhost] => {
"msg": [
"10.0.0.1"
]
}
PLAY RECAP *********************************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Author And Source
この問題について(AnsibleでExcelファイルからパラメータを抽出する), 我々は、より多くの情報をここで見つけました https://qiita.com/kitara/items/659efb63d6889e54c1cd著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .