From 1c789375bd8dba59a3507abe062048346efbb91f Mon Sep 17 00:00:00 2001 From: fumingwei Date: Mon, 20 Jan 2020 16:25:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=A0=B9=E6=8D=AE=E8=BF=9C?= =?UTF-8?q?=E7=A8=8B=E4=B8=BB=E6=9C=BA=E7=9A=84IPMB=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=88=86=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../files/groups_by_IPMB_addr.fact | 38 +++++++++++++++++++ roles/groups-by-IPMB-addr/tasks/main.yml | 25 ++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 roles/groups-by-IPMB-addr/files/groups_by_IPMB_addr.fact create mode 100644 roles/groups-by-IPMB-addr/tasks/main.yml 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' }