增加根据远程主机的IPMB信息分组
This commit is contained in:
38
roles/groups-by-IPMB-addr/files/groups_by_IPMB_addr.fact
Normal file
38
roles/groups-by-IPMB-addr/files/groups_by_IPMB_addr.fact
Normal file
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/python
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
|
||||
class GroupsByIPMB(object):
|
||||
|
||||
def __init__(self,IPMB_cmd_str):
|
||||
self.IPMB_cmd_str = IPMB_cmd_str
|
||||
self.IPMB_num_str = None
|
||||
self.IPMB_cmd_ret_str = None
|
||||
|
||||
def groups_exec_IPMB_command(self):
|
||||
opt_handler = os.popen(self.IPMB_cmd_str)
|
||||
self.IPMB_cmd_ret_str = opt_handler.read()
|
||||
opt_handler.close()
|
||||
|
||||
def groups_split_IPMB_ret_str(self):
|
||||
info_list = re.split(' |\n',self.IPMB_cmd_ret_str)
|
||||
if info_list [5] == '90':
|
||||
self.IPMB_num_str = 'IPMB_num_blade_00'
|
||||
if info_list [5] == '80':
|
||||
self.IPMB_num_str = 'IPMB_num_blade_01'
|
||||
if info_list [5] == '88':
|
||||
self.IPMB_num_str = 'IPMB_num_blade_02'
|
||||
if info_list [5] == '98':
|
||||
self.IPMB_num_str = 'IPMB_num_blade_03'
|
||||
|
||||
def groups_print_IPMB_num_str(self):
|
||||
print (json.dumps(self.IPMB_num_str))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
IPMB_cmd_str = 'ipmitool raw 0x2e 0x32 0x13 0x5f 0x00'
|
||||
groups_by_IPMB = GroupsByIPMB(IPMB_cmd_str)
|
||||
groups_by_IPMB.groups_exec_IPMB_command()
|
||||
groups_by_IPMB.groups_split_IPMB_ret_str()
|
||||
groups_by_IPMB.groups_print_IPMB_num_str()
|
||||
25
roles/groups-by-IPMB-addr/tasks/main.yml
Normal file
25
roles/groups-by-IPMB-addr/tasks/main.yml
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
|
||||
- name: 'copy groups-by-IPMB-addr.fact to host'
|
||||
copy:
|
||||
src: "{{ role_path }}/files/groups_by_IPMB_addr.fact"
|
||||
dest: "/etc/ansible/facts.d/groups_by_IPMB_addr.fact"
|
||||
mode: "0755"
|
||||
|
||||
- name: 'Gathers facts from remote hosts'
|
||||
setup:
|
||||
filter: 'ansible_local'
|
||||
fact_path: /etc/ansible/facts.d
|
||||
|
||||
- name: "debug"
|
||||
debug: var=ansible_local
|
||||
|
||||
- name: 'group by gathers facts'
|
||||
group_by:
|
||||
key: '{{item.key}}'
|
||||
when: ansible_local.groups_by_IPMB_addr == item.value
|
||||
with_items:
|
||||
- { key: 'blade-00', value: 'IPMB_num_blade_00' }
|
||||
- { key: 'blade-01', value: 'IPMB_num_blade_01' }
|
||||
- { key: 'blade-02', value: 'IPMB_num_blade_02' }
|
||||
- { key: 'blade-03', value: 'IPMB_num_blade_03' }
|
||||
Reference in New Issue
Block a user