openstack fuel节点的pdsh的简单纯python替代品。
fuel-pdsh的Python项目详细描述
fuel pdsh是一个小实用程序,它允许您在 从主节点(也称为燃料节点)远程获得多个openstack节点 使用ssh。
基本上它只是PDSH的纯python替代品,后者使用nailgun api来发现 节点。它还支持pdcp实用程序,用于将文件复制到多个 并行主机。
fuel-pdsh包包含2个命令行实用程序,fuel-pdsh 用于在主机组上执行ssh命令和fuel-pdcp用于 文件复制。
安装
在主节点上安装燃油PDSH之前,请执行以下操作:
$ yum install python-devel python-pip gcc
如果要安装系统,请执行以下操作:
$ pip install fuel-pdsh
如果您想使用virtualenv:
$ pip install virtualenv $ virtualenv -p python2.6 --system-site-packages ~/.fuelpdsh-venv $ source ~/.fuelpdsh-venv/bin/activate $ pip install fuel-pdsh
命令行选项
fuel-pdsh和fuel-pdcp都设置了相同的选项,但是 不同的论点。
usage: fuel-pdsh [-h] [--concurrency CONCURRENCY] [-c CLUSTER_ID] [-w NODE_IDS] [-i IPS] [-n NAME] [-s STATUS] [-g GROUP_ID] [-r ROLES] [-v | -d] command [command ...] positional arguments: command Command to execute optional arguments: -h, --help show this help message and exit --concurrency CONCURRENCY How many simultaneous connections should be established. By default (4), we are trying to connect to all nodes, no limits. -c CLUSTER_ID, --cluster-id CLUSTER_ID Select only nodes which belong to cluster with such ID. -w NODE_IDS, --node-ids NODE_IDS Plain comma-separated list of nodes. -i IPS, --ips IPS Plain comma-separated list of node IPs. -n NAME, --name NAME Regular expression for the node name. -s STATUS, --status STATUS Node status. -g GROUP_ID, --group-id GROUP_ID Group ID. -r ROLES, --roles ROLES Node roles. -v, --verbose Be verbose. -d, --debug Be event more verbose, for debugging. Please contact Sergey Arkhipov <serge@aerialsounds.org> for issues.
--concurrency
此标志定义如何并行访问主机。如果你 有40个节点,但是--concurrency设置为4,只有4个主机 并行管理。如果要连接中的所有主机,请设置0。 平行的。
实际上,请不要将此设置设置为高。fuel-pdsh 使用Paramiko进行主机访问 有很多众所周知的问题 连接。如果连接到 所有主机而不是某些限制。
--verbose
此标志使实用程序更加详细。默认情况下,如果执行 fuel-pdsh,您将看到这样的输出:
$ fuel-pdsh -n contr -- echo hello world node-4 : hello world node-39: hello world node-3 : hello world
如果启用-v,您将得到如下结果:
$ fuel-pdsh -n contr -v -- echo hello world *** 140489797273344 >>> Found 3 suitable nodes *** 140489797273344 >>> Execute with 4 threads node-4 : hello world node-39: hello world node-3 : hello world
所以,更详细地说,要了解发生了什么。
--debug
使最大冗长。基本上,如果你不是我,你不需要 如此冗长。但我调试的时候需要。
所以,如果您遇到了一些问题并想发出一个bug,请执行 使用-d的实用程序并向我发送输出。
-c,--cluster-id
定义附加节点筛选的可选群集ID。如果没有群集ID 设置后,实用程序将在所有可访问的群集上工作。
$ fuel-pdsh -c 1 -- ls
这将在集群中id为1的所有节点上执行ls。
-w,--node-ids
最简单的选择器,只需根据给定的id选择所有节点。所以如果你 想要t``-c`,在id为2、4和8的节点上运行命令, 只需将它们作为逗号分隔的列表传递。
$ fuel-pdsh -w 2,4,8 -- ls
另外,您可以在它们前面加上node-前缀(当您ssh到它们时)。 以下命令与上一命令相同:
$ fuel-pdsh -w node-2,4,node-8 -- ls
-i,--ips
仅选择具有这些IP的节点。
$ fuel-pdsh -i 10.0.0.1,10.0.0.2 -- ls
-n,--name
对节点名称进行筛选。此参数只是正则表达式 对于节点名,所以没有点输入整个名称,只是 传递一个部分。
$ fuel-pdsh -n contro -- ls
-s,--status
根据节点的状态筛选节点。
$ fuel-pdsh -s ready -- ls
这将在所有状态为ready的节点上ls。
-g,--group-id
按组ID筛选节点。
$ fuel-pdsh -g 10 -- ls
-r,-roles
根据节点的角色筛选节点。
$ fuel-pdsh -r compute -- ls
燃油PDSH
fuel-pdsh是一个在不同的 东道主。假设您希望在所有控制器上重新启动apache。那么 执行以下操作:
$ fuel-pdsh -r controller service apache2 restart
有时需要将参数传递给命令 被识别为fuel-pdsh本身的参数。不用担心,很好 支持旧的--。
$ fuel-pdsh -r controller -- manage.py --noinput
有时您必须调用几个命令。别再担心了:
$ fuel-pdsh -r controller -- sh -c "command1 && command2; command3"
燃油pdcp
fuel-pdcp是一个同时在多个主机上复制文件的实用程序。
$ fuel-pdcp -r controller -- zabbix.deb /tmp
这将复制zabbix packag所有控制器上的e到/tmp。还有,你 可以复制多个文件:
$ fuel-pdcp -r controller -- zabbix.deb zabbix.conf /tmp
important:目的地被视为目录。因此,如果您按以下步骤操作
$ fuel-pdcp -r controller -- zabbix.deb /tmp/zabbix.deb
然后将创建新目录/tmp/zabbix.deb/,并 将在/tmp/zabbix.deb/zabbix.deb中复制。这是故意的 因为为了避免在一个地方复制多个文件时产生歧义。 请记住这一点。