在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
----
-第一个开源版本
它已经在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
/>欢迎所有请求!我不喜欢。
…代码::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
----
-第一个开源版本