使用ansible收集接口的IP地址信息,并将其写入数据库

- name: HP Comware command
  hosts: DEV-Test
  gather_facts: no
  connection: local


  tasks:
    #收集接口的IP地址信息
    - name: display ip int brief  passing in a list
      comware_command:
        command:
          - display ip int brief
        type: display
        username: "{{ username }}"
        password: "{{ password }}"
        hostname: "{{ inventory_hostname }}"
      register: int_ip_info
    
    #将返回的信息放到一个列表中,该列表的名字为new_vars
    - name: set new vars
      set_fact:
        new_vars: "{{ int_ip_info.response }}"
    
    #通过正则,匹配出该列表中我们需要的信息,并放入一个新的列表relevant_lines
    - name: Build New Data(We Need)
      set_fact:
        relevant_lines: "{{ new_vars |select('match', '^(XGE|FGE)\\d+/\\d+.*$') | list }}"
    
    #查看一下咱们需要的信息是不是正确的
    - name: test
      debug:
        var: relevant_lines     
    
    #将新列表中的每个数据再次进行切割,并形成一个新的列表嵌套new_list
    - name: Build final Data
      set_fact:
        new_list: "{{ new_list | default([]) + [item.split()] }}"
      loop: "{{ relevant_lines }}"
  
    #将该嵌套列表的数据转换成可以插入到数据库中的数据格式  
    - name: Convert data to SQL insert format
      set_fact:
        insert_data: "{{ insert_data|default([]) + [ { 'dev_name':  inventory_hostname , 'port': item[0], 'phy_state': item[1], 'pro_state': item[2], 'ip_addr': item[3], 'vpn': item[4] } ] }}"
      loop: "{{ new_list }}"

    #将生成的数据插入到数据库
    - name: Insert DB
      community.mysql.mysql_query:
        login_host: localhost 
        login_user: root
        login_password: zgyCloud2019!
        login_db: ansible
        query: "INSERT INTO ip_info (dev_name, port, phy_state, pro_state, ip_addr, vpn) VALUES ('{{ item.dev_name }}', '{{ item.port }}', '{{ item.phy_state }}', '{{ item.pro_state }}', '{{ item.ip_addr }}', '{{ item.vpn }}')"
      loop: "{{ insert_data }}" 
 
```yaml
PLAY [HP Comware command] *****************************************************************************************

TASK [display ip int brief  passing in a list] ********************************************************************
[WARNING]: Module did not set no_log for password
changed: [DEV-Test]

TASK [set new vars] ***********************************************************************************************
ok: [DEV-Test]

TASK [Build New Data(We Need)] ************************************************************************************
ok: [DEV-Test]

TASK [test] *******************************************************************************************************
ok: [DEV-Test] => {
    "relevant_lines": [
        "FGE1/0/51           up       up       10.136.91.102   --           [N0:HZ1-AY...\r",
        "FGE1/0/52           up       up       10.136.91.166   --           [N0:HZ1-AY...\r",
        "FGE2/0/51           up       up       10.136.91.106   --           [N0:HZ1-AY...\r",
        "FGE2/0/52           up       up       10.136.91.170   --           [N0:HZ1-AY...\r",
        "XGE1/0/1            up       up       --              --           [N0:HZ1-AY...\r",
        "XGE1/0/2            up       up       --              --           [N0:HZ1-AY...\r",
        "XGE1/0/3            up       up       --              --           [N0:HZ1-AY...\r",
        "XGE1/0/4            up       down     --              --           [N0:HZ1-AY...\r",
        "XGE1/0/5            up       up       --              --           [N0:HZ1-AY...\r",
        "XGE1/0/6            up       up       --              --           [N0:HZ1-AY...\r",
        "XGE1/0/7            up       up       --              --           [N0:HZ1-AY...\r",
        "XGE1/0/8            up       up       --              --           [N0:HZ1-AY...\r",
        "XGE1/0/47           up       up       --              --           [N0:HZ1-AY...\r",
        "XGE2/0/1            up       up       --              --           [N0:HZ1-AY...\r",
        "XGE2/0/2            up       up       --              --           [N0:HZ1-AY...\r",
        "XGE2/0/3            up       up       --              --           [N0:HZ1-AY...\r",
        "XGE2/0/4            up       up       --              --           [N0:HZ1-AY...\r",
        "XGE2/0/5            up       up       --              --           [N0:HZ1-AY...\r",
        "XGE2/0/6            up       up       --              --           [N0:HZ1-AY...\r",
        "XGE2/0/7            up       up       --              --           [N0:HZ1-AY...\r",
        "XGE2/0/8            up       up       --              --           [N0:HZ1-AY...\r",
        "XGE2/0/47           up       up       --              --           [N0:HZ1-AY...\r"
    ]
}

TASK [Build final Data] *******************************************************************************************
ok: [DEV-Test] => (item=FGE1/0/51           up       up       10.136.91.102   --         ) [N0:HZ1-AY...
ok: [DEV-Test] => (item=FGE1/0/52           up       up       10.136.91.166   --         ) [N0:HZ1-AY...
ok: [DEV-Test] => (item=FGE2/0/51           up       up       10.136.91.106   --         ) [N0:HZ1-AY...
ok: [DEV-Test] => (item=FGE2/0/52           up       up       10.136.91.170   --         ) [N0:HZ1-AY...
ok: [DEV-Test] => (item=XGE1/0/1            up       up       --              --         ) [N0:HZ1-AY...
ok: [DEV-Test] => (item=XGE1/0/2            up       up       --              --         ) [N0:HZ1-AY...
ok: [DEV-Test] => (item=XGE1/0/3            up       up       --              --         ) [N0:HZ1-AY...
ok: [DEV-Test] => (item=XGE1/0/4            up       down     --              --         ) [N0:HZ1-AY...
ok: [DEV-Test] => (item=XGE1/0/5            up       up       --              --         ) [N0:HZ1-AY...
ok: [DEV-Test] => (item=XGE1/0/6            up       up       --              --         ) [N0:HZ1-AY...
ok: [DEV-Test] => (item=XGE1/0/7            up       up       --              --         ) [N0:HZ1-AY...
ok: [DEV-Test] => (item=XGE1/0/8            up       up       --              --         ) [N0:HZ1-AY...
ok: [DEV-Test] => (item=XGE1/0/47           up       up       --              --         ) [N0:HZ1-AY...
ok: [DEV-Test] => (item=XGE2/0/1            up       up       --              --         ) [N0:HZ1-AY...
ok: [DEV-Test] => (item=XGE2/0/2            up       up       --              --         ) [N0:HZ1-AY...
ok: [DEV-Test] => (item=XGE2/0/3            up       up       --              --         ) [N0:HZ1-AY...
ok: [DEV-Test] => (item=XGE2/0/4            up       up       --              --         ) [N0:HZ1-AY...
ok: [DEV-Test] => (item=XGE2/0/5            up       up       --              --         ) [N0:HZ1-AY...
ok: [DEV-Test] => (item=XGE2/0/6            up       up       --              --         ) [N0:HZ1-AY...
ok: [DEV-Test] => (item=XGE2/0/7            up       up       --              --         ) [N0:HZ1-AY...
ok: [DEV-Test] => (item=XGE2/0/8            up       up       --              --         ) [N0:HZ1-AY...
ok: [DEV-Test] => (item=XGE2/0/47           up       up       --              --         ) [N0:HZ1-AY...

TASK [Convert data to SQL insert format] **************************************************************************
ok: [DEV-Test] => (item=['FGE1/0/51', 'up', 'up', '10.136.91.102', '--', '[N0:HZ1-AY...'])
ok: [DEV-Test] => (item=['FGE1/0/52', 'up', 'up', '10.136.91.166', '--', '[N0:HZ1-AY...'])
ok: [DEV-Test] => (item=['FGE2/0/51', 'up', 'up', '10.136.91.106', '--', '[N0:HZ1-AY...'])
ok: [DEV-Test] => (item=['FGE2/0/52', 'up', 'up', '10.136.91.170', '--', '[N0:HZ1-AY...'])
ok: [DEV-Test] => (item=['XGE1/0/1', 'up', 'up', '--', '--', '[N0:HZ1-AY...'])
ok: [DEV-Test] => (item=['XGE1/0/2', 'up', 'up', '--', '--', '[N0:HZ1-AY...'])
ok: [DEV-Test] => (item=['XGE1/0/3', 'up', 'up', '--', '--', '[N0:HZ1-AY...'])
ok: [DEV-Test] => (item=['XGE1/0/4', 'up', 'down', '--', '--', '[N0:HZ1-AY...'])
ok: [DEV-Test] => (item=['XGE1/0/5', 'up', 'up', '--', '--', '[N0:HZ1-AY...'])
ok: [DEV-Test] => (item=['XGE1/0/6', 'up', 'up', '--', '--', '[N0:HZ1-AY...'])
ok: [DEV-Test] => (item=['XGE1/0/7', 'up', 'up', '--', '--', '[N0:HZ1-AY...'])
ok: [DEV-Test] => (item=['XGE1/0/8', 'up', 'up', '--', '--', '[N0:HZ1-AY...'])
ok: [DEV-Test] => (item=['XGE1/0/47', 'up', 'up', '--', '--', '[N0:HZ1-AY...'])
ok: [DEV-Test] => (item=['XGE2/0/1', 'up', 'up', '--', '--', '[N0:HZ1-AY...'])
ok: [DEV-Test] => (item=['XGE2/0/2', 'up', 'up', '--', '--', '[N0:HZ1-AY...'])
ok: [DEV-Test] => (item=['XGE2/0/3', 'up', 'up', '--', '--', '[N0:HZ1-AY...'])
ok: [DEV-Test] => (item=['XGE2/0/4', 'up', 'up', '--', '--', '[N0:HZ1-AY...'])
ok: [DEV-Test] => (item=['XGE2/0/5', 'up', 'up', '--', '--', '[N0:HZ1-AY...'])
ok: [DEV-Test] => (item=['XGE2/0/6', 'up', 'up', '--', '--', '[N0:HZ1-AY...'])
ok: [DEV-Test] => (item=['XGE2/0/7', 'up', 'up', '--', '--', '[N0:HZ1-AY...'])
ok: [DEV-Test] => (item=['XGE2/0/8', 'up', 'up', '--', '--', '[N0:HZ1-AY...'])
ok: [DEV-Test] => (item=['XGE2/0/47', 'up', 'up', '--', '--', '[N0:HZ1-AY...'])

TASK [Insert DB] **************************************************************************************************
changed: [DEV-Test] => (item={'dev_name': 'DEV-Test', 'port': 'FGE1/0/51', 'phy_state': 'up', 'pro_state': 'up', 'ip_addr': '10.136.91.102', 'vpn': '--'})
changed: [DEV-Test] => (item={'dev_name': 'DEV-Test', 'port': 'FGE1/0/52', 'phy_state': 'up', 'pro_state': 'up', 'ip_addr': '10.136.91.166', 'vpn': '--'})
changed: [DEV-Test] => (item={'dev_name': 'DEV-Test', 'port': 'FGE2/0/51', 'phy_state': 'up', 'pro_state': 'up', 'ip_addr': '10.136.91.106', 'vpn': '--'})
changed: [DEV-Test] => (item={'dev_name': 'DEV-Test', 'port': 'FGE2/0/52', 'phy_state': 'up', 'pro_state': 'up', 'ip_addr': '10.136.91.170', 'vpn': '--'})
changed: [DEV-Test] => (item={'dev_name': 'DEV-Test', 'port': 'XGE1/0/1', 'phy_state': 'up', 'pro_state': 'up', 'ip_addr': '--', 'vpn': '--'})
changed: [DEV-Test] => (item={'dev_name': 'DEV-Test', 'port': 'XGE1/0/2', 'phy_state': 'up', 'pro_state': 'up', 'ip_addr': '--', 'vpn': '--'})
changed: [DEV-Test] => (item={'dev_name': 'DEV-Test', 'port': 'XGE1/0/3', 'phy_state': 'up', 'pro_state': 'up', 'ip_addr': '--', 'vpn': '--'})
changed: [DEV-Test] => (item={'dev_name': 'DEV-Test', 'port': 'XGE1/0/4', 'phy_state': 'up', 'pro_state': 'down', 'ip_addr': '--', 'vpn': '--'})
changed: [DEV-Test] => (item={'dev_name': 'DEV-Test', 'port': 'XGE1/0/5', 'phy_state': 'up', 'pro_state': 'up', 'ip_addr': '--', 'vpn': '--'})
changed: [DEV-Test] => (item={'dev_name': 'DEV-Test', 'port': 'XGE1/0/6', 'phy_state': 'up', 'pro_state': 'up', 'ip_addr': '--', 'vpn': '--'})
changed: [DEV-Test] => (item={'dev_name': 'DEV-Test', 'port': 'XGE1/0/7', 'phy_state': 'up', 'pro_state': 'up', 'ip_addr': '--', 'vpn': '--'})
changed: [DEV-Test] => (item={'dev_name': 'DEV-Test', 'port': 'XGE1/0/8', 'phy_state': 'up', 'pro_state': 'up', 'ip_addr': '--', 'vpn': '--'})
changed: [DEV-Test] => (item={'dev_name': 'DEV-Test', 'port': 'XGE1/0/47', 'phy_state': 'up', 'pro_state': 'up', 'ip_addr': '--', 'vpn': '--'})
changed: [DEV-Test] => (item={'dev_name': 'DEV-Test', 'port': 'XGE2/0/1', 'phy_state': 'up', 'pro_state': 'up', 'ip_addr': '--', 'vpn': '--'})
changed: [DEV-Test] => (item={'dev_name': 'DEV-Test', 'port': 'XGE2/0/2', 'phy_state': 'up', 'pro_state': 'up', 'ip_addr': '--', 'vpn': '--'})
changed: [DEV-Test] => (item={'dev_name': 'DEV-Test', 'port': 'XGE2/0/3', 'phy_state': 'up', 'pro_state': 'up', 'ip_addr': '--', 'vpn': '--'})
changed: [DEV-Test] => (item={'dev_name': 'DEV-Test', 'port': 'XGE2/0/4', 'phy_state': 'up', 'pro_state': 'up', 'ip_addr': '--', 'vpn': '--'})
changed: [DEV-Test] => (item={'dev_name': 'DEV-Test', 'port': 'XGE2/0/5', 'phy_state': 'up', 'pro_state': 'up', 'ip_addr': '--', 'vpn': '--'})
changed: [DEV-Test] => (item={'dev_name': 'DEV-Test', 'port': 'XGE2/0/6', 'phy_state': 'up', 'pro_state': 'up', 'ip_addr': '--', 'vpn': '--'})
changed: [DEV-Test] => (item={'dev_name': 'DEV-Test', 'port': 'XGE2/0/7', 'phy_state': 'up', 'pro_state': 'up', 'ip_addr': '--', 'vpn': '--'})
changed: [DEV-Test] => (item={'dev_name': 'DEV-Test', 'port': 'XGE2/0/8', 'phy_state': 'up', 'pro_state': 'up', 'ip_addr': '--', 'vpn': '--'})
changed: [DEV-Test] => (item={'dev_name': 'DEV-Test', 'port': 'XGE2/0/47', 'phy_state': 'up', 'pro_state': 'up', 'ip_addr': '--', 'vpn': '--'})

PLAY RECAP ********************************************************************************************************
DEV-Test : ok=7    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

[root@localhost project]# 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值