diff --git a/roles/groups-by-IPMB-addr/files/groups_by_IPMB_addr.fact b/roles/groups-by-IPMB-addr/files/groups_by_IPMB_addr.fact new file mode 100644 index 0000000..b812d5f --- /dev/null +++ b/roles/groups-by-IPMB-addr/files/groups_by_IPMB_addr.fact @@ -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() diff --git a/roles/groups-by-IPMB-addr/tasks/main.yml b/roles/groups-by-IPMB-addr/tasks/main.yml new file mode 100644 index 0000000..5200603 --- /dev/null +++ b/roles/groups-by-IPMB-addr/tasks/main.yml @@ -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' }