Ncloud CLI
  • PDF

Ncloud CLI

  • PDF

可在Classic/VPC环境下使用。

确认Ncloud CLI的初始设置方法和简单的使用方法。

参考

若想了解CLI相关的详细命令和示例,请运行CLI help命令。

初始设置

下面对使用Ncloud CLI时的安装和API认证密钥设置方法进行说明。

安装

请下载适合操作系统(Windows、Linux)的CLI最新文件。

参考

关于CLI的最新文件下载和文件配置信息,请通过下载CLI确认。

请在下载的文件夹路径(cli_window/cli_linux)中运行ncloud命令。 正常运行时会输出下方消息。

  • Windows
    C:\Users\Naver\cli_window>ncloud
    ncloud <command> [subcommand] help
    
    ncloud: error: The command does not exist. For help, input 'help' command.
    
  • Linux
    Naver@AL01221192:/mnt/c/Users/NAVER/Desktop/cli_linux$ ./ncloud
    ncloud <command> [subcommand] help
    
    ncloud: error: The command does not exist. For help, input 'help' command.
    

如果已在本地环境中安装了1.8以上版本的JRE或JDK,也可以使用下方文件。

C:\Users\Naver>javac -version
javac 1.8.0_80

连接现有的JRE和JDK

如果使用现有本地环境中已安装的JRE和JDK而不是所包含的JRE文件,则在ncloud脚本文件中将./jre8/bin/java更改为java。 此操作仅限于要使用已在当前本地环境中安装的JRE和JDK的情况。

  • 修改前
    #!/bin/bash
    HOME='./lib'
    /jre8/bin/java -jar ${HOME}/ncloud-api-cli-1.0.2-SNAPSHOT-jar-with-dependencies.jar $@
    
  • 修改后
    #!/bin/bash
    HOME='./lib'
    java -jar ${HOME}/ncloud-api-cli-1.0.2-SNAPSHOT-jar-with-dependencies.jar $@
    

设置API认证密钥

使用CLI之前,必须先完成API认证密钥的设置。

参考

关于API认证密钥的详细说明,请参考门户网站及控制台使用指南的安全设置和API指南的创建认证密钥

输入ncloud configure命令后可以输入Access KeySecret Key

Naver@AL01221192:/mnt/c/Users/Naver/Desktop/cli_linux$ ./ncloud configure
set [DEFAULT]'s configuration.
Ncloud Access Key Id [] :***js9sk$K)DA!#***
Ncloud Secret Access Key [] :***kdofFIik9D$Kdk2***
Ncloud API URL (default:https://ncloud.apigw.ntruss.com) []: 

各API认证密钥以Configure文件形式存储在用户环境主目录的.ncloud文件夹中。 如果API认证密钥输入正确,命令会正常执行。 如果输入的API认证密钥无效,则输出以下消息。

Naver@Al01221192:/mnt/c/Users/Naver/Desktop/cli_linux$ ./ncloud server getRegionList
Invalid consumer

如果认证密钥值有效,在执行输出Zone列表时将输出以下结果。

Naver@Al01221192:/mnt/c/Users/Naver/Desktop/cli_linux$ ./ncloud server getZoneList --regionNo 1
{
  "getZoneListResponse" : {
    "requestId" : "5604cb78-67c9-4d91-ae74-085152f23df3",
    "returnCode" : 0,
    "returnMessage" : "success",
    "zoneList" : [
      {
        "zone" : {
          "zoneNo" : 2,
          "zoneName" : "KR-1",
          "zoneDescription" : "加山NANG区"
        }
      }
    ]
  }
}

可使用通过Profile选项设置的Profile认证信息运行命令。

Naver@AL01221192:/mnt/c/Users/Naver/Desktop/cli_linux$ ./ncloud configure --profile example_profile
set [example_profile]'s configuration.
Ncloud Access Key Id [] :***js9sk$K)DA!#***
Ncloud Secret Access Key [] :***kdofFIik9D$Kdk2***
Ncloud API URL (default:https://ncloud.apigw.ntruss.com) []: 

调用示例如下。

Naver@Al01221192:/mnt/c/Users/Naver/Desktop/cli_linux$ ./ncloud server getZoneList --regionNo 1 --profile example_profile

命令帮助

为了顺畅使用Ncloud CLI,可在命令末尾添加help后运行以查看帮助内容。 以下命令将列出Ncloud CLI的选项和帮助,以及可使用的父命令。

$ ./ncloud help

以下命令将列出Ncloud的父命令中可使用的子命令。

$ ./ncloud server help
$ ./ncloud loadbalancer help

命令结构

Ncloud CLI在命令行中使用分段结构。 该结构从对Ncloud的默认调用开始,每个命令都有要执行操作的子命令。 在CLI中添加选项时,可以任意指定特定参数的顺序。

$ ./ncloud <command> <subcommand> [options and parameters]

指定CLI参数及选项

大多数参数值为简单的字符串或数字。 此外,还可以使用Map、List形式的参数。 List用作以下命令。 List参数可以应用空格( )或逗号(,)、添加参数声明等加以使用。

$ ./ncloud server getPublicIpInstanceList --publicIpInstanceNoList 573361 571968
$ ./ncloud server getPublicIpInstanceList --publicIpInstanceNoList 573361,571968
$ ./ncloud server getPublicIpInstanceList --publicIpInstanceNoList 573361 --publicIpInstanceNoList 571968

不包含空格字符的字符串可以用引号括起来,也可以不用引号。 但是,Map格式的字符串必须用引号括起来。 如下方示例所示,Linux、Mac OS、Unix和Windows PowerShell中可使用单引号(')或双引号("),在Windows命令提示符中使用双引号(")。

  • Windows PowerShell, Linux, MacOS, Unix
$ ./ncloud loadbalancer createLoadBalancerInstance --loadBalancerName penguin --loadBalancerRuleList 'protocolTypeCode="HTTP",loadBalancerPort="80",serverPort="80",l7HealthCheckPath="/l7check.html",proxyProtocolUseYn="N"'
  • Windows命令提示符
> ncloud loadbalancer createLoadBalancerInstance --loadBalancerName penguin --loadBalancerRuleList "protocolTypeCode='HTTP',loadBalancerPort='80',serverPort='80',l7HealthCheckPath='/l7check.html',proxyProtocolUseYn='N'"

命令输出控制

Ncloud CLI支持两种输出格式。 如无--output选项,则以默认JSON格式输出。

  • JSON(json):默认
  • XML(xml)

若要输出为XML格式,请按以下方式运行。

$ ncloud server getZoneList --output xml

Timeout设置

可设置读取超时和连接超时时间。 可按秒设置,默认值为300秒。

$ ncloud server getZoneList --read-timeout 10
$ ncloud server getZoneList --connect-timeout 5

CLI运行场景

如果使用CLI制作简单的测试场景,如下所示。

VPC环境

VPC环境中的场景如下。

  1. 创建VPC
  2. 查询Network ACL
  3. 创建子网
  4. 创建init脚本(安装并驱动Apache,使用touch命令创建index.html文件)
  5. 查询服务器镜像
  6. 查询ACG
  7. 创建服务器(设置init脚本)
  8. 创建并分配公网IP地址
  9. ACG 80号端口许可
  10. 确认结果
  • 创建VPC(VPC编号 ***224
$ ./ncloud vpc createVpc --ipv4CidrBlock 192.168.0.0/16
  • 查询已创建VPC的Default Network ACL(Network ACL编号 ***960
$ ./ncloud vpc getNetworkAclList --vpcNo ***224
  • 创建子网(子网编号 ***928
$ ./ncloud vpc createSubnet --zoneCode KR-1 --vpcNo ***224 --subnet 192.168.1.0/24 --networkAclNo ***960 --subnetTypeCode PUBLIC
  • 对创建服务器时要运行的init脚本进行创建(init脚本编号 ***751
$ ./ncloud vserver createInitScript
--initScriptContent '#!/bin/sh'$'\n''yum install -y httpd'$'\n''service httpd start'$'\n''echo '\''Hello World'\'' > /var/www/html/index.html'$'\n''chkconfig --level 2345 httpd on'
  • 服务器镜像CentOS 6.6(64bit)(产品代码(productCode)SW.VSVR.OS.LNX64.CNTOS.0606.B050
$ ./ncloud vserver getServerImageProductList  | grep `CentOS 6.6(64bit)' -C 8
 {
    "productCode": "SW.VSVR.OS.LNX64.CNTOS.0606.B050",
    "productName": "centos-6.6-64",
    "productType": {
      "code": "LINUX",
      "codeName": "Linux"
    },
    "productDescription": "CentOS 6.6(64bit)",
    "infraResourceType": {
      "code": "SW",
      "codeName": "Software"
    },
    "cpuCount": 0,
    "memorySize": 0,
    "baseBlockStorageSize": 53687091200,
    "platformType": {
      "code": "LNX64",
      "codeName": "Linux 64 Bit"
    },
    "osInformation": "CentOS 6.6 (64-bit)",
    "dbKindCode": "",
    "addBlockStorageSize": 0,
    "generationCode": ""
}
  • 查询已创建VPC的Default ACG(ACG编号*****009**)
$ ./ncloud vserver getAccessControlGroupList --vpcNo ***224
  • 用服务器镜像CentOS 6.6(64bit)创建最低配置的服务器实例(服务器实例编号 ***182
$ ./ncloud vserver createServerInstances --vpcNo ***224 --subnetNo ***928 --serverImageProductCode 'SW.VSVR.OS.LNX64.CNTOS.0606.B050'
--networkInterfaceList 'networkInterfaceOrder="0", accessControlGroupNoList=["***009"]' --initScriptNo ***751
  • 为服务器创建并分配公网IP地址(***.***.145.185)
$ ./ncloud vserver createPublicIpInstance --serverInstanceNo ***182
  • 为服务器的Network Interface中应用的ACG设置允许80号端口规则
$ ./ncloud vserver addAccessControlGroupInboundRule --vpcNo ***224 --accessControlGroupNo ***009
--accessControlGroupRuleList 'protocolTypeCode="TCP", ipBlock="0.0.0.0/0", portRange="80"'
  • 在浏览器中确认结果
    image.png

Classic环境

Classic环境中的场景如下。

  1. 查询服务器镜像
  2. 创建服务器(设置init脚本后安装并驱动Apache,使用touch命令创建index.html文件)
  3. 创建并分配公网IP地址
  4. 确认创建服务器
  • 服务器镜像CentOS 6.6(64bit)产品代码(productCode):SPSW0LINUX000044
$ ./ncloud server getServerImageProductList  | grep `CentOS 6.6(64bit)' -C 8
 {
        "productCode": "SPSW0LINUX000044",
        "productName": "centos-6.6-64",
        "productType": {
          "code": "LINUX",
          "codeName": "Linux"
        },
        "productDescription": "CentOS 6.6(64bit)",
        "infraResourceType": {
          "code": "SW",
          "codeName": "Software"
        },
        "cpuCount": 0,
        "memorySize": 0,
        "baseBlockStorageSize": 53687091200,
        "platformType": {
          "code": "LNX64",
          "codeName": "Linux 64 Bit"
        },
        "osInformation": "CentOS 6.6 (64-bit)",
        "dbKindCode": "",
        "addBlockStorageSize": 0
      }
  • 用服务器镜像CentOS 6.6(64bit)创建最低配置的服务器实例(服务器实例编号 ***385
$ ./ncloud server createServerInstances --serverImageProductCode 'SPSW0LINUX000044'
--userData 'file:///mnt/c/Users/NAVER/Desktop/cli_linux/userData.sh'
  • 创建服务器时要运行的用户文件(userData.sh)
#!/bin/sh
yum install -y httpd
service httpd start
echo 'Hello World' > /var/www/html/index.html
chkconfig --level 2345 httpd on
      {
          "createServerInstancesResponse" : {
              "requestId" : "df5aebe7-6875-49fb-91fb-2df11f67ffa5",
              "returnCode" : 0,
              "returnMessage" : "success",
              "totalRows" : 1,
              "serverInstanceList" : [
                {
                  "serverInstanceNo" : ***385,
                  ...
                } 
              ]
           }
       }
  • 为服务器创建并分配公网IP地址(***. ***.145.185)
$ ./ncloud server createPublicIpInstance --serverInstanceNo '***385'
 {
    "createPublicIpInstanceResponse" : {
        "requestId" : "ec5feb0b-9d9c-4539-bef1-81e94fc81dc6",
        "returnCode" : 0,
        "returnMessage" : "success",
        "totalRows" : 1,
        "publicIpInstanceList" : [
          {
            "publicIpInstanceNo" : ***389, 
            "publicIp" : "***.***.145.185"
          }
        ]
     }
 }
  • 在NAVER Cloud Platform的控制台中把 ***.***.145.185 公网IP地址设置为允许80号端口ACG(Server > ACG
    image.png

  • 在浏览器中确认结果
    image.png


本文对您有帮助吗?