在XenServer上部署虚拟机的命令行工具。

strikepackage的Python项目详细描述


StrikePackage是一个命令行工具,用于在Citrix XenServer上创建和设置虚拟机。它支持任何可以与Xenser6.2sdk一起工作的XenServer。
它已经在Xenser5.6、6.0.2、6.1和6.2上测试过。

虽然您可以使用此工具简单地克隆虚拟机,但StrikePackage的主要目的是获得一个配置有"cloud init&l"的虚拟机。t;http://cloudinit.readthedocs.org/en/latest/index.html>;``在线,在右侧IP上,并连接到puppet服务器,以便它可以运行清单。为此,stripepackage支持与"mchm<;https://github.com/pwyliu/magna carta holy metadata"集成,后者是一个简单的flask应用程序,用于托管cloud init userdata,后者是"puppet http api<;http://docs.puppetlabs.com/guides/rest-api.html>;"。这些api一起提供了一种无需使用xencenter就可以自动部署机器的方法。这很好,因为xencenter有时是个大麻烦。stripepackage从用户那里收集网络、主机名和其他信息。strikepackage根据您提供的模板生成cloud init用户数据。模板是用"jinja2模板语言"编写的,lt;http://jinja.pocoo.org/docs/>;`(有关详细信息,请参见下文)。
stripepackage然后将用户数据上传到mchm,并使用xenapi克隆vm。vm以"url="内核参数开头。cloud init使用这个内核参数从mchm获取用户数据并引导vm。虚拟机启动后,cloud init已经"给home打了电话"lt;http://cloudinit.readthedocs.org/en/latest/topics/examples.html;call-a-url-when-finished>;``到mchm,puppet代理请求了一个证书,stripepackage使用puppet api签署新节点csr。
木偶表演运行,一切正常。成功!

要求
----

*python 2.7.6+



安装带有PIP的撞销组件。

…代码::bash

pip install strikepackage

2。在使用删除线包之前,需要创建一个*config.yaml*文件并针对您的环境对其进行编辑。示例配置包含更多信息。

…代码::bash

#mkconfig创建/home/$user/.stripepackage并放置示例文件。
stripepackage mkconfig
cd~/.stripepackage
cp examples/config.yaml config.yaml
vim config.yaml


3。在xencenter中,用在*config.yaml*

4中配置的字符串标记要克隆的xenserver模板。如果您使用的是mchm,请在您在*config.yaml*

中配置的模板目录中创建*userdata.jinja2*和*metadata.jinja2*。代码::bash

cd~/.strikepackage
cp examples/*.jinja2 templates/
cd templates/
vim userdata.jinja2
vim metadata.jinja2


5.如果您正在使用puppet,请确保您有一个密钥和证书,并且已经配置了*config.yaml*


6。现在你可以运行罢工包装了。主调用如下所示。代码::bash

删除包部署https://myxenserver.ho.domain.local



_api.html>;``您需要做两件事:

1。在puppet master上生成一个证书和密钥,用于strikepackage

2。在puppet master上配置*auth.conf*以允许访问*/certificate_status*端点

generate the certificate with`puppet cert generate<;https://docs.puppetlabs.com/references/3.stable/man/cert.html>;`。您应该为每个用户创建一个唯一的证书。

…代码::bash

将这些文件和CA证书复制到工作站上的
/home/$user/.strikepackage/keys。
cd$(puppet master--configprint ssldir)
find。| grep strikepackage
查找。| grep ca_crt

允许通过在*auth.conf*中创建acl来访问*/certificate_status*。下面是一个例子。有关详细信息,请参见"auth.conf文档"https://docs.puppetlabs.com/guides/rest_auth_conf.html>;`。

……代码::bash

n使用"jinja2模板语言"lt;http://jinja.pocoo.org/docs/>;`。mchm的工作原理是使用cloud init的"no cloud net"<;http://cloudinit.readthedocs.org/en/latest/topics/data source s.html"no cloud">;`"数据源"<;http://smoser.brickies.net/ubuntu/nocloud/>;`。stripepackage在template目录中查找两个要呈现并上载到mchm的文件:*userdata.jinja2*和*metadata.jinja2*

唯一的硬性要求是,cloud init必须在完成时"phone home<;http://cloudinit.readthedocs.org/en/latest/topics/examples.html""call-a-url-when-finished">;``到mchms phonehome api端点。这就是strikepackage知道vm联机并完成引导的方式。有关详细信息,请参阅~/.stripepackage/examples中的示例userdata模板。

您可以使用以下任何变量:

…代码::python

{
'sp廑tag':'strikepackage',来自config.yaml
'poolmaster':('my廑xenserver廑name','ad26311d-da4b-48af-ab84-5aa82be42f8d'),'a tuple of(name,xen廑uuid)
"模板":("我的模板名","26982928-E8D5-6AAB-7ADE-66CDF3A900DA"),"一组(名称,Xen Uuid)
"网络":("我的网络名","0C2CDDA95-F642-e0e2-5042-c1e597a435fa"),"一组(名称,Xen Uuid)
"IID":"4b980605080f341dfa255cac95d0128"7d',uuid.uuid4().hex
"rand掔pass":"2905922eb1f34110ba81080206bb9b02e85c8faf6e554311a2b801027dbe1b78",一个随机生成的密码。仅供临时使用!

"主机名":"我的主机名",用户输入
"fqdn":"我的主机名.ho.mydomain.local",用户输入
"dhcp":false,用户输入
'IP':'192.168.10.42',用户输入
'gw':'192.168.10.1',用户输入
'nw':'192.168.10.0',用户输入
'broadcast':'192.168.10.255',用户输入
'netmask':'255.255.255.0',用户输入
'dns懔server':'192.168.10.15 192.168.10.16 192.168.10.17',来自config.yaml。模板中是"dns_servers",配置中是"dns_serverstring"。
"dns_searchdomain":"ho.mydomain.local",来自config.yaml

"mchm_enable":true,来自config.yaml
"mchm_use_zeroconf":true,#从config.yaml
"mchm_max_polltime":600,从config.yaml
"mchm_templatedir":"/home/my_user/.strikepackage/templates",从config.yaml
"mchm_url":"https://mchm.mydomain.local",#从config.yaml
"mchm_vm_url":u'http://169.254.169.254/api/53c7218b4ecee3043ee6e638/',由mchm api调用返回
"mchm_id":u'53c7218b4ecee3043ee6e638';由mchm api调用返回

"puppet_enable":true,#从config.yaml
"puppet_ca cert":/home/my_user/.stripepackage/keys/ca_crt.pem',从config.yaml
"puppet_key":/home/my_user/.stripepackage/keys/stripepackage.crt',从config.yaml
"puppet_cert":/home/my_user/.stripepackage/keys/stripepackage.key',从config.yaml
'puppet_url':'https://puppet.mydomain.local:8140','from config.yaml
'puppet戋environment':'ops','from config.yaml
'puppet戋cooldown':30,'from config.yaml

'hipchat_enable:true,from config.yaml
"hipchat_api_token":"a_token",from config.yaml
"hipchat_roomid":"chatopzzzzz",from config.yaml
"hipchat_from":"strikepkg",from config.yaml

/>欢迎所有请求!我不喜欢。

*run.py*。

…代码::bash

git clone https://github.com/pwyliu/strikepackage.git
cd strikepackage
./run.py mkconfig
./run.py--help




release history
===

<0.5.3
----
-修复hostna中的破折号ME错误

0.5.2
----
-小错误修复
-文档改进

>0.5.1
----
-修复清单


>0.5.0
----
-第一个开源版本

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

推荐PyPI第三方库


热门话题
java使用ObjectOutput/InputStream从自定义位置读/写   Java队列数组只打印出打印方法中for循环中的最后一个元素   java如何使用searchManager搜索和筛选listview   java ValueAnimator更改背景颜色   java什么是AOSP工具链?   序列化Java/Serializable仅覆盖已更改的对象   java Android单例类仅在第二次刷新时更新   将文本追加到JTextPane时,JTextPane的java滚动条不可见   java行为和繁忙指示器   javaspring,Thymeleaf和CSS如何给错误着色   java如何在两个测试类之间共享外部资源?   java Druid longSum度量未填充   按下按钮时,java列表不会显示(+字符串参数“流派”不存在)   java在Hibernate中如何延迟加载子记录?   java为对象提供随机统计信息   java如何使用GWT编辑器框架编辑多值字段?