• 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 
    2016-05-27T08:12:11.308Z:
    { [Error: CERT_UNTRUSTED]
      stack: [Getter/Setter],
      __frame: 
       { name: '__1',
         line: 49,
         file: '/usr/lib/node_modules/azure-cli/lib/commands/login.js',
         prev: undefined,
         calls: 1,
         active: false,
         offset: 64,
         col: 27 },
      rawStack: [Getter] }
    Error: CERT_UNTRUSTED
      <<< async stack >>>
      at __1 (/usr/lib/node_modules/azure-cli/lib/commands/login.js:113:28)
      <<< raw stack >>>
        at SecurePair.<anonymous> (tls.js:1367:32)
        at SecurePair.emit (events.js:92:17)
        at SecurePair.maybeInitFinished (tls.js:979:10)
        at CleartextStream.read [as _read] (tls.js:471:13)
        at CleartextStream.Readable.read (_stream_readable.js:340:10)
        at EncryptedStream.write [as _write] (tls.js:368:25)
        at doWrite (_stream_writable.js:225:10)
        at writeOrBuffer (_stream_writable.js:215:5)
        at EncryptedStream.Writable.write (_stream_writable.js:182:11)
    at write (_stream_readable.js:601:24)

    这个报错是由于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.0

    但目前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.18

    执行查询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

    为不走弯路,建议开始就安装这两个版本。

  • 相关阅读:
    网络负载均衡LVS
    JS 模仿红绿灯(控制台)
    【转】wrk 压力测试的 lua脚本
    linux开机 自动挂载和启动jar包
    【转】jprofiler linux配置需要监听的程序的端口
    时间复杂度总结
    Windows Subsystem for Linux (WSL) 安装
    敬畏用户
    Golang语言HTTP客户端实践
    Groovy入门常用语法
  • 原文地址:https://www.cnblogs.com/hengwei/p/5535327.html
Copyright © 2020-2023  润新知