4个版本 (2个破坏性)
0.3.0 | 2024年1月26日 |
---|---|
0.2.2 | 2024年1月25日 |
0.2.1 | 2024年1月19日 |
0.2.0 |
|
0.1.0 | 2024年1月11日 |
#62 in 文本编辑器
每月51次下载
135KB
3.5K SLoC
子网花园
描述
子网花园是一种基于源代码控制的网络基础设施管理方法,类似于IPAM,无需设置专门的IPAM服务器。数据库是一个可读性强的文本文件,可以用任何文本编辑器编辑,并存储在git仓库中。
特性
- 可读性文本文件
- 基于Git的版本控制
- 自动子网分配
如何使用
安装
使用cargo
cargo install subg
这将将在~/.cargo/bin
中安装subg
二进制文件。确保此目录在您的PATH
环境变量中。
初始化
子网花园将其数据存储在一个池文件中。此文件是一个对源代码控制友好的文本文件,可以用任何文本编辑器编辑,并容易放置在版本控制下。每个池文件负责管理单个父子网下的子网。
例如,要创建一个新池文件,用于管理10.10.0.0/16
子网,运行
subg init 10.10.0.0/16
这将创建当前目录中名为subnet-garden-pool.yaml
的新池文件。
您还可以管理IPv6子网。例如,要管理fc00::/112
子网,运行
subg init fc00::/112
您可以使用--pool-path
选项指定池文件的别名
subg init --pool-path institute-network.yaml 10.10.0.0/16
您还可以设置SUBG_POOL_PATH
环境变量以指定池文件。这在每次运行命令时不必指定--pool-path
选项时非常有用
# Using an environment variable
export SUBG_POOL_PATH=institute-network.yaml
subg init 10.10.0.0/16
也可以将池文件存储为JSON而不是YAML
export SUBG_POOL_PATH=subnet-garden-pool.json
subg init 10.10.0.0/16
管理子网
一旦初始化了池文件,就可以开始分配、释放,并查看管理子网的信息。
子网分配
当需要分配新的子网时,可以通过请求一个覆盖所需主机位数的子网来这样做。
分配匿名子网
例如,要分配一个可以容纳8位主机(256个主机)的子网,运行
subg allocate 8
这将从池中分配一个8位子网。子网的位置由池中的可用空间决定。
分配命名子网
子网可以被分配名称。一旦分配,该名称可以在其他命令中引用。例如,要分配一个带有名称的子网,运行
subg allocate 8 tardigrade-lab
这将创建一个名为 tardigrade-lab
的8位子网。
分配一组子网
在许多情况下,需要分配一组子网,例如在多个数据中心和可用区构建系统时。例如,在两个可用区和两个区域中各分配2个8位子网,运行
subg allocate 8 tardigrade-project-{}-{}-{} us-east-1,eu-central-1 a,b %0..2
这将总共分配8个子网
tardigrade-project-us-east-1-a-0
tardigrade-project-us-east-1-a-1
tardigrade-project-us-east-1-b-0
tardigrade-project-us-east-1-b-1
tardigrade-project-eu-central-1-a-0
tardigrade-project-eu-central-1-a-1
tardigrade-project-eu-central-1-b-0
tardigrade-project-eu-central-1-b-1
声明特定CIDR
在某些情况下,您可能想要分配具有特定地址的子网。例如,当将子网池应用于现有网络时。要声明特定子网,运行
subg claim 10.10.110.0/24
查看已分配的子网
要查看已分配的子网,运行
subg cidrs
要查看命名子网的列表,使用
subg names
子网命名
可以添加、更改或删除子网的名称。示例
为未命名的子网添加名称
subg rename 10.10.0.0/24 rotifer-lab
更改子网的名称
subg rename rotifer-lab other-microbe-lab
要删除子网的名称,省略名称
subg rename other-microbe-lab
释放子网
可以通过名称或CIDR来释放子网。例如,要释放之前声明的子网,运行
subg free 10.10.110.0/24
子网名称模板
在描述一组子网时,名称参数成为用于描述每个新子网名称的模板。模板之后的参数以所有组合生成。这些值被替换到模板中的每个 {}
占位符中。
列表参数
列表参数指定为值逗号分隔列表。例如,要为每个可用区 a
和 b
生成子网列表,运行
subg allocate 8 tardigrade-experiment-az-{} a,b
这将创建两个网络,tardigrade-experiment-az-a
和 tardigrade-experiment-az-b
。
范围参数
范围参数用于指定数字范围。例如,要生成6个子网列表,运行
subg allocate 8 rotifer-experiment-{} %0..6
请注意,范围不包括最后一个数字。这将创建6个子网
rotifer-experiment-0
rotifer-experiment-1
rotifer-experiment-2
rotifer-experiment-3
rotifer-experiment-4
rotifer-experiment-5
子网花园池格式
子网花园池文件存储为YAML或JSON文件。以下是一个YAML池文件的示例
cidr: 10.10.0.0/16
subnets:
- cidr: 10.10.0.0/24
- cidr: 10.10.1.0/24
name: tardigrade-lab
- cidr: 10.10.110.0/24
依赖关系
~4–5MB
~104K SLoC