Sunday, April 17, 2016

aliyun client

容器集群api访问

curl --insecure --cert ~/.docker/aliyun/ClusterName/cert.pem --key ~/.docker/aliyun/ClusterName/key.pem https://123.123.123.123:1234/projects/

or

ano@node1:~$ cat .curlrc
cert = /home/ano/cert/cert.pem
key = /home/ano/cert/key.pem
insecure =
curl https://123.123.123.123:1234/projects/

服务器安全(安骑士)Agent如何卸载

#!/bin/bash

#check linux Gentoo os 
var=`lsb_release -a | grep Gentoo`
if [ -z "${var}" ]; then 
var=`cat /etc/issue | grep Gentoo`
fi

if [ -d "/etc/runlevels/default" -a -n "${var}" ]; then
LINUX_RELEASE="GENTOO"
else
LINUX_RELEASE="OTHER"
fi

stop_aegis(){
killall -9 aegis_cli >/dev/null 2>&1
killall -9 aegis_update >/dev/null 2>&1
killall -9 aegis_cli >/dev/null 2>&1
killall -9 AliYunDun >/dev/null 2>&1
killall -9 AliHids >/dev/null 2>&1
killall -9 AliYunDunUpdate >/dev/null 2>&1
    printf "%-40s %40s\n" "Stopping aegis" "[  OK  ]"
}

remove_aegis(){
if [ -d /usr/local/aegis ];then
    rm -rf /usr/local/aegis/aegis_client
    rm -rf /usr/local/aegis/aegis_update
rm -rf /usr/local/aegis/alihids
fi
}

uninstall_service() {
   
   if [ -f "/etc/init.d/aegis" ]; then
/etc/init.d/aegis stop  >/dev/null 2>&1
rm -f /etc/init.d/aegis 
   fi

if [ $LINUX_RELEASE = "GENTOO" ]; then
rc-update del aegis default 2>/dev/null
if [ -f "/etc/runlevels/default/aegis" ]; then
rm -f "/etc/runlevels/default/aegis" >/dev/null 2>&1;
fi
    elif [ -f /etc/init.d/aegis ]; then
         /etc/init.d/aegis  uninstall
   for ((var=2; var<=5; var++)) do
if [ -d "/etc/rc${var}.d/" ];then
rm -f "/etc/rc${var}.d/S80aegis"
   elif [ -d "/etc/rc.d/rc${var}.d" ];then
rm -f "/etc/rc.d/rc${var}.d/S80aegis"
fi
done
    fi

}

stop_aegis
uninstall_service
remove_aegis

printf "%-40s %40s\n" "Uninstalling aegis"  "[  OK  ]"





如何从源码直接运行:

$ git clone https://github.com/aliyun/aliyun-cli.git
$ cd aliyuncli/aliyuncli
$ python aliyuncli.py ecs DescribeRegions --output json

源码下载后, 可以不安装直接运行, 前提是要安装阿里云python版SDK.

$ pip install virtualenv
$ virtualenv venv
$ . venv/bin/activate
#for ecs
$ pip install aliyun-python-sdk-ecs
#for oss
$ pip install aliyun-python-sdk-oss
$ pip install aliyuncli
#命令行自动补全

$complete -C '~/venv/bin/aliyun_completer' aliyuncli
$echo "complete -C '~/venv/bin/aliyun_completer' aliyuncli">>~/.bash_profile

$ aliyuncli configure(aliyuncli ecs ConfigVersion)
$ cat ~/.aliyuncli/configure
[default]
region = cn-beijing

$aliyuncli configure list

创建实例

$aliyuncli ecs ImportInstance --filename ali-ecs.json
$cat ali-ecs.json
{
    "RegionId": "cn-beijing",
"ZoneId": "cn-beijing-a",
 
    "IoOptimized": "none",
    "InternetChargeType": "PayByTraffic",
    "Description": "",
    "InstanceId": "i-t2",
    "HostName": "t2",
    "ClusterId": "",
    "ImageId": "ubuntu1404_64_40G_aliaegis_20160222.vhd",
    "InstanceChargeType": "PostPaid",
    "InstanceNetworkType": "vpc",
    "VSwitchId": "vsw-25hjbr6b7",
    "PrivateIpAddress": "192.168.1.5",
    "InstanceType": "ecs.s1.small",
     
    "InstanceName": "t2",
    "Cpu": 1,
 
    "SecurityGroupId": "sg-25i8ahfb7",
    "Memory": 2048
}

$aliyuncli ecs AllocateEipAddress
$aliyuncli ecs AssociateEipAddress --InstanceId i-25nl69m89 --AllocationId eip-25dhrq5tr

删除实例

(venv) ano@ano-svr1:~$ aliyuncli ecs StopInstance --InstanceId i-<id>

(venv) ano@ano-svr1:~$ aliyuncli ecs DeleteInstance --InstanceId i-<id>




通过API更换ECS的系统盘的步骤

相较于在控制台上一键更换系统,通过API来更换系统盘需要执行更精细的步骤,具体的步骤为停机、更换系统盘、重置密码、启动ECS,具体的步骤如下(其中API格式以适用于AliyunCLI的命令为例): 
1. 停止ECS,可以使用StopInstance方法来停止,如:
aliyuncli ecs StopInstance --InstanceId i-xxxxx

2. 使用ReplaceSystemDisk来更换系统盘,ImageId参数中指定需要更换的镜像ID(该ID可以使用DescribeImages方法来查询可用的镜像ID),:
aliyuncli ecs ReplaceSystemDisk --InstanceId i-xxxxxxxx --ImageId xxxxxxx.vhd
目前系统盘已经支持扩容,若需要在更换时同时扩容系统盘,可以加上SystemDiskSize参数,如:
aliyuncli ecs ReplaceSystemDisk --InstanceId i-xxxxxxxx --ImageId xxxxxxx.vhd --SystemDiskSize 50G

3. 重置密码,使用ModifyInstanceAttribute,指定Password参数来设置新的密码,因为涉及到机密信息,建议使用HTTPS来传输这个API请求

4. 最后使用StartInstance方法启动ECS:
aliyuncli ecs StartInstance --InstanceId i-xxxxxx



aliyuncli oss支持

OSS SDK安装

使用OSS的功能,需要与OSS SDK配合使用,因此需要您安装OSS SDK(默认CLI会自动安装OSS SDK).
推荐采用pip方式
pip 安装SDK会自动帮助您处理好各种依赖还有升级, 因此强烈建议您采用pip方式安装SDK.
您可以直接采用下面的命令安装OSS SDK:
$ sudo pip install aliyun-python-sdk-oss
SDK升级:
sudo pip install --upgrade aliyun-python-sdk-oss

aliyuncli oss 命令说明

下面文档将通过命令说明和使用示范进行oss 命令的展示:

Config

  • 命令说明:
    Config --host oss.aliyuncs.com --accessid accessid --accesskey accesskey --sts_token token 配置aliyuncli 使用的默认host,ID 和KEY。默认的host 为oss.aliyuncs.com如果需要访问oss-internal.aliyuncs.com 可以加上--host oss-internal.aliyuncs.com。
  • 使用示范:
    aliyuncli oss Config --host oss.aliyuncs.com --accessid accessid --accesskey accesskey --sts_token token

GetAllBucket

  • 命令说明:
    GetAllBucket 用来显示用户创建的bucket
  • 使用示范:
    aliyuncli oss GetAllBucket

CreateBucket

  • 命令说明:
    CreateBucket oss://bucket --acl [acl] oss://bucket 表示bucket。--acl 参数可以传入,也可以不传入。
  • 使用示范:
    aliyuncli oss CreateBucket oss://myfirstbucket --acl public-read
    aliyuncli oss CreateBucket oss://mysecondbucket --acl private
    aliyuncli oss CreateBucket oss://mythirdbucket

DeleteBucket

  • 命令说明:
    DeleteBucket oss://bucket 删除bucket 的命令
  • 使用示范:
    aliyuncli oss DeleteBucket oss://mybucket
    aliyuncli oss DeleteBucket oss://myfirstbucket

DeleteWholeBucket

  • 注意:
    该命令十分危险,将会删除所有的数据,并且不可恢复。请慎重使用。
  • 命令说明:
    DeleteWholeBucket oss://bucket 删除bucket 及其内部object 以及multipart 相关的内容。
  • 使用示范:
    aliyuncli oss DeleteWholeBucket oss://mybucket

GetAcl

  • 命令说明:
    GetAcl oss://bucket 获取bucket 的访问控制权限
  • 使用示范:
    aliyuncli oss GetAcl oss://mybucket

SetAcl

  • 命令说明:
    SetAcl oss://bucket –acl [acl] 修改bucket 的访问控制权限。acl 只允许为private , public-read ,public-read-write 三个当中的一个。
  • 使用示范:
    aliyuncli oss SetAcl oss://mybucket --acl private

List

  • 命令说明:
    List oss://bucket/[prefix] [marker] [delimiter] [maxkeys] 列出bucket 中的object。
  • 使用示范:
    aliyuncli oss List oss://mybucket/folder1/folder2
    aliyuncli oss List oss://mybucket/folder1/folder2 maker1

MkDir

  • 命令说明:
    MkDir oss://bucket/dirname 创建一个以“/”结尾的object,并且size 为0。
  • 使用示范:
    aliyuncli oss MkDir oss://mybucket/folder

ListAllObject

  • 命令说明:
    ListAllObject oss://bucket/[prefix] 显示bucket 下所有的object,可以指定prefix 来显示。
  • 使用示范:
    aliyuncli oss ListAllObject oss://mybucket
    aliyuncli oss ListAllObject oss://mybucket/testfolder/

DeleteAllObject

  • 命令说明:
    DeleteAllObject oss://bucket/[prefix] 删除bucket 下所有的object,可以指定特定的prefix 来删除。
  • 使用示范:
    aliyuncli oss DeleteAllObject oss://mybucket
    aliyuncli oss DeleteAllObject oss://mybucket/testfolder/

DownloadAllObject

  • 命令说明:
    DownloadAllObject oss://bucket/[prefix] localdir --replace false将bucket 下的object 下载到本地目录,并且保持目录结构。可以指定prefix下载。--replace false 表示如果下载时,本地已经存在同名文件,不会覆盖。true 则会覆盖。
  • 使用示范:
    aliyuncli oss DownloadAllObject oss://mybucket /tmp/folder
    aliyuncli oss DownloadAllObject oss://mybucket /tmp/folder --replace=false
    aliyuncli oss DownloadAllObject oss://mybucket /tmp/folder --replace=true

DownloadToDir

  • 命令说明:
    DownloadToDir oss://bucket/[prefix] localdir --replace=false 将bucket 下的object 下载到本地目录,并且保持目录结构。可以指定prefix下载。--replace false 表示如果下载时,本地已经存在同名文件,不会覆盖。true 则会覆盖。同downloadallobject 效果一样。
  • 使用示范:
    aliyuncli oss DownloadToDir oss://mybucket /tmp/folder
    aliyuncli oss DownloadToDir oss://mybucket /tmp/folder --replace false
    aliyuncli oss DownloadToDir oss://mybucket /tmp/folder --replace true

UploadObjectFromLocalDir

  • 命令说明:
    UploadObjectFromLocalDir localdir oss://bucket/[prefix] --check_point check_point_file --replace false --check_md5 false --thread_num 5将本地目录里的文件上传到bucket 中。例如localdir 为/tmp/里面有a/b,a/c,a 三个文件,则上传到OSS 中为oss://bucket/a/b,oss://bucket/a/c,oss://bucket/a。如果指定了prefix 为mytest,则上传到OSS 中为oss://bucket/mytest/a/b,oss://bucket/mytest/a/c,oss://bucket/mytest/a。--check_point check_point_file 是指定文件。指定文件后,osscmd 会将已经上传的本地文件以时间戳的方式放到check_point_file 中,uploadfromdir命令会将正在上传的文件的时间戳和check_point_file 记录的时间戳进行比较。如果有变化则会重新上传,否则跳过。默认情况下是没有check_point_file 的。
  • 注意:
    由于check_point_file 文件中记录的是上传的所有文件的。所以当上传文件特别多的时候,check_point_file 会特别巨大。
  • 使用示范:
    aliyuncli oss UploadObjectFromLocalDir /mytemp/folder oss://mybucket
    aliyuncli oss UploadObjectFromLocalDir /mytemp/folder oss://mybucket --check_point_file /tmp/mytemp_record.txt

Put

  • 命令说明:
    Put localfile oss://bucket/object --content-type [content_type]--headers "key1:value1, key2:value2" 上传一个本地的文件到bucket 中,可以指定object 的content-type,或则指定自定义的headers。
  • 使用示范:
    aliyuncli oss Put myfile.txt oss://mybucket
    aliyuncli oss Put myfile.txt oss://mybucket/myobject.txt
    aliyuncli oss Put myfile.txt oss://mybucket/test.txt --content-type plain/text --headers “x-oss-meta-des:test,x-oss-meta-location:CN”
    aliyuncli oss Put myfile.txt oss://mybucket/test.txt --content-type plain/text

Get

  • 命令说明:
    Get oss://bucket/object localfile 将object 下载到本地文件。
  • 使用示范:
    aliyuncli oss Get oss://mybucket/myobject /tmp/localfile

MultiGet

  • 命令说明:
    MultiGet oss://bucket/object localfile --thread_num 5 将object 以多线程的方式下载到本地文件。
  • 使用示范:
    aliyuncli oss MultiGet oss://mybucket/myobject /tmp/localfile
    aliyuncli oss MultiGet oss://mybucket/myobject /tmp/localfile

Cat

  • 命令说明:
    Cat oss://bucket/object 读取object 的内容,直接打印出来。在object 内容比较大的时候请不要使用。
  • 使用示范:
    aliyuncli oss Cat oss://mybucket/myobject

Meta

  • 命令说明:
    Meta oss://bucket/object读取object 的meta 信息,打印出来。meta 信息包括content-type,文件长度,自定义meta 等内容。
  • 使用示范:
    aliyuncli oss Meta oss://mybucket/myobject

Copy

  • 命令说明:
    Copy oss://source_bucket/source_object oss://target_bucket/target_object --headers="key1:value1,key2:value2"将源bucket 的源object 复制到目的bucket 中的目的object。
  • 使用示范:
    aliyuncli oss Copy oss://bucket1/object1 oss://bucket2/object2

Delete

  • 命令说明:
    Delete oss://bucket/object 删除object。
  • 使用示范:
    aliyuncli oss Delete oss://mybucket/myobject

SignUrl

  • 命令说明:
    SignUrl oss://bucket/object --timeout [timeout_seconds] 生成一个包含签名的URL,并指定超时的时间。适用于bucket 为私有时将特定的object 提供给他人访问。
  • 使用示范:
    aliyuncli oss SignUrl oss://mybucket/myobject

Init

  • 命令说明:
    Init oss://bucket/object 初始化生成一个Upload ID。这个Upload ID 可以配合后面的MultiUpload命令来使用。
  • 使用示范:
    aliyuncli oss Init oss://mybucket/myobject

ListPart

  • 命令说明:
    ListPart oss://bucket/object --upload_id xxx显示指定object 的Upload ID 下已经上传的Parts。相关概念见OSS API文档。必须要指定Upload ID。
  • 使用示范:
    aliyuncli oss ListPart oss://mybucket/myobject --upload_id 75835E389EA648C0B93571B6A46023F3

ListParts

  • 命令说明:
    ListPart s oss://bucket显示bucket 中未完成的multipart Upload ID 和object。一般在删除bucket提示bucket 非空的情况下可以用这个命令查看是否有multipart 相关的内容。
  • 使用示范:
    aliyuncli oss ListParts oss://mybucket

GetAllPartSize

  • 命令说明:
    GetAllPartSize oss://bucket 显示bucket 中还存在的Upload ID 已经上传的Parts 的总大小。
  • 使用示范:
    aliyuncli oss GetAllPartSize oss://mybucket

Cancel

  • 命令说明:
    Cancel oss://bucket/object --upload_id xxx 终止Upload ID 对应的Multipart Upload 事件。
  • 使用示范:
    aliyuncli oss Cancel oss://mybucket/myobject --upload_id D9D278DB6F8845E9AFE797DD235DC576

MultiUpload

  • 命令说明一:
    MultiUpload localfile oss://bucket/object 将本地文件以multipart 的方式上传到OSS。
  • 使用示范:
    aliyuncli oss MultiUpload /tmp/localfile.txt oss://mybucket/object
  • 命令说明二:
    MultiUpload localfile oss://bucket/object --upload_id xxx --thread_num 10 --max_part_num 1000将本地文件以multipart 的方式上传到OSS。本地文件划分的块数由max_part_num 来指定。这个命令在实现的时候,会先去判断Upload ID对应的Parts 的ETag 是否和本地文件的MD5 值是否相等,相等则跳过上传。所以如果在使用之前生成一个Upload ID,作为参数传进来。即使上传没有成功,重复执行相同的multiupload 命令可以达到一个断点续传的效果。
  • 使用示范:
    aliyuncli oss MultiUpload /tmp/localfile.txt oss://mybucket/object --upload_id D9D278DB6F8845E9AFE797DD235DC576
    aliyuncli oss MultiUpload /tmp/localfile.txt oss://mybucket/object --thread_num 5
    aliyuncli oss MultiUpload /tmp/localfile.txt oss://mybucket/object --max_part_num 100

UploadPartFromFile

  • 命令说明:
    UploadPartFromFile localfile oss://bucket/object --upload_id xx --part_number xxx 主要用于测试,不推荐使用。

UploadPartFromString


  • 命令说明:
    UploadPartFromString oss://bucket/object --upload_id xxx --part_number xxx --data xxx 主要用于测试,不推荐使用。


docker


配置Docker加速器
您可以使用如下的脚本将mirror的配置添加到docker daemon的启动参数中。
echo "DOCKER_OPTS=\"\$DOCKER_OPTS --registry-mirror=https://<your_mir>.mirrror.aliyuncs.com\"" | sudo tee -a /etc/default/docker


https://cr.console.aliyun.com/ 查看专属加速器地址
[1] https://github.com/aliyun/aliyun-cli

No comments:

Post a Comment