openstack fuel节点的pdsh的简单纯python替代品。

fuel-pdsh的Python项目详细描述


PyPi Package

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-pdshfuel-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为248的节点上运行命令, 只需将它们作为逗号分隔的列表传递。

$ 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中复制。这是故意的 因为为了避免在一个地方复制多个文件时产生歧义。 请记住这一点。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
内部嵌套滚动视图的java Recyclerview?   返回空值的java MapPartitionFunction   java无法访问apache模块源代码中的系统定义的环境变量   java需要帮助确定用户输入的最大值和最小值   java检查文件是否存在,如果存在,则创建一个编号更高的新文件   针对许多不正确XML文档的XSD的XML验证在Java中不报告任何错误?   java有没有一种方法可以将json字符串甚至JSONObject发送给POSTMAN,而不在每个双引号前加斜杠?   java如何获得频域中两个音频信号的比率?   java 安卓 studio理解错误   java插入到部分填充的数组中   java使用流<String>创建流<CustomType>?   java开放式按键应用程序   java获取zxing生成的图像路径   使用shibboleth sso的java授权   java在运行时更改bean类名   javajooq如何从表中选择min'id'   java通过Eclipse web项目运行hadoop mapreduce字数   java同步方法与非同步方法同时执行   方法每次返回一个不同的加密字符数组   java获取ArrayList的每个元素中出现的特定字符的频率<String>