在OpDemand壳牌项目包含命令行客户端界面的C2系统。这些蟒蛇模块OpDemand的命令和控制技术(C2)的一部分。
打开源代码
在C2壳项目已取得了开源通过OpDemand。
C2壳牌文档
开始之前
- 您将需要一个积极的C2帐户。创建一个免费的https://c2.opdemand.com/
- 说明假定OSX或Linux(Windows并未经过测试,但应工作)
安装
安装使用标准的distutils约定。
sudo的蟒蛇setup.py安装
配置
添加您的C2登录电子邮件地址为本地客户端配置。
C2本地设置--email=c2user@opdemand.com
是C2当地get会显示当前配置。
登录
发出C2登录,将使用上述配置的电子邮件地址,并提示您输入密码。
用户@框:〜/工作区/ C2壳$ C2登录
密码:
2011-06-07 08:44:12052 - 信息 - => POST https://c2core.opdemand.com/session
2011-06-07 08:44:13,095 - 信息 - GET https://c2core.opdemand.com/template
2011-06-07 09:21:21879 - 信息 - <= 200 OK,读1822个字节的应用/ JSON
[#JSON模板列表
&NBSP; {
&NBSP;#第一个模板
&NBSP;},
&NBSP; {
&NBSP;#二模板
&NBSP;}
]
2011-06-07 09:21:21881 - 信息 - (模板/清单)中0.524872s成功
找到你要部署的模板的_id值,并将其复制到剪贴板。
创建一个新的平台
选择所需的模板,并出具模板_id,这将创造一个新的平台的C2模板负荷。
用户@框:〜/工作区/ C2壳$ C2模板负荷--_ ID = 6c86dfc5ddfe464199021b8dcaf521a2
2011-06-07 09:42:36711 - 信息 - => POST https://c2core.opdemand.com/template/6c86dfc5ddfe464199021b8dcaf521a2/load
2011-06-07 09:42:38606 - 信息 - <= 201创建,读取14850字节的应用/ JSON
{
&NBSP;#模板更长JSON表示
}
2011-06-07 09:42:38757 - 信息 - (模板/负载)在2.061932s成功
列表平台
发出C2平台列表,查看您帐户中的可用平台。
用户@框:〜/工作区/ C2壳$ C2平台列表
2011-06-07 09:46:48327 - 信息 - => GET https://c2core.opdemand.com/platform
2011-06-07 09:46:48884 - 信息 - <= 200 OK,读566个字节的应用/ JSON
[
&NBSP; {
&NBSP;#您的新平台
&NBSP;}
]
2011-06-07 09:46:48885 - 信息 - (平台/列表)中0.572228s成功
这个平台的_id复制到剪贴板。
阅读平台
列表操作只显示在集合中的项目总结陈述。要查看一个平台(一个包括其嵌套组件),您必须发出读取C2平台,提供_id全表示:
用户@框:〜/工作区/ C2壳$ C2平台阅读--_ ID = 7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10:16:06050 - 信息 - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10:16:06984 - 信息 - <= 200 OK,阅读14850字节的应用/ JSON
{
&NBSP;#完整平台的代表性
}
2011-06-07 10:16:07152 - 信息 - (平台/读取)在1.117754s成功
与JSON响应工作
上述平台太长阅读。幸运的是,C2的外壳包括一个集成的JSON prettifier,使得JSON输出任何C2 shell命令更容易阅读。
只需通过管道将任何C2命令漂亮C2:
用户@框:〜/工作区/ C2壳$ C2模板读--_ ID = 6c86dfc5ddfe464199021b8dcaf521a2 | C2漂亮
2011-06-07 09:32:00646 - 信息 - => GET https://c2core.opdemand.com/template/6c86dfc5ddfe464199021b8dcaf521a2
2011-06-07 09:32:01378 - 信息 - <= 200 OK,阅读12022字节的应用/ JSON
2011-06-07 09:32:01535 - 信息 - (模板/读取)在0.904613s成功
tiers.0.name“网络层”
tiers.0.doctype“梯队”
tiers.0._rev“1-5a37d211b276deee536cd72a016af8fa”
...美化JSON休息
从标准输入读取和写入到标准输出的所有C2命令。这意味着原始JSON和美化JSON可以通过管道输送到使用UNIX风格的管道任何其他命令。 (例如grep的)。
配置平台
首先阅读平台和grep默认配置信息:
用户@框:〜/工作区/ C2壳$ C2平台阅读--_ ID = 7bbeacb1082e4810bb1a6643d024496e | C2漂亮| grep的配置
2011-06-07 10:26:29828 - 信息 - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10:26:30486 - 信息 - <= 200 OK,阅读14850字节的应用/ JSON
2011-06-07 10:26:30635 - 信息 - (平台/读取)在0.821403s成功
config.access_network“0.0.0.0/0”
config.image_id“AMI-06ad526f”
config.doctype“配置”
config._rev“1-38d720a0975e4d377ccbfd3cb7864185”
config.access_port“22”
config.cloud_name“美东1”
config.clone_.parent_id“ceee3724a3674bc096a2a6d2dfde7209”
config.clone_.parent_impl.cls_“c2core.resolve.Config”
config.admin_network“0.0.0.0/0”
config._id“ceee3724a3674bc096a2a6d2dfde7209”
config.impl.cls_“c2core.resolve.Config”
config.views.7bbeacb1082e4810bb1a6643d024496e.0.0“7bbeacb1082e4810bb1a6643d024496e”
config.views.7bbeacb1082e4810bb1a6643d024496e.0.1“配置”
metadata.config_info.access_port“监听端口的服务器上”
metadata.config_info.access_network“网络掩码大众用户”
metadata.config_info.cloud_name“名称AWS地区”
metadata.config_info.admin_network“网络掩码管理员用户”
让我们来限制所有网络访问一台主机 - 1.1.1.1/32。这将需要改变access_network和admin_network密钥。
由于配置是有自己的_id和_rev一个嵌套的文件,我们必须直接修改配置文件。要做到这一点,我们按照阅读的代表性及输送至更新操作的基于REST的约定:
用户@框:〜/工作区/ C2壳$ C2配置读取--_ ID = ceee3724a3674bc096a2a6d2dfde7209 | C2配置更新 - --access_network = 1.1.1.1 / 32 --admin_network = 1.1.1.1 / 32
2011-06-07 10:35:39643 - 信息 - 阅读从标准输入对象,CTRL-C突破...
2011-06-07 10:35:39661 - 信息 - => GET https://c2core.opdemand.com/config/ceee3724a3674bc096a2a6d2dfde7209
2011-06-07 10:35:40573 - 信息 - <= 200 OK,读692个字节的应用/ JSON
2011-06-07 10:35:40574 - 信息 - (配置/读取)在0.931527s成功
2011-06-07 10:35:40603 - 信息 - => PUT https://c2core.opdemand.com/config/ceee3724a3674bc096a2a6d2dfde7209
2011-06-07 10:35:41316 - 信息 - <= 200 OK,读694个字节的应用/ JSON
{
&NBSP;“_ id为”:“ceee3724a3674bc096a2a6d2dfde7209”
&NBSP;“_ REV”:“2-6a1cac4a1851fead776d4184e1218028”,
&NBSP;“access_network”:“1.1.1.1/32”
&NBSP;“access_port”:“22”,
&NBSP;“admin_network”:“1.1.1.1/32”
&NBSP;“clone_”:{
&NBSP;“PARENT_ID”:“ceee3724a3674bc096a2a6d2dfde7209”,
&NBSP;“parent_impl”:{
&NBSP;“cls_”:“c2core.resolve.Config”
&NBSP;}
&NBSP;},
&NBSP;“cloud_name”:“美东1”
&NBSP;“DOCTYPE”:“配置”,
&NBSP;“image_id”:“AMI-06ad526f”,
&NBSP;“实现了一套”:{
&NBSP;“cls_”:“c2core.resolve.Config”
&NBSP;},
&NBSP;“意见”:{
&NBSP;“7bbeacb1082e4810bb1a6643d024496e”:[
&NBSP;
&NBSP;“7bbeacb1082e4810bb1a6643d024496e”
&NBSP;“配置”
&NBSP;]
&NBSP;]
&NBSP;}
}
2011-06-07 10:35:41317 - 信息 - (配置/更新)中0.730138s成功
重新读取的平台配置,以确认父文档包括更新,嵌套的配置:
用户@框:〜/工作区/ C2壳$ C2平台阅读--_ ID = 7bbeacb1082e4810bb1a6643d024496e | C2漂亮| grep的配置
2011-06-07 10:37:11,131 - 信息 - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10:37:11825 - 信息 - <= 200 OK,阅读14852字节的应用/ JSON
2011-06-07 10:37:11977 - 信息 - (平台/读取)在0.862029s成功
config.access_network“1.1.1.1/32”
config.image_id“AMI-06ad526f”
config.doctype“配置”
config._rev“2-6a1cac4a1851fead776d4184e1218028”
config.access_port“22”
config.cloud_name“美东1”
config.clone_.parent_id“ceee3724a3674bc096a2a6d2dfde7209”
config.clone_.parent_impl.cls_“c2core.resolve.Config”
config.admin_network“1.1.1.1/32”
config._id“ceee3724a3674bc096a2a6d2dfde7209”
config.impl.cls_“c2core.resolve.Config”
config.views.7bbeacb1082e4810bb1a6643d024496e.0.0“7bbeacb1082e4810bb1a6643d024496e”
config.views.7bbeacb1082e4810bb1a6643d024496e.0.1“配置”
metadata.config_info.access_port“监听端口的服务器上”
metadata.config_info.access_network“网络掩码大众用户”
metadata.config_info.cloud_name“名称AWS地区”
metadata.config_info.admin_network“网络掩码管理员用户”
启动平台
随着排队的地方我们的AWS凭据,我们的平台,我们已经准备好了。发出C2平台开始,让业务流程开始:
用户@框:〜/工作区/ C2壳$ C2平台启动--_ ID = 7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10:42:52849 - 信息 - => POST https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e/start
2011-06-07 10:42:53816 - 信息 - <= 202接受,阅读0字节的应用/ JSON
2011-06-07 10:42:53816 - 信息 - (平台/启动)的0.981219s成功
遵循平台的进步,阅读完整的平台,代表和grep所有嵌套对象的状态:
用户@框:〜/工作区/ C2壳$ C2平台阅读--_ ID = 7bbeacb1082e4810bb1a6643d024496e | C2漂亮| grep的状态
2011-06-07 10:43:06530 - 信息 - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10:43:07228 - 信息 - <= 200 OK,阅读22227字节的应用/ JSON
2011-06-07 10:43:07451 - 信息 - (平台/读取)在0.935643s成功
tiers.0.status_.value“建设”
tiers.0.keypair.status_.detail“密钥对生成”
tiers.0.keypair.status_.value“建”
tiers.0.sg.status_.detail“规则成功授权”
tiers.0.sg.status_.value“建”
tiers.1.status_.value“建设”
tiers.1.server.status_.detail“等待运行,目前正在等待”
tiers.1.server.status_.value“建设”
status_.detail“开始操作触发”
status_.value“启动”
我们可以看到在平台级的地位正在启动。重新发出该命令的次数,以“轮询”状态。 Grepping的状态也是示范该组件目前转换非常有用。一旦该平台完成后,状态应该如下所示:
用户@框:〜/工作区/ C2壳$ C2平台阅读--_ ID = 7bbeacb1082e4810bb1a6643d024496e | C2漂亮| grep的状态
2011-06-07 10:44:21015 - 信息 - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10:44:21736 - 信息 - <= 200 OK,阅读27129字节的应用/ JSON
2011-06-07 10:44:21988 - 信息 - (平台/读取)在0.990599s成功
tiers.0.status_.detail“启动成功”
tiers.0.status_.value“跑”
tiers.0.keypair.status_.detail“密钥对生成”
tiers.0.keypair.status_.value“跑”
tiers.0.sg.status_.detail“规则成功授权”
tiers.0.sg.status_.value“跑”
tiers.1.status_.detail“启动成功”
tiers.1.status_.value“跑”
tiers.1.server.status_.detail“听众准备在22 / TCP”
tiers.1.server.status_.value“跑”
status_.detail“开始运行成功”
status_.value“跑”
注意与服务器监听准备好22 / TCP“运行”父级状态。我们的平台已准备就绪。
使用平台
所有平台发布有关如何使用它们的信息。大多数平台上发布的一些组合:
- 网址
- 主机名/端口组合
- 登录
- 密码
如果我们阅读平台和grep的发布,我们可以看到这个平台上发表了简单的SSH网址:
用户@框:〜/工作区/ C2壳$ C2平台阅读--_ ID = 7bbeacb1082e4810bb1a6643d024496e | c2的漂亮| grep的发布
2011-06-07 10:51:30694 - 信息 - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10:51:31764 - 信息 - <= 200 OK,阅读27129字节的应用/ JSON
2011-06-07 10:51:32038 - 信息 - (平台/读取)在1.367026s成功
tiers.1.server.publish.access_url“SSH://ubuntu@ec2-50-19-55-84.compute-1.amazonaws.com/”
metadata.publish_info.access_url“URL来访问的平台”
一个常见的模式是平台发布:
- 管理URL
- 管理员登录
- 管理员密码
- 访问URL
停止平台
一旦该平台已停止,其状态会是这个样子:
用户@框:〜/工作区/ C2壳$ C2平台阅读--_ ID = 7bbeacb1082e4810bb1a6643d024496e | C2漂亮| grep的状态
2011-06-07 10:57:51345 - 信息 - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10:57:52128 - 信息 - <= 200 OK,阅读27966字节的应用/ JSON
2011-06-07 10:57:52424 - 信息 - (平台/读取)在1.093576s成功
tiers.0.status_.detail“成功停止”
tiers.0.status_.value“停止”
tiers.0.keypair.status_.detail“密钥对生成”
tiers.0.keypair.status_.value“停止”
tiers.0.sg.status_.detail“规则成功授权”
tiers.0.sg.status_.value“停止”
tiers.1.status_.detail“成功停止”
tiers.1.status_.value“停止”
tiers.1.server.status_.detail“等待停了下来,目前已停止”
tiers.1.server.status_.value“停止”
status_.detail“停止操作成功”
status_.value“停止”
该平台仍然存在于云,但它不再承担昂贵的计算成本(它是,但是招致忽略的存储成本)。你也不再承担C2平台的费用。在这一点上,你的平台成本有效地一无所获。
平台可以停止,并开始无极限。
摧毁平台
要真正消灭所有包含在你的平台上的云组件,您必须发出一个C2平台,摧毁并提供目标平台的_id:
用户@框:〜/工作区/ C2壳$ C2平台摧毁--_ ID = 7bbeacb1082e4810bb1a6643d024496e
2011-06-07 11:04:10,667 - 信息 - => POST https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e/destroy
2011-06-07 11:04:11953 - 信息 - <= 202接受,阅读0字节的应用/ JSON
2011-06-07 11:04:11953 - 信息 - (平台/破坏)的1.300462s成功
删除平台
如果列出的平台,你会看到被破坏的平台依然存在:
用户@框:〜/工作区/ C2壳$ C2平台列表| C2漂亮
2011-06-07 11:12:02771 - 信息 - => GET https://c2core.opdemand.com/platform
2011-06-07 11:12:03149 - 信息 - <= 200 OK,读1577个字节的应用/ JSON
2011-06-07 11:12:03150 - 信息 - (平台/列表)中0.394324s成功
0.views.7bbeacb1082e4810bb1a6643d024496e.0.0“7bbeacb1082e4810bb1a6643d024496e”
0.time_.disconnect.date_“1307466249.487580”
0.time_.stop.date_“1307465858.607597”
0.time_.start.date_“1307465019.767619”
0.time_.build.date_“1307465019.475195”
0.time_.destroy.date_“1307466249.487347”
0.time_.connect.date_“1307466240.220381”
0.status_.detail“destroy操作成功”
0.status_.value“毁”
0.doctype“平台”
0._rev“7-38fe44c5a900894adf48f4a416c94338”
0.template.cls_“lib.platform.vanilla.natty.UbuntuNattyPlatform”
0._id“7bbeacb1082e4810bb1a6643d024496e”
0.state.running假
0.state.transitioning假
0.state.built假
0.impl.cls_“lib.platform.vanilla.natty.UbuntuNattyPlatform”
0.interval_.destroy 9.3936290740966797
0.interval_.stop 33.600441932678223
0.interval_.build 57.54404091835022
0.interval_.start 57.836580991744995
从时间间隔你可以看到它了:
- 58秒开始这个平台
- 33秒停止
- 9秒钟就可以毁掉
您可以随时重新开始摧毁平台,并再次重建的云组件。然而,为了完成删除平台及其嵌套的文件,你必须发出一个C2平台删除:
用户@框:〜/工作区/ C2壳$ C2平台删除--_ ID = 7bbeacb1082e4810bb1a6643d024496e
2011-06-07 11:15:45235 - 信息 - =>删除https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 11:15:46474 - 信息 - <= 204没有内容,阅读0字节的应用程序/ JSON
2011-06-07 11:15:46474 - 信息 - (平台/删除)在1.252582s成功
为了确认,我们可以看到我们的平台名单现在是空的:
用户@框:〜/工作区/ C2壳$ C2平台列表
2011-06-07 11:15:51890 - 信息 - => GET https://c2core.opdemand.com/platform
2011-06-07 11:15:52296 - 信息 - <= 200 OK,读2个字节的应用/ JSON
2011-06-07 11:15:52297 - 信息 - (平台/列表)中0.423616s成功
注销
通过发出C2的信息,我们可以看到我们的会话的状态:
用户@框:〜/工作区/ C2壳$ C2信息
2011-06-07 11:17:11,656 - 信息 - => GET https://c2core.opdemand.com/session/73c2e9b49d01c695fb6c74927b8eb0eee5cdc82c2064cd728a8033eb83ea5b95
2011-06-07 11:17:12,134 - 信息 - <= 200 OK,读4082个字节的应用/ JSON
{
&NBSP;“账户”:“C2-opdemand”
&NBSP;“电子邮件”:“gabriel@opdemand.com”
&NBSP;“expires_at”:“周五,2011年上午08时44分6月10日”
&NBSP;“的session_id”:“73c2e9b49d01c695fb6c74927b8eb0eee5cdc82c2064cd728a8033eb83ea5b95”
}
2011-06-07 11:17:12,138 - 信息 - (信息)在0.497018s成功
注销仅仅是C2登出:
用户@框:〜/工作区/ C2壳$ C2注销
2011-06-07 11:17:44903 - 信息 - =>删除https://c2core.opdemand.com/session/73c2e9b49d01c695fb6c74927b8eb0eee5cdc82c2064cd728a8033eb83ea5b95
2011-06-07 11:17:45330 - 信息 - <= 204没有内容,阅读0字节的应用程序/ JSON
2011-06-07 11:17:45330 - 信息 - (注销)在0.443405s成功
用户@框:〜/工作区/ C2壳$ C2信息
2011-06-07 11:17:49025 - 信息 - (信息)在0.000376s成功
关于C2
OpDemand的指挥与控制技术(C2)自动化的云计算基础架构的部署和管理。与接口一样简单“启动,停止,克隆和销毁,”C2向你的云指令
要求:
- 在Python中
评论没有发现