Skip to main content

用于命令行 MaaS 询问的实用程序

项目描述

包裹 构建状态 覆盖状态

用于 1.8 maas 区域安装的 maas 实用程序

概括

为 maas 提供 misc 命令行的东西。我需要的第一个是在给定机器名称的情况下确定 system_id 的能力。

用法

usage: maasutil.py [-h] [-u URL] [-k KEY] [-f FILENAME] [-t TEMPLATE]
                   [-c COMMAND] [-v] [-l {DEBUG,INFO,WARNING,ERROR,CRITICAL}]
                   [-s]

MaaS utility cli

optional arguments:
  -h, --help            show this help message and exit
  -u URL, --url URL     This is the maas url to connect to, default :
                        http://localhost/MAAS/api/1.0
  -k KEY, --key KEY     This is the maas admin api key, default :null
  -f FILENAME, --file FILENAME
                        This is the jinja2 template file :
  -t TEMPLATE, --template TEMPLATE
                        This is the jinja2 template text :
  -c COMMAND, --command COMMAND
                        This is the maas uri, e.g. /nodes/?op=list :
  -v, --version         this switch will just return the version and exit,
                        current version is : 0.0.19
  -l {DEBUG,INFO,WARNING,ERROR,CRITICAL}, --loglevel {DEBUG,INFO,WARNING,ERROR,CRITICAL}
                        Log level (DEBUG,INFO,WARNING,ERROR,CRITICAL) default
                        is: INFO
  -s, --save            save select command line arguments (default is never)
                        in "/home/gfausak/.maasutil.conf" file

-t or -f MUST be specified, not both.

论据

  • –url,连接到 MaaS 服务器的 url。如果它与 MaaS 服务器在同一台机器上运行,那么默认的“ http://localhost/MAAS/api/1.0 ”就足够了。

  • –key,这可以在 MaaS gui 控制台上找到,下拉右侧,用户帐户,该页面包含密钥。您也可以创建新密钥。

  • –command,要执行的实际MaaS api。该命令将返回模板使用的 json(因此它们必须配对)。

  • –file,其中包含 jinja2模板的文件。或者..

  • --template,实际的jinja2 模板文本

  • --help,打印使用信息。

  • --version,打印版本并退出

  • --loglevel,用于调试,默认 INFO。

  • -save,将当前参数保存到主目录中的持久文件中,该文件将被读取,就好像它来自该程序的后续调用中的命令行一样。要删除它,您必须手动删除 ~/.maasutil.conf 文件。默认是不保存。顺便说一句,保存是不安全的!它可以将命令行 'KEY' 指向文件。你被警告了!

基本原理

我需要 MaaS api 返回的数据和 Ansible 之间的通用接口。例如,我希望能够用 Ansible 做几件事。* 动态库存(来自 maas) * 部署机器(来自 maas)

为了在 Ansible 中实现这些类型的游戏,我需要一种简单的方法来访问 MaaS api,最好是在命令行上,以便从 Ansible 剧本访问。我决定为模板程序编写一个通用的 REST api,而不是为我需要的每条数据编写一个脚本。REST api 必须返回 json。模板是一个jinja2模板,可以任意取json转换成任意格式。它也可以进行过滤。因此,虽然这是专门为 MaaS 编写的,但它适用于任何返回 json 的 REST 接口。

笔记

这使用了jinja2模板系统。运行的 url/命令应返回 json。您的 jinja2 模板应该将该 json 作为输入,并相应地格式化输出。模板可以在命令行中使用 -t 参数传递,或者模板可以存储在一个文件中,该文件使用 -f 引用。

安装

最简单的方法是使用 pypi。

pip install maasutil

例子

在大多数示例中,我省略了 –key 参数。该参数使命令变得混乱!要设置一次参数,请执行以下操作:

maasutil --save --key 'FbVzEwU4sKaD68cadK:W7L9xm9LgycyfrmdYD:DbSW7fhnYMj4qtMxE5tzHUnw7AtAg5NM' --url 'http://www.myspecial.com/MAAS/api/1.0'

这将设置默认的 –key 和 –url,因此后续命令将使用它们,就好像它们是在命令行中输入的一样。这在做临时工作时非常方便,您不必继续重新输入它。但是,它是不安全的。密钥被写入执行程序主目录中的一个文件,名为 .maasutil.conf。搞砸后删除此文件是个好主意。

显示主机名、systemid 和状态

maasutil --command '/nodes/?op=list' --template '{% for h in src %}{{ h.hostname }}, {{ h.system_id }}, {{ h.status }}^M{% endfor %}'

和一个示例结果:

hp-bottom.maas, node-01077d56-4cb9-11e5-ab4d-0800274e4167, 4
hp-top.maas, node-9d269970-4ff6-11e5-8444-0800274e4167, 4
hp-right.maas, node-3b57d712-4ff7-11e5-8444-0800274e4167, 6
hp-left.maas, node-3eb98f90-4ff7-11e5-8c49-0800274e4167, 4

您将需要知道该命令返回的 json。MaaS api文档将对此 有所帮助。为了完整起见,我将展示上面的命令返回的内容,因此模板会更有意义。这是一个非常基本的示例,模板可以任意复杂。

[
    {
        "ip_addresses": [
            "10.20.30.54"
        ],
        "cpu_count": 8,
        "power_type": "amt",
        "tag_names": [
            "juju2"
        ],
        "swap_size": null,
        "owner": null,
        "macaddress_set": [
            {
                "resource_uri": "/MAAS/api/1.0/nodes/node-01077d56-4cb9-11e5-ab4d-0800274e4167/macs/cc%3A3d%3A82%3A67%3Afe%3A3f/",
                "mac_address": "cc:3d:82:67:fe:3f"
            },
            {
                "resource_uri": "/MAAS/api/1.0/nodes/node-01077d56-4cb9-11e5-ab4d-0800274e4167/macs/ec%3Ab1%3Ad7%3A46%3Ad7%3Afb/",
                "mac_address": "ec:b1:d7:46:d7:fb"
            }
        ],
        "zone": {
            "resource_uri": "/MAAS/api/1.0/zones/default/",
            "name": "default",
            "description": ""
        },
        "hostname": "hp-bottom.maas",
        "storage": 500107,
        "system_id": "node-01077d56-4cb9-11e5-ab4d-0800274e4167",
        "boot_type": "fastpath",
        "memory": 16384,
        "disable_ipv4": false,
        "status": 4,
        "power_state": "off",
        "routers": [],
        "physicalblockdevice_set": [
            {
                "name": "sda",
                "tags": [
                    "rotary",
                    "sata",
                    "7200rpm"
                ],
                "id": 20,
                "id_path": "/dev/disk/by-id/wwn-0x5000cca85ec51c83",
                "path": "/dev/sda",
                "model": "HGST HTS725050A7",
                "block_size": 4096,
                "serial": "RC250ACE0B7KTM",
                "size": 500107862016
            }
        ],
        "pxe_mac": {
            "resource_uri": "/MAAS/api/1.0/nodes/node-01077d56-4cb9-11e5-ab4d-0800274e4167/macs/ec%3Ab1%3Ad7%3A46%3Ad7%3Afb/",
            "mac_address": "ec:b1:d7:46:d7:fb"
        },
        "netboot": true,
        "osystem": "",
        "substatus": 4,
        "architecture": "amd64/generic",
        "distro_series": "",
        "resource_uri": "/MAAS/api/1.0/nodes/node-01077d56-4cb9-11e5-ab4d-0800274e4167/"
    },
    ...and this repeats for each one...
]

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

maasutil-0.0.22.tar.gz (9.7 kB 查看哈希

已上传 source