生成流浪者文件以用于流浪者的包。

grifter的Python项目详细描述


#grifter
python库为网络空间构建大规模的不稳定拓扑。也可用于建立小型实验室,用于联网/计算设备。


[![构建状态](https://travis-ci.org/bobthebutcher/grifter.svg?branch=master)(https://travis-ci.org/bobthebutcher/grifter.svg?分支=主)
[![覆盖状态](https://coveralls.io/repos/github/bobthebutcher/grifter/badge.svg?branch=master)(https://coveralls.io/github/bobthebutcher/grifter?branch=master)

注意:需要python 3.6+才能使用此库。

`````
*****************************************************
此项目目前处于beta测试阶段,目前无法保证稳定性。可能会出现中断API更改的情况。
*****************************************************

````
vagrant
什么是vagrant?从vagrant[网站](https://www.vagrantup.com/docs/index.html)中
````
一个用于管理虚拟机生命周期的命令行实用程序
````

从"vagrant libvirt"github[页面](https://github.com/vagrant-libvirt/vagrant-libvirt)
```
一个为vagrant添加libvirt提供程序的vagrant插件,允许vagrant通过libvirt工具包控制和提供机器。
```

grantfile可以变成数千行。使所有配置正确通常是一个令人沮丧的、充满错误的过程,特别是对于那些不熟悉流浪者的人来说。grifter旨在帮助简化该过程。


将生成t版本`>;=2.1.0'。

不支持VirtualBox或任何其他提供程序类型,或者在路线图上不支持这些类型。


ion
-[单击](https://click.palletsprojects.com/)-cli实用程序
-[jinja2](http://jinja.pocoo.org/docs)-模板引擎
-[pyyaml](https://pyyaml.org/)-yaml所有内容

安装
此项目目前没有pypi版本。grifter可以使用pip从源代码直接安装。

创建并激活virtualenv。
```
mkdir~/test&;cd~/test
python3-m venv.venv
source.venv/bin/activate
`````

ter.zip
```

releases通过github发行版分发。
````
t;"eof"
srv01:
流浪者收容箱:
name:eof
````


生成流浪者档案
``````
```````>grifter创建客人。yml
```````



`










file
名为"config.yml"的文件需要定义在grifter环境中管理的每个框的基本设置。默认的"config.yml"文件可以在[这里]找到(grifter/config.yml)





>-刺柏/VMX VCP
-刺柏/vmx vfp
-刺柏/vqfx pfe
-刺柏/vqfx re
-刺柏/vsrx
-刺柏/vsrx包装模式


流浪云箱
-积云/积云vx
-centos/7
-generic/ubuntu1804
-opensuse/opensuse-15.0-x86-64








流浪云箱定义流浪云箱的特征。与grifter一起使用。
所需参数ters.
-数据接口库
-数据接口库偏移量
-最大数据接口库
-管理接口库

注意:`数据接口库'不能是空字符串。如果框没有任何数据接口,则建议值为"na"。此字段将被忽略,因此它可以是任何内容,只要它不是空的。

``yaml
guest配置:
示例/框:
data-interface-base:"eth"数据接口的字符串模式。
data-interface-offset:0第一个数据接口的数目,即:0、1、2等。
内部接口:0;用于多虚拟机机箱的机箱间连接。
最大数据接口:8
管理接口:"ma1"
保留接口:0;需要但不能使用的接口。

arista/veos:
数据接口:"eth"
datA U接口偏移量:1
内部U接口:0
最大数据U接口:24
管理U接口:"ma1"
保留U接口:0

juniper/vsrx包模式:
数据U接口库:"GE-0/0/"
数据U接口偏移量:0
内部U接口:0
最大数据接口:16
管理接口:"fxp0.0"
保留接口:0
````

一些例子是juniper vmx和vqfx,其中
一个框用于控制平面,另一个框用于转发平面。


注意:此功能将在以后的版本中添加。


r/>通过在以下位置创建
`config.yml`文件,可以使用所需参数自定义此文件。
-`/opt/grifter/`
-`/.grifter/`
-`./`


users`config.yml`文件中的参数将与默认的带有u的
`config.yml`文件合并SER定义的参数采用首选项。


用法

cli实用程序
grifter随cli实用程序提供。执行"grifter-h"以
查找所有的cli选项。

````
grifter-h
用法:grifter[options]命令[args]…

e.
示例打印示例文件声明。
```

````

此文件可以命名为任何内容,但推荐的命名约定是
`guests.yml`.


确保模板渲染正确且
没有错误。将使用cerberus项目根据架构验证来宾数据。

``yaml
一些来宾:
guest name
vagrant\u box:
vagrant\u box参数
名称:版本:url:提供程序:字符串-可选默认值:"libvirt"
来宾类型:字符串-可选默认值:
启动超时:整数-可选默认值:0
限制CPU:整数-可选默认值:0

ssh:dict-可选
用户名:字符串-可选国家默认值:"
通过rd:string-可选默认值:"
插入键:布尔-可选默认值:false

同步文件夹:dict-可选
启用:布尔-默认值:false
id:string-默认值:"vagrant root"
src:string-默认值:"。"
dst:string-默认值:"/vagrant"

提供程序配置:dict-可选
随机主机名:布尔-可选默认值:false
网卡计数:整数-可选默认值:0
磁盘总线:字符串-可选默认值:"
CPU:整数-可选默认值:1
内存:#整数-可选默认值:512
大页面:布尔值-可选默认值:false
存储池:字符串-可选默认值:"
其他存储卷:列表-可选
对于每个列表元素,以下是必需的。
-位置:字符串
类型:string
总线:string
设备:string
网卡型号类型:string-可选默认值:"
管理网络mac:string-可选默认值:"

内部接口:列表-可选
是必需的。
-本地端口:整数
远程客户:字符串
远程端口:整数

数据接口:列表-可选
对于每个列表元素,都需要以下内容。
-本地端口:整数
远程客户:字符串
远程ORT:integer
```

provider:"libvirt"
ssh:
插入密钥:false
同步文件夹:
启用:false
提供程序配置:
网卡计数:2
磁盘总线:"ide"
CPU:2
内存:2048
数据接口:
-本地端口:1
远程来宾:"sw02"
远程端口:1
-本地端口:2
旧版本:
已启用:false
提供程序配置:
网卡计数:2
磁盘总线:"ide"
CPU:2
内存:2048
数据接口:
-本地端口:1
远程客户机:"sw01"
远程端口:1
-本地端口:2
远程客户机:"sw01"
远程端口:2
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````:"
返回"{oui}:{nic}"
结束

=分拆("/").last
user name=env['user']
域名前缀{{{{{{{{{{{{{cwd}"
域uuid="1f225b5d-2d7e-5a24-b4faa-3a8878df5cc5"




流浪者。要求"u version">;=2.1.0"
>流浪者。配置("2")做配置

vm.define"sw01"do node
客人姓名"sw01"
node.vm.box="arista/veos"
node.vm.box_version="4.20.1f"
node.vm.guest=:tinycore
node.vm.synced_folder","/vagrant",id:"vagrant root",disabled:true

node.ssh.insert_key=false

node.vm.provider:libvirt do
domain.default_prefix="{domain_u prefix}"
domain.cpus=2
domain.memory=2048
domain.disk_u bus="ide"
domain.nic_u adapter懔u count=2
end

node.vm.network:private懔network,
sw01-eth1<;-->;sw02-eth1
:mac=>;"{get_mac()}",
:libvirt_u tunnel_type=>;"udp",
:libvirt_u tunnel_local_ip=>;"127.146。53.1",
:libvirt\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\专用网络,
#sw01-eth2<;>;sw02-eth2
:mac=>;"{get'u mac()}",
:libvirt\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\2",
:libvi随着隧道隧道的建设,隧道的建设也随之而生;10002,
:libvirt\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\br/>node.vm.g节点uest=:tinycore
node.vm.synced_folder","/vagrant",id:"vagrant root",disabled:true


domain.default_prefix="{domain_prefix}"
domain.cpus=2
domain.memory=204"8
domain.storage_pool_name="disk1"
domain.disk_bus="ide"
domain.nic_adapter_count=2
end

sw02-eth1<;-->;sw01-eth1
:mac=>;"{get_mac()",
:libvirt_u tunnel_u type=>;"u"《dp》,
:libvirt\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\uuid}",
自动配置:



node.vm.network:private-u网络;sw02-eth2-lt;>;sw01-eth2-sw01-eth2
:mac=>;"{get'u mac()}",
:libvirt\\\\\\\\\\\\\\\\\\\\\\\\\\\\\10002,
:升ibvirt250;uu隧道的ip=>;"127.146.53.1",
:libvirt_uu隧道的端口=>;10002,
:libvirt_uu隧道的端口=>;"sw02-eth2-{domain-uuuid}",
auto-config:false


end
>end
``
``








可以根据来宾组类型。grifter将在从
最不受欢迎到最受欢迎的以下位置查找名为"guest defaults.yml"的文件:

-`/opt/grifter/`
-`/.grifter/`
-`./`
-`./`
``yaml
arista/veos:
流浪者箱:
版本:"4.20.1f"
来宾类型:"tinycore"
ssh:
插入密钥:false
同步的_文件夹:
启用:false
提供程序配置:
nic_适配器计数:24
CPU:2
内存:2048
磁盘总线:"IDE"

juniper/vsrx包模式:
流浪者箱:
版本:"18.3r1-s1.4"
提供程序:libvirt"
guest_type:"tinycore"
ssh:
insert_key:false
synched_folder:
enabled:false
provider_config:
nic_adapter_count:2
disk_bus:"ide"
cpu:2
内存:4096
``````

组变量可以由变量重写在来宾变量级别。
在构建
一个"vagrantfile"之前,组变量和guest变量的值将合并,guest变量优先于组变量。

下面是一个简化的来宾文件示例。"guest defaults.yml"文件中"arista/veos"guest类型的
值将用于填充guest的参数。

``yaml
sw01:
vagrant\u框:
名称:"arista/veos"
提供程序配置:
nic\u适配器计数:2
数据接口:
-本地端口:1
远程_guest:"sw02"
远程端口:1
-本地端口:2
远程端口:"sw02"
远程端口:2

sw02:
流浪者箱:
名称:"arista/veos"
提供商配置:
网卡计数:2
数据接口:
-本地端口:1
远程est:"sw01"
远程端口:1
-本地端口:2
远程客户机:"sw01"
远程端口:2
````

我:set ft=ruby:



def get-mac(oui="28:b7:ad")
"生成mac地址"
nic=(1..3.map{%0.2x%rand(256)}.join(":")

join(":"
return{{oui{{{nic}"
end




username=env=env['user']


def=dir dir.pwd.pwd.split("/").最后一次
username=env=en{username}{{cwd}"
域uuid="D35FBB1B6-ECDC-5412-BE22-18544446AF92D6"D35FBB1B6-ECDC-5412-BE22-18544446AF92D6"


>流浪者。流浪者。流浪者。流浪者。流浪者。流浪者。流浪者。流浪者。流浪者。流浪者。流浪者。流浪者。流浪者。流浪者。流浪者。流浪者。流浪者。流浪者。流浪者。流浪者配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置配置node.vm.guest=:tinycore
node.vm.synced_folder".","/vagrant",id:"vagrant root",disabled:true


node.ssh.insert_key=false

domain.default_prefix="{domain prefix}"
domain.cpus=2
domain.memory=2048
domain.disk_bus="ide"
domain.nic_adapter_count=2
end


node.vm.network:private_network,
\sw01-eth1<;-->;sw02-eth1
:mac=>;"{get_mac()}",
:libvirt_u tunnel_u type=>;"udp",
:libvirt_u tunnel_u local ip=>;"127.127.145.1",
:libvirt\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\网络:专用网络
sw01-eth2<;>;sw02-eth2
:mac=>;"{get_mac()}",
:libvirt\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\=>;"127.127.145.2",
:libvirt_u tunnel戋u port=>;10002,
:libvirt戋u iface戋u name=>;sw01-eth2-{domain Uuid},
自动配置:false


end
br/>end
config.vm.vm.定义"sw02"do节点节点节点;
guest
guest name="sw02"
node.vm
node.vm.vm.box
node.vm.vm.vm.vm.box\u version="4.20.1f4否de.vm.guest=:tinycore
node.vm.synced_folder".","/vagrant",id:"vagrant root",disabled:true


node.ssh.insert_key=false

domain.default_prefix="{domain prefix}"
domain.cpus=2
domain.memory=2048
domain.storage_pool_name="disk1"
domain.disk_bus="ide"
domain.nic_adapter_count=2
end

=&"udp",
>:libvirt\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\uuid}",
自动_配置:false



node.vm.network.vm.network.vm.network:private网络,
sw02-eth2<;>;sw01-eth2
:mac=>;"{get-mac()",
:libvirt\\\\\\\\\\\\28;; mac()",
:libvirt\\\\28gt;10002,
:libvirt_uu tunnel_u ip=>;"127.127.145.1",
:libvirt_u tunnel_u port=>;10002,
:libvir人们可以在[这里](grifter/examples)找到"sw02-eth2-{domain\uuuid}",
auto-config:false


end



end
end
````

接口
是可定义的3种接口。

-内部_接口
-数据_接口
-保留_接口



已知的示例是vmx和vqfx。

使用。唯一已知的例子是"juniper/vqfx re"。在"config.yml"文件中,每个框类型都定义了
保留的_接口数。
grifter自动将接口定义构建为一个
黑洞接口。



设备可以有48个以上端口时,
试图精确模拟生产环境时,这可能是不可取的。

grifter将自动创建"黑洞接口",以在"config.yml"文件中填写
"未定义的数据接口"端口,直至框类型
"最大数据接口"参数。

vagrantfile interface order
接口按以下顺序添加到vagrantfile中。
-内部_接口
-保留_接口
-数据_接口

接口使用udp隧道类型配置。这将在虚拟机端口之间创建一个"伪"的第1层连接,这将在虚拟机端口之间创建一个"伪"的第1层连接。示例接口定义
``yaml
数据接口:
-本地端口:1
远程用户:sw02
远程端口:1
```
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `
` ` ` ` `远程用户:sw02
远程端口:远程端口:1
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ````红宝石
n网络:私密网络,
sw01-eth1<;>;sw02-eth1<;>;sw02-eth1
:mac=>;"{get'u mac()}",
:libvirt\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\维特隧道=&"127.255.255.255.2",
:libvirt\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\U接口??`to create on虚拟机。
任何未定义的"数据接口"都将被添加为黑洞接口。

m.



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

推荐PyPI第三方库


热门话题
java将一个节点拖到另一个不运行JavaFX的节点中   java如何在spring boot中创建完全自定义的查询   java Arraylist和ArrayListBlockingQueue之间的区别是什么?   java Weblogic会中断长时间运行的线程吗   java如何调用displayAd()方法?   使用数组在两个组之间进行java IPL匹配   java如何在Eclipse中的org下创建测试套件。朱尼特   java获取屏幕上任意点的鼠标坐标   正则表达式需要java正则表达式方面的帮助   如何使用Java获取Ram大小和硬盘大小?   java如何将所需长度设置为数组中的整数?   安卓应用程序启动前的java程序已终止   swing设置要在Java代码中打印的页边距   迭代期间java故障安全迭代器的删除   java如何在main中调用方法,以便它们在同一行上输出?   编译Java:尝试播放mp3文件时出错   java如何使用Spring数据Rest在POST调用中保存嵌入对象   java JAXWS如何在端点外部注入SecurityContext