我可能会使用Ansible。这是一个非常简单的配置管理/编排引擎,比Puppet入门更简单(Puppet曾经是我的首选,但发现Ansible并不总是如此)。
Ansible在这里的好处是它直接通过SSH进行通信,因此您可以仅使用现有的SSH凭据和工作流程就可以开始使用。
如果当前正在使用ipmitool配置BMC,则可以执行以下操作:
定义一个主机文件-告诉Ansible哪些主机在bmc组中(在这种情况下),以及哪些主机在其上运行。
[bmc]
192.168.1.100
192.168.1.101
192.168.1.102
依此类推...您也可以在该文件中使用主机名,只要它们是可解析的即可。
然后创建一个“剧本”,这是要在主机组中每个主机上运行的命令集。您想要这种自上而下的目录布局:
ansible/
playbooks/
bmc.yml
roles/
bmcconfig/
files/
handlers/
main.yml
tasks/
main.yml
templates/
group_vars/
all
剧本具有Roles,这些是配置的小部分,您可以细分并重复使用。
因此,我将创建一个名为bmc.yml
(所有Ansible配置位于YAML文件中)的文件
---
- name: Configure BMC on the hosts
hosts: bmc
user: root
roles:
- bmcconfig
然后,在内部roles/bmcconfig/tasks/main.yml
可以开始列出要在每个主机上运行以与ipmi进行通信的命令。
---
- name: Install ipmitool
apt: pkg=ipmitool state=installed
- name: Run ipmitool config
shell: ipmitool -your -options -go -here
当您运行的剧本,用ansible-playbook -i hosts bmc.yml
中列出的命令,tasks/main.yml
为每个角色将在自上而下的顺序上的每个主机在发现被执行bmc
主机组中hosts
group_vars/all
是一个有趣的文件,它允许您定义可在剧本中使用的变量和值的键值对。
所以你可以定义类似
ipmitool_password: $512315Adb
在你group_vars/all
,因此,你能够有这样的:
shell: ipmitool -your -options -go -here --password=${ipmitool_password}
在剧本中。
您可以在Ansible文档页面上找到有关如何使用“模块”(可让您执行工作的Ansible组件,如何编写自己的:D等等)的更多信息。