本节将主要的VMC命名按功能分类加以分组并提供典型用法。在样例中,以显示的文本表示变量,其值根据你的环境指定。
运行vmc help可以查看完整的VMC命令列表,以及支持的参数和简要说明。
获得最新版本的VMC
vmc作为Ruby gem提供,会进行持续更新,包括提供新的命令或现有命令新的选项。所以,需要执行以下命令获取最新版本的vmc:
prompt$ gem update vmc
减少在非交互模式的运行提示
默认情况下,vmc以交互模式运行,许多命令的执行会根据特定选项的值产生多种提示,要在非交互模式使用vmc,并只提供命令自身的选项,可以使用以下语句:
prompt$ vmc *command* -n --options
例如,部署应用程序并为所有提示使用默认值:
prompt$ vmc push -n
在命令行显示所有可用作参数的命令和选项:
prompt$ vmc help options
定位Cloud Foundry
在云上定位Cloud Foundry:
prompt$ vmc target api.cloudfoundry.com
定位运行在本地虚拟机上的独立的Micro Cloud Foundry:
prompt$ vmc target api..cloudfoundry.com
注:domain是初始安装Micro Cloud Foundry时所指定的值。
显示当前定位的URL:
prompt$ vmc target
显示已知的定位目标和相关授权令牌:
prompt$ vmc targets
登录和管理账户
在Cloud Foundry使用账户信息进行身份识别:
prompt$ vmc login --passwd
修改密码:
prompt$ vmcpasswd
注销当前会话:
prompt$ vmc logout
获取你的Cloud Foundry账户信息,所使用的VMC版本,以及已经消费的全部资源:
prompt$ vmc info
(仅适用Micro Cloud Foundry)注册新用户,需要管理员权限:
prompt$ vmc add-user --email --passwd
(仅适用Micro Cloud Foundry)删除注册用户,以及与该用户相关的全部应用程序和服务实例,需要管理员权限:
prompt$ vmc delete-user
部署应用程序
从包含应用程序文件(例如myapp.war或myapp.rb)的目录执行命令进行部署应用程序,这是交互式的部署方式,VMC命令会提示输入一些信息,例如应用程序名称、部署URL、程序框架、内存分配和需要绑定的服务实例。然后,命令会将应用程序部署到与当前会话关联的目标位置,展示并立即启动。
prompt$ vmc push
可以指定以下一个或全部选项传递部署参数的值;如果没有指定选项,vmc push将进行交互式提示:
prompt$ vmc push --path --url --instances --mem --no-start
appname代表应用程序的内部命名
directory代表含有应用程序的绝对或相
其中:
对本地目录名称。请注意,目录中的所有文件将会被vmcpush命令推送,因此请确保目录中只有希望被部署的文件
deploymentURL代表之后将在浏览器中调用应用程序的URL;默认是.cloudfoundry.com
instance-number代表应用程序启动的实例数量,默认是1
MB代表应用程序需要保留的内存上限,单位是MB,默认是512MB
–no-start指定不希望CloudFoundry启动应用程序,默认是自动启动
即使指定了上述全部选项,vmc push命令仍将提示输入运行信息和相关的服务实例信息。
例如:
prompt$ vmc push hello --path /usr/bob/sample-apps/hello --url hello-bob.cloudfoundry.com --instances 2 --mem 64 --no-start
更新部署
在当前目录更新部署的应用程序:
prompt$ vmc update
注:确保是指定应用程序名称(vmc apps输出的第一列),而不是部署的URL。
上述命令会立即中断当前连接到部署的应用程序的用户会话。
更新现有部署的保留内存(单位是MB),应用程序将自动重新启动:
prompt$ vmcmem
注:使用vmc stats 可以查看应用程序当前的保留内存,以及当前所使用的内存。
为现有的部署应用程序注册新的部署URL,命令将在现有已注册的URL列表中增加URL:
prompt$ vmc map
注:使用vmc apps查看所部署应用程序当前注册的URL列表。
为部署的应用程序注销URL:
prompt$ vmcunmap
修改当前部署的实例数量以调整应用程序规模(扩展和收缩):
prompt$ vmc instances
注:使用vmc apps查看所部署应用程序的实例数量。
管理部署生命周期(启动、停止、删除)
停止当前运行的部署:
prompt$ vmc stop
注:确保是指定应用程序名称(vmc apps输出的第一列),而不是部署的URL。
启动当前停止的部署:
prompt$ vmc start
重新启动当前运行的部署:
prompt$ vmc restart
删除应用程序:
prompt$ vmc delete
重命名应用程序:
prompt$ vmc rename
管理和绑定服务
显示支持的服务类型和已经供应实例的服务:
prompt$ vmc services
注:上述命令的输出会分为两个表格:第一个表格显示应用程序可用的服务类型,第二个表格显示已经创建实例的服务(使用vmc create-service命令),称之为provisioned services。使用vmc apps命令可以确定哪些服务实例当前被绑定到所部署的应用程序。
创建服务类型的新实例并分配一个名称:
prompt$ vmc create-service
注:使用vmc services查看能够创建实例的可用服务类型列表,使用第一个表格中第一列所显示的服务类型名称。
创建服务类型的新实例,分配一个名称,并立即绑定到所部署的应用程序:
prompt$ vmc create-service
将服务实例绑定到所部署的应用程序,前提是已经使用vmc push部署了应用程序:
prompt$ vmc bind-service
注:使用vmc services查看服务实例的名称(第二个表格的第一列)。
移除服务实例与应用程序的绑定:
prompt$ vmc unbind-service
删除服务实例:
prompt$ vmc delete-service
使用vmc push在部署应用程序同时绑定现有的服务实例,在两次提示中输入y,然后从所提供的列表中指定服务实例的数量。例如(vmc push命令显示的相关输出和提示):
prompt$ vmc push
...
Would you like to bind any services to 'pizza-juliet'? [yN]: y
Would you like to use an existing provisioned service [yN]? y
The following provisioned services are available:
1. Insight-19ff7b1
2. mysql-juliet
Please select one you wish to provision: 2
Binding Service: OK
Uploading Application:
...
Starting Application: OK
在部署应用程序同时创建新的服务实例,然后将新的服务实例绑定到应用程序,需要指定新服务实例的提示和信息,例如(vmc push命令显示的相关输出和提示):
prompt$ vmc push
...
Would you like to bind any services to 'pizza-juliet'? [yN]: y
Would you like to use an existing provisioned service [yN]? n
The following system services are available:
1. mongodb
2. mysql
3. postgresql
4. rabbitmq
5. redis
Please select one you wish to provision: 2
Specify the name of the service [mysql-ab63]: mysql-new
Creating Service: OK
Binding Service: OK
Uploading Application:
...
Starting Application: OK
获得CloudFoundry的目标信息
显示所支持的程序语言:
prompt$ vmc runtimes
显示所支持的程序框架:
prompt$ vmc frameworks
显示所支持的服务类型(例如MySQL和RabbitMQ),以及已经创建的这些服务类型的实例:
prompt$ vmc services
注:上述命令的输出分为两个表格:第一个表格显示应用程序可用的服务类型,第二个表格显示已经创建实例的服务(使用vmc create-service命令)。使用vmc apps命令可以确定哪些服务实例当前被绑定到所部署的应用程序。
获得应用程序信息
显示当前你的账户所部署的应用程序列表,以及实例、健康情况和相关的服务实例:
prompt$ vmc apps
显示应用程序标准的输出日志记录:
prompt$ vmc logs
注:确保是指定应用程序名称(vmc apps输出的第一列),而不是部署的URL。
显示指定应用程序最近的崩溃情况:
prompt$ vmc crashes
显示应用程序的致命错误:
prompt$ vmccrashlogs
显示所部署应用程序的每个实例的资源信息(例如内核使用、内存、磁盘空间和运行时间):
prompt$ vmc stats
列出应用程序的环境变量:
prompt$ vmcenv
为应用程序增加环境变量:
prompt$ vmcenv-add
删除之前为应用程序增加的环境变量:
prompt$ vmcenv-del
不减少用户流量的情况下更新应用程序
通常,利用Cloud Foundry开发和测试应用程序,vmc update能够很好满足要求。
不过,当应用程序处于“运行中”时,类似我们自己的www网站,需要按照以下步骤在更新应用程序时避免用户请求的减少。
我们使用新应用程序的概念,并将使用原始应用程序的URL地址。
以下是如何在不停止服务的情况下更新应用程序:
注:‘vmc update’将减少流量
vmc push [app]NEW(绑定任何共享服务,例如数据库、缓存等等)
TEST [app]NEW.cloudfoundry.com
vmc map [app]NEW [app].cloudfoundry.com
TEST [app].cloudfoundry.com多次,将在新旧应用程序之间循环
vmcunmap [app]OLD [app].cloudfoundry.com # 不会减少流量,只是结束全部新的流量
TEST
vmc delete [app]OLD