jclouds的命令行界面

序幕

我使用和为jclouds贡献了一年多的时间。 到目前为止,我已经在很多领域广泛使用了它,尤其是在Fuse生态系统中 。 它的强大之处在于它缺少一件事,该工具可用于管理jclouds也提供访问权限的任何云提供商。 类似于EC2命令之类的工具,但具有jclouds的凉爽性。 一个通用的工具,通过它您可以管理EC2,Rackspace,Opesntack,CloudStack…为其命名。

我真的很高兴,现在有了这样的工具,并且它的第一个版本即将发布。

因此,这篇文章是对新的jclouds cli的介绍,它有两种形式:

  1. 互动模式(外壳)
  2. 非互动模式(CLI)

一点历史

作为一名Karaf提交者,我围绕jclouds做的第一件事就是致力于其OSGi支持。 第二件事是为Apache Karaf进行jclouds集成。 因此,我从事了一个项目,该项目使在Karaf上安装jclouds变得非常容易,并在blob存储周围添加了第一个基本命令,并且Jclouds Karaf项目开始形成。 同时,我的朋友和同事Guillaume Nodet也开始了类似的工作,他为Jclouds Karaf做出了贡献。 该项目现在支持大多数jclouds操作,并提供了丰富的完成支持,这使其真正快速且易于使用。

当然,这个集成项目主要针对的是熟悉OSGi和Apache Karaf并且不能被视为通用工具的人员,就像我在序言中梦想的那样。

几个月前, Andrew Bayer开始考虑构建通用jclouds cli。 然后,这让我大吃一惊 :“ 我们为什么不重用在Jclouds Karaf上所做的工作来构建通用的cli?

Apache Karaf的一大优点是它易于品牌化,并且由于其模块化的基础,您可以轻松地添加/删除位以创建自己的发行版。 最重要的是,它允许您发现和使用OSGi之外的命令。

因此,创建一个量身定制的Karaf发行版是一个好主意,它具有“ 开箱即用 ”的jclouds集成,任何人都可以使用而无需了解Karaf,无论是作为交互式shell还是CLI。 这里是: Jclouds CLI 。

Jclouds CLI入门

您可以从源代码构建cli,也可以下载tar球。 提取后,您会发现一个类似以下的结构:

屏幕截图2012年7月14日的7.54.36μ.μ.

bin文件夹包含两个脚本:

  1. jclouds-cli :启动交互式shell。
  2. jcouds:用于调用jclouds操作的脚本。

zip发行版为Windows提供了等效的bat文件。

让我们从jclouds脚本开始。 该脚本有两个参数,多个选项和参数。 一般用法是:

./jclouds [类别] [操作] [选项] [参数]

  • 类别:要使用的命令类型。 例如节点,组,映像,硬件,映像等。
  • 动作:对类别执行的动作。 例如:列出,创建,销毁,运行脚本,信息等。

无论是计算服务还是Blobstore操作,所有操作都将需要提供程序或api以及该提供程序/ api的有效凭据。 所有这些都可以指定为命令的选项。 例如,要列出Amazon EC2上的所有正在运行的节点:

/jclouds node list --provider aws-ec2 --identity [my identity] --credential [my credential] --add-option [some jclouds options]

对于api,您还需要指定端点,例如,对Cloudstack的相同操作可以是:

./jclouds node list --api cloudstack --identity [my identity] --credential [my credential] --endpoint http://localhost:8080/client/api

当然,您可能不想一次又一次地指定相同的选项。 在这种情况下,您可以仅将它们指定为环境变量。 变量名称始终使用大写字母,并分别以JCLOUDS_COMPUTE_JCLOUDS_BLOBSTORE_开头 ,分别用于计算服务和blobstore操作。 因此–provider选项将与JCLOUDS_COMPUTE_PROVIDER用于计算服务,而JCLOUDS_BLOBSTORE_PROVIDER用于blob存储。

下图显示了用于访问EC2的环境设置中cli的示例用法。 这些命令在EC2上创建3个节点,然后销毁所有节点。

屏幕截图2012-09-06 at 10.59.06π.μ.

配置的环境变量是:

  • JCLOUDS_COMPUTE_PROVIDER aws-ec2
  • JCLOUDS_COMPUTE_IDENITY ????
  • JCLOUDS_COMPUTE_CREDENTIAL ???

当使用jclouds脚本时,默认情况下将使用jclouds支持的所有提供程序。 您可以通过将自定义jar放在系统文件夹下(最好使用类似目录结构的Maven)来添加自定义提供程序和api

使用交互式外壳

jclouds cli的第二种形式是交互式shell。 交互式外壳以类似的方式工作,但是它还提供了其他功能:

  • 服务可重用性
    • 服务创建一次
  • 代码完成
    • 完成命令
  • 模块化
    • 允许您仅安装所需的东西。
  • 可扩展的
    • 您可以添加自己的命令。

屏幕截图2012-09-06为11.07.03π.μ.

在上面的示例中,我们为EC2创建了可重用的服务,然后执行了一个节点列表,该列表显示了在上一个示例中创建并销毁的节点。

将交互式外壳与多个提供程序或API结合使用

交互式外壳将允许您使用不同的配置参数,帐户等为多个提供程序和api注册计算服务,甚至为同一提供程序或api注册多个服务。

屏幕截图2012年9月18日的7.34.14μ.μ.

上图显示了如何使用不同的配置参数为同一提供者创建多个服务。 它还显示了如何指定每种情况下使用的服务。 再次注意,在此示例中,未传递标识和提供者,但是将其作为环境变量提供。

交互模式的模块化性质

如上所述,交互式外壳也是模块化的,允许您在运行时添加/删除模块。 模块可以支持提供程序或api,但是可以是您可能需要的任何扩展类型。

要查看可以在交互模式下使用的可用提供程序和api的列表,可以使用features:listfeatures:install命令。 在下面的示例中,我们列出了“ openstack ”的功能和grep,然后安装了jclouds openstack-nova api。 然后,我们为其创建服务并列出我们的Openstack中的节点。

屏幕截图2012年9月18日的8.47.07μ.μ.

配置命令输出

最初,命令输出是根据最常见的云提供程序设计和格式化的。 但是,输出并非对所有提供者都是最佳的(不同的宽度等)。 此外,不同的用户需要显示不同的内容。

为了解决该问题,cli使用了类似表的输出作为命令,并具有可自动调整的列大小,以最适合命令的输出。 此外,命令的输出是完全可配置的。

每个表实例均作为表示表行的集合提供显示数据。 列标题是从配置文件中读取的。 使用JSR-233脚本表达式(默认情况下,它使用groovy)计算每个单元格的实际值,这些表达式适用于每一行和每一列。 最后,该表支持按列排序。

硬件列表命令的示例配置可以如下所示:

#The column headers
hardware.headers=[id];[ram];[cpu];[cores]#Groovy expressions for displaying id, ram, sum of (cores X speed) for each proceessor, sum of cores.
hardware.expressions=hardware.id;hardware.ram;hardware.processors.sum{it.cores*it.speed};hardware.processors.sum{it.cores}#Cell alignments. We prefer numbers to be right aligned.
hardware.alignments=left;right;right;right#Sort by the [cpu] column in descending order
hardware.shortby=[cpu]
hardware.ascending=true

使用此配置,image list命令将产生以下输出:

屏幕截图2012-09-18为11.03.56μ.μ.

我们可以修改上面的配置并添加其他列,该列将显示分配给当前硬件配置文件的卷。 为此,我们需要简要了解一下jclouds硬件对象的外观:

public interface Hardware extends ComputeMetadata {    List<? extends Processor> getProcessors();int getRam();List<? extends Volume> getVolumes();Predicate<Image> supportsImage();
}public interface Volume {String getId();Type getType();Float getSize();String getDevice();boolean isDurable();boolean isBootDevice();}

因此,为了获取所有卷的大小和卷的类型,我们可以在硬件对象上使用以下表达式: hardware.volumes.collect {it.size +“ GB” + it.type}

更新后的配置如下所示:

#The column headers
hardware.headers=[id];[ram];[cpu];[cores];[volumes]#Groovy expressions for displaying id, ram, sum of (cores X speed) for each proceessor, sum of cores.
hardware.expressions=hardware.id;hardware.ram;hardware.processors.sum{it.cores*it.speed};hardware.processors.sum{it.cores};hardware.volumes.collect{it.size + "GB " + it.type}#Cell alignments. We prefer numbers to be right aligned.
hardware.alignments=left;right;right;right;left#Sort by the [cpu] column in descending order
hardware.shortby=[cpu]
hardware.ascending=true

新配置将在EC2上产生以下输出:

屏幕截图2012-09-18为9.39.57μ.μ.

您可以在github上找到该项目: https : //github.com/jclouds/jclouds-cli 。 或者,您可以直接在以下位置下载压缩包: http : //repo1.maven.org/maven2/org/jclouds/cli/jclouds-cli/1.5.0/

参考:来自Ioannis Canellos博客博客的JCG合作伙伴 Ioannis Canellos的jclouds命令行界面 。

翻译自: https://www.javacodegeeks.com/2013/10/a-command-line-interface-for-jclouds.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中兴linux下载软件,国产操作系统中兴新支点使用WPS For Linux办公软件的体验报告...

以下将给你带来在国产操作系统中兴新支点操作系统下使用WPS For Linux办公软件的体验报告&#xff0c;WPS For Linux提供Deb、Rpm、Tar.xz、Snap软件包&#xff0c;你可以选择Tar.xz源码包编译安装&#xff0c;或在系统自带的软件中心下安装&#xff0c;也可以参考采用snap方式…

Java 教程(开发环境配置+基础语法)

Java 开发环境配置 在本章节中我们将为大家介绍如何搭建Java开发环境。 window系统安装java 下载JDK 首先我们需要下载java开发工具包JDK&#xff0c;下载地址&#xff1a;http://www.oracle.com/technetwork/java/javase/downloads/index.html&#xff0c;点击如下下载按钮&am…

数据采集工具Telegraf:简介及安装

接着上一篇博客&#xff1a;InfluxDB简介及安装&#xff0c;这篇博客介绍下Linux环境下Telegraf安装以及其功能特点。。。 官网地址&#xff1a;influxdata 官方文档&#xff1a;telegraf文档 环境&#xff1a;CentOS7.4 64位 Telegraf版本&#xff1a;0.11.1-1 一、Telegraf介…

初探小程序插件

插播公司招聘信息&#xff1a; https://cnodejs.org/topic/5a915706653c43b914684f90 小程序插件可以干嘛&#xff1f; 周二晚上&#xff08;3.13&#xff09;的一个小程序新功能发布了-【小程序插件】&#xff0c;一开始以为是小程序发布了类似npm的组件管理工具&#xff0c;…

从mysql向HBase+Phoenix迁移数据的心得总结

* 转载请注明出处 - yosql473 - 格物致知&#xff0c;经世致用 mysql -> HBase Phoenix 1.总体方案有哪些&#xff1f; 1&#xff09;通过Sqoop直接从服务器(JDBC方式)抽取数据到HBase中 因为数据量非常大&#xff0c;因此优先考虑用Sqoop和MR抽取。 使用Sqoop抽取数据有一…

玩转异步 JS :async/await 简明教程(附视频下载)

课程介绍 在软件开发领域&#xff0c;简洁的代码 > 容易阅读的代码 > 容易维护的代码&#xff0c;而 ES2017 中的 async/await 特性能让我们编写出相比回调地狱和 Promise 链式调用更直观、更容易理解的代码&#xff0c;await 关键字接收一个 Promise&#xff0c;等待代码…

分享轮子-flutter下拉刷新上拉加载

flutter下拉上拉组件轮子 什么是flutter? 首先说下flutter,估计这个应该挺多人没听过flutter这个框架,它是一个google推出的跨平台的移动应用UI框架,和React Native是同样的目的,支持三大平台:Android,Ios,还有一个是google新出的系统,忘了叫什么...本人React Native也是用过…

(8)Python判断结构

转载于:https://www.cnblogs.com/hankleo/p/9170325.html

History of program(1950-2020)

1957年 约翰巴科斯&#xff08;John Backus&#xff09;创建了是全世界第一套高阶语言&#xff1a;FORTRAN。 John Backus1959年 葛丽丝霍普&#xff08;Grace Hopper&#xff09;创造了现代第一个编译器A-0 系统&#xff0c;以及商用电脑编程语言“COBOL”&#xff0c;被誉为C…

关于 Nuxt 集成ueditor的一些坑(包括图片上传)前端部分

最近公司接了一个项目&#xff0c;里面用到富文本编辑器&#xff0c;刚开始用的是vue-quill-editor&#xff0c;这个编辑器轻量、好用。最重要的是它有专门正对nuxt的版本&#xff0c;很容易配置&#xff0c;可以放心使用&#xff0c;不用担心bug之类的&#xff0c;遇到问题&am…

*Codeforces989D. A Shade of Moonlight

数轴上$n \leq 100000$个不重叠的云&#xff0c;给坐标&#xff0c;长度都是$l$&#xff0c;有些云速度1&#xff0c;有些云速度-1&#xff0c;风速记为$w$&#xff0c;问在风速不大于$w_{max}$时&#xff0c;有几对云可能在0相遇。每一对云单独考虑。 多动一不动--相对运动。假…

undefined reference 问题各种情况分析

扒自网友文章 关于undefined reference这样的问题&#xff0c;大家其实经常会遇到&#xff0c;在此&#xff0c;我以详细地示例给出常见错误的各种原因以及解决方法&#xff0c;希望对初学者有所帮助。 1. 链接时缺失了相关目标文件&#xff08;.o&#xff09; 测试代码如下&a…

2018-2019-1 20165203 《信息安全系统设计基础》第六周学习总结

2018-2019-1 20165203 《信息安全系统设计基础》第六周学习总结 教材学习内容总结 重要知识点 I/O&#xff1a;在主存和外部设备&#xff08;例如磁盘存储器、终端和网络&#xff09;之间复制数据的过程。输入操作&#xff1a;从I/O设备复制数据到主存。输出操作&#xff1a;从…

linux 使用VI命令怎么删除输入内容,linux系统vi编辑器常用命令及使用方法。

在linux系统中编辑文档我们常用到vi编辑器。vi编辑器&#xff0c;通常称之为vi,是一种广泛存在于各种UNIX和Linux系统中的文本编辑程序。它的功能十分强大&#xff0c;但是命令繁多&#xff0c;不容易掌握&#xff0c;它可以执行输出、删除、查找、替换、块操作等众多文本操作&…

在react中使用svg的各种骚姿势

开头先抛个可供参考的项目ts-react-webpack4, 或脚手架steamer-react-ts 优势 SVG可被非常多的工具读取和修改(比如vscode)不失真, 放大缩小图像都很清晰SVG文件是纯粹的XML, 也是一种DOM结构使用方便, 设计软件可以直接导出 兼容性 上一张兼容性图表, 或到caniuse.com查看 …

3.2自定义方法

方法是类的一种行为&#xff0c;方会使我们的代码容易修改&#xff0c;方便阅读&#xff0c;实现封装和重用。比如前面使用的很多.net定义好的类的方法&#xff0c;当然我们也可以自定义方法。 3.2.1定义方法 语法&#xff1a; 访问修饰符 返回类型 方法名(参数列表) &#xff…

[Electron]仿写一个课堂随机点名小项目

自从前几个月下了抖音&#xff0c;无聊闲暇时就打会打开抖音&#xff0c;因为打开它有种莫名其妙打开了全世界的感觉... 无意中看到这个小视频&#xff1a;随机点名 于是仿写了一个课堂点名小项目&#xff0c;算是对Electron的一个简单的认识&#xff0c;有时间再深入。 项目…

linux redis安装使用,linux安装redis

Linux(CentOS)中Redis介绍、安装、使用【一篇就够】2018-05-13 13:36:16 sjmz30071360 阅读数 1590更多分类专栏&#xff1a; redis版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循CC 4.0 BY-SA版权协议&#xff0c;转载请附上原文出处链接和本声明。一、介绍Redis is…

用three.js写一个简单的3D射门游戏

这个小游戏很简单&#xff0c;一共由3个部分构成。1个平面&#xff08;球场&#xff09;&#xff0c;1个球体&#xff08;足球&#xff09;还有一个立方体&#xff08;球门&#xff09;。 上个图给你们感受一下简陋的画风&#xff08;掘金最高上传5M图片&#xff0c;原来图片都…

100份Spring面试问答-最终名单(PDF下载)

上次更新时间&#xff1a;2019年2月11日 这是有关Spring框架的一些最重要问题的摘要&#xff0c;在面试或面试测试过程中可能会要求您回答这些问题&#xff01; 您无需担心下一次面试的机会&#xff0c;因为Java Code Geeks在这里为您服务&#xff01; 您可能会被问到的大多数…