网箱易读动态存储脚本

ansible-netbox-inventor的Python项目详细描述


PyPI VersionPython VersionBuild StatusCodacy BadgeCode HealthCoverage Status

简介

这是ansible的netbox动态清单脚本。 Netbox是一个IP地址 管理(IPAM)和数据中心基础设施管理(DCIM)工具。 它很好,很现代,而且有很好的api……所以它是一个很好的选择 作为“真理之源”。

您可以根据自己的需要,根据netbox中的内容对服务器进行分组, 可以将字段选择为组,也可以选择为主机的变量。你可以使用 默认字段或自定义字段。

兼容性

使用netbox = v1.6netbox = v2.0.4测试的脚本, 但最有可能的是它将适用于所有的netbox v1.0及以上版本。

分组

服务器可以按netbox中的任何部分进行分组。 例如,您可以按“站点”、“机架”、“角色”、“平台”对主机进行分组, 或者上网本的其他部分。 请记住:对于分组,应使用api名称而不是ui名称。

所以如果你有一个叫做“美国东部”的网站,在Ansible你会得到一个 hosts组称为“us east”,其中包含该站点中的所有主机。

如果该部分是默认的 group_by.default如果是自定义节(自定义字段),则 把它放在group_by.custom下面。

下面是一个如何根据服务器的platform对其进行分组的示例。

group_by:
   default:
       - platform

所以如果你用“ubuntu”和“centos”作为上网本的平台, 您将有两组使用该系统的服务器。

宿主变量

netbox部分可以用作主机的变量!你可以用 netbox中主机的ip为ansible_ssh_host,或使用自定义 现场也是。

这里有三个部分,第一个是IP,第二个是 General,最后是Custom

变量定义为Key: Value。关键是里面会有什么 ansible和value来自netbox。

hosts_vars:
    ip:
        ansible_ssh_host: primary_ip

这里primary_ip将用作ansible_ssh_host的值。

选项

$ netbox.py -h
usage: netbox.py [-h] [-c CONFIG_FILE] [--list] [--host HOST]

optional arguments:
  -h, --help            show this help message and exit
  -c CONFIG_FILE, --config-file CONFIG_FILE
                        Path for script's configuration. Also
                        "NETBOX_CONFIG_FILE" could be used as env var to set
                        conf file path. (default: netbox.yml)

  --list                Print all hosts with vars as Ansible dynamic inventory
                        syntax. (default: False)
  --host HOST           Print specific host vars as Ansible dynamic inventory
                        syntax. (default: None)

还可以通过环境变量NETBOX_CONFIG_FILE设置配置文件路径。

用法

$ ansible all -i netbox.py -m ping

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

推荐PyPI第三方库


热门话题
AmazonS3查找从S3forJava下载的压缩文件的MIME类型   java如何使用Selenium在<span>中查找具有特定文本的元素   python如何使用OpenIEDemo生成自定义三元组。由stanfordnlp提供的java   java遇到“方法不适用”编译错误   java如何使用Mockito在Looper中运行的验证代码。getMainLooper?   类Java目录错误   java在已知其他泛型信息时使用原始类型   java connect()和disconnect()在哪里实现?   java使用PDF Box库拆分PDF,生成的PDF几乎与源PDF文件大小相同   java PowerMockito返回错误的对象   java如何找到TIBCO集合消息的字节编码?   java Basic音乐播放器下一步和上一步按钮   添加模块描述符时,java没有名为“entityManagerFactory”的bean可用   java为什么我的代码不是线程安全的?   eclipse java。引用项目中的类的lang.NoClassDefFoundError