Azure CLI的版本问题
Azure支持多种管理方法。命令行方法有:
- PowerShell,PowerShell只能运行在Windows上
- Azure CLI,而Azure CLI可以运行在Windows、MAC以及Linux上
如果能够熟悉Azure CLI,在各种平台的命令格式都相同。
在Windows上和MAC上安装Azure CLI只要下载安装软件包就可以了,但在Linux上安装,需要安装NodeJS和NPM,然后用npm安装Azure-cli。安装过程和方法在前面都介绍过,请参考:
http://www.cnblogs.com/hengwei/p/5183493.html
由于Azure China已经支持ARM模式,但在用Azure CLI使用ARM的时候,会遇到多种报错信息。本文将介绍目前如何使用Azure CLI管理Azure China的ARM模式。
1. NodeJS版本
在Ubuntu的Linux下,安装Azure CLI的方式是:apt-get install node; apt-get install npm; npm install -g azure-cli
其中apt-get的source list请参考:
http://wiki.ubuntu.org.cn/%E6%A8%A1%E6%9D%BF:14.04source
在CentOS的Linux下,安装Azure CLI的方式是:yum install nodejs; apt-get install npm; npm install -g azure-cli
Epel的repo请参考:
http://www.cnblogs.com/hengwei/p/5183493.html
npm的国内源请参考:
http://www.cnblogs.com/hengwei/p/5183493.html
安装完成后,就可以使用Azure的CLI了。
但在这种模式下,切换到ARM时,会有报错:
[root@hwarmvm01 ~]# azure login -e AzureChinaCloud -u admin@xxxx.partner.onmschina.cn
info: Executing command login
Password: ********
+ Authenticating...
error: CERT_UNTRUSTED
info: Error information has been recorded to /root/.azure/azure.err
error: login command failed [root@hwarmvm01 ~]# cat /root/.azure/azure.err
--27T08::.308Z:
{ [Error: CERT_UNTRUSTED]
stack: [Getter/Setter],
__frame:
{ name: '__1',
line: ,
file: '/usr/lib/node_modules/azure-cli/lib/commands/login.js',
prev: undefined,
calls: ,
active: false,
offset: ,
col: },
rawStack: [Getter] }
Error: CERT_UNTRUSTED
<<< async stack >>>
at __1 (/usr/lib/node_modules/azure-cli/lib/commands/login.js::)
<<< raw stack >>>
at SecurePair.<anonymous> (tls.js::)
at SecurePair.emit (events.js::)
at SecurePair.maybeInitFinished (tls.js::)
at CleartextStream.read [as _read] (tls.js::)
at CleartextStream.Readable.read (_stream_readable.js::)
at EncryptedStream.write [as _write] (tls.js::)
at doWrite (_stream_writable.js::)
at writeOrBuffer (_stream_writable.js::)
at EncryptedStream.Writable.write (_stream_writable.js::)
at write (_stream_readable.js::)
这个报错是由于nodejs的版本太低造成的:
root@hwubuntu02:~# node -v
v0.10.25
需要升级到4.x的版本。升级步骤如下文:
https://nodejs.org/en/download/package-manager/#installing-node-js-via-package-manager
我采用的是CentOS的机器,具体方法如下:
curl --silent --location https://rpm.nodesource.com/setup_4.x | bash -
yum install -y nodejs
安装完成后,查看nodejs的版本:
[root@hwarmvm01 ~]# node -v
v4.4.5
再执行登陆的命令:
[root@hwarmvm01 ~]# azure login -e AzureChinaCloud -u admin@xxxx.partner.onmschina.cn
info: Executing command login
Password: ********
|info: Added subscription xxxx1
info: Added subscription xxxx2
info: Setting subscription "xxxx1" as default
+
info: login command OK
[root@hwarmvm01 ~]# azure account set xxxx1
info: Executing command account set
info: Setting subscription to "xxxx1" with id "xxxxxxxx".
info: Changes saved
info: account set command OK
2. Azure-cli的版本
登陆后,执行ARM的命令:
[root@hwarmvm01 ~]# azure vm list
info: Executing command vm list
+ Getting virtual machines
error: The resource type 'virtualMachines' could not be found in the namespace 'Microsoft.Compute' for api version '2016-03-30'. The supported api-versions are '2015-05-01-preview,2015-06-15'.
info: Error information has been recorded to /root/.azure/azure.err
error: vm list command failed
仍然有报错,此时的报错是说api的版本不匹配。这个原因是Azure China的ARM版本和Global的不同。用npm安装的版本是0.10.0:
[root@hwarmvm01 ~]# azure
info: _ _____ _ ___ ___
info: /_\ |_ / | | | _ \ __|
info: _ ___/ _ \__/ /| |_| | / _|___ _ _
info: (___ /_/ \_\/___|\___/|_|_\___| _____)
info: (_______ _ _) _ ______ _)_ _
info: (______________ _ ) (___ _ _)
info:
info: Microsoft Azure: Microsoft's Cloud Platform
info:
info: Tool version 0.10.
但目前Azure China要求的版本是0.9.x,比如0.9.18:
https://github.com/Azure/azure-xplat-cli/releases/tag/v0.9.18-hotfix
下载:
wget https://github.com/Azure/azure-xplat-cli/archive/v0.9.18-hotfix.tar.gz
先卸载原有Azure CLI:
cd /usr/local/lib
npm uninstall azure-cli
再安装:
npm install -g /root/v0.9.18-hotfix.tar.gz
安装完成后查看Azure CLI的版本:
[root@hwarmvm01 ~]# azure
info: _ _____ _ ___ ___
info: /_\ |_ / | | | _ \ __|
info: _ ___/ _ \__/ /| |_| | / _|___ _ _
info: (___ /_/ \_\/___|\___/|_|_\___| _____)
info: (_______ _ _) _ ______ _)_ _
info: (______________ _ ) (___ _ _)
info:
info: Microsoft Azure: Microsoft's Cloud Platform
info:
info: Tool version 0.9.
执行查询VM的命令:
[root@hwarmvm01 ~]# azure vm list
info: Executing command vm list
+ Getting virtual machines
data: ResourceGroupName Name ProvisioningState PowerState Location Size
data: ----------------- --------- ----------------- ---------- --------- -----------
data: HWARM01 hwarmvm01 Succeeded VM running chinaeast Standard_A1
data: HWERTEST hwarm01 Succeeded VM running chinaeast Standard_A1
info: vm list command OK
总结:
由于nodejs的版本和Azure-cli版本的问题,Azure China的ARM不能正常使用。正确的姿势应该是:
1. 采用4.x的nodejs
2. 采用0.9.x的Azure-cli
为不走弯路,建议开始就安装这两个版本。
Azure CLI的版本问题的更多相关文章
- Windows系统安装Azure CLI
本文将介绍在Windos系统下如下安装CLI 1.打开Azure官方链接:https://www.azure.cn/downloads/ 2.按照向导进行安装 3.打开Windows Powershe ...
- Azure CLI 简单入门
Azure CLI 是什么 Azure 命令行接口 (CLI) 是用于管理 Azure 资源的 Microsoft 跨平台命令行体验. Azure CLI 易于学习,是构建适用于 Azure 资源的自 ...
- Linux上使用Azure CLI来管理Azure
在Windows上我们有强大的Powershell提供各种命令来管理Azure的服务,在Linux上微软提供了基于Node.JS的跨平台的Azure Command Line来帮助Linux用户来管理 ...
- 使用 Azure CLI 创建 Windows 虚拟机
Azure CLI 用于从命令行或脚本创建和管理 Azure 资源. 本指南详细介绍如何使用 Azure CLI 部署运行 Windows Server 2016 的虚拟机. 部署完成后,我们连接到服 ...
- 使用 Azure CLI 管理 Azure 虚拟网络和 Linux 虚拟机
Azure 虚拟机使用 Azure 网络进行内部和外部网络通信. 本教程将指导读者部署两个虚拟机,并为这些 VM 配置 Azure 网络. 本教程中的示例假设 VM 将要托管包含数据库后端的 Web ...
- 使用 Azure CLI 管理 Azure 磁盘
Azure 虚拟机使用磁盘来存储 VM 操作系统.应用程序和数据. 创建 VM 时,请务必选择适用于所需工作负荷的磁盘大小和配置. 本教程介绍如何部署和管理 VM 磁盘. 学习内容: OS 磁盘和临时 ...
- 使用 Azure CLI 创建和管理 Linux VM
Azure 虚拟机提供完全可配置的灵活计算环境. 本教程介绍 Azure 虚拟机的基本部署项目,例如选择 VM 大小.选择 VM 映像和部署 VM. 你将学习如何执行以下操作: 创建并连接到 VM 选 ...
- 使用 Azure CLI 创建 Linux 虚拟机
Azure CLI 用于从命令行或脚本创建和管理 Azure 资源. 本指南详细介绍了如何使用 Azure CLI 部署运行 Ubuntu 服务器的虚拟机. 服务器部署以后,将创建 SSH 连接,并且 ...
- 使用 Azure CLI 在 Azure China Cloud 云平台上手动部署一套 Cloud Foundry
这篇文章将介绍如何使用 Azure CLI 在 Azure China Cloud 云平台上手动部署一套 Cloud Foundry.本文的目的在于: 了解作为 PaaS 的 Cloud Foundr ...
随机推荐
- 查看oracle当前连接数和进程数
查询数据库当前进程的连接数: select count(*) from v$process; 查看数据库当前会话的连接数: select count(*) from v$session; 查看数据库的 ...
- java 跨数据库导入大数据
java 跨数据库导入大数据 /** * java程序跨服务器跨数据库批量导入导出百万级数据 * @param args * @throws Exception */ public static vo ...
- Hadoop相关知识整理系列之一:HBase基本架构及原理
1. HBase框架简单介绍 HBase是一个分布式的.面向列的开源数据库,它不同于一般的关系数据库,是一个适合于非结构化数据存储的数据库.另一个不同的是HBase基于列的而不是基于行的模式.HBas ...
- android 修改源码framework后如何编译【转】
本文转载自:https://blog.csdn.net/fuchengbo000/article/details/43193801 1.如果在framework/base/core/res/res下添 ...
- ibecon后台运行
程序被硬关闭后,只能执行这三个回调,而且必须写在appdelegate中,退出ibeacons信息区域时会有延时10秒左右,进入时无延时 - (void)locationManager:(CLLoca ...
- 如何修改windows系统远程桌面默认端口
此文档概述如何修改windows系统远程桌面的默认端口,众所周知windows系统默认的远程桌面端口是3389,这样对于开启远程桌面的计算机有一定的安全威胁,修改远程桌面的默认端口可以提高系统的安全性 ...
- Qt之密码框不可全选、复制、粘贴无右键菜单等
转载---> http://blog.sina.com.cn/s/blog_a6fb6cc90101artk.html 在做用户登录界面的时候,往往会用到密码框,则其中的一些功能也要求与普通的输 ...
- Db2数据库在Linux下的安装和配置
一.DB2数据库的安装和配置: 1.安装完成后,需要增加三个操作系统的组和三个操作系统用户,如下: groupadd -g 999 db2iadm1 #(管理实例的组) groupadd -g 99 ...
- ubuntu16.04下安装配置深度学习环境(Ubuntu 16.04/16.10+ cuda7.5/8+cudnn4/5+caffe)
主要参照以下两篇博文:http://blog.csdn.net/g0m3e/article/details/51420565 http://blog.csdn.net/xuzhongxiong/a ...
- 20 Python 常用模块
collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict. ...