この記事は Alibaba Cloud の日本サイト の環境(ドキュメントやアカウント、そのアカウントでの検証結果)に基づいて記載しています。 日本サイトと国際サイトでは各プロダクトごとに提供機能が一部異なることがあります(そのほとんどは国際サイトの方が日本サイトよりも多機能になっている)。記事の内容は適宜最新化する予定です。
Aliyun LinuxにAlibaba Cloud CLIをインストールするところまで書いてみます。
とある検証作業でAlibaba Cloud CLIを使ってみようと思ったのですが、そのCLIの実行環境のインストールが必要とわかりました。 パソコン上にインストールしても良いのですが、どこからでも実行出来るようにAlibaba Cloud ECS上にインストールすることにしました。 せっかくなのでOSをAliyun Linuxにしてみたという話になります。
目次
Aliyun LinuxのECSを購入
基本構成で、サブスクリプションを選んで、バーストタイプのt5の最小スペックにします。 ある程度長期間利用する予定のためサブスクリプションを選んでいます。
ここでOSに”Aliyun Linux”を選択します。 まったく下調べもしていないのでどんなOSなのか楽しみですねー。
もともとやりたい検証のために帯域は100Mbpsとします。 チケットを上げると200Mbpsまで変更できるはずです。 200Mbps以上の帯域が必要な場合はSLBを利用しましょう。 ちなみに既定値は5Mbpsです。 意味もなく帯域があると、意図せず大量のトラフィックを流した場合に課金で泣いてしまいます。5Mbpsの既定値は親切設計だと思います。 仮に100Mbpsを30日間フルで使い切った場合、32.4TB(理論値)のアウトバウンド通信が可能でこのときの課金は398,520円/月となります。
今回はタグは設定しません。
最後に、購入サイクルと自動更新と利用規約を確認し、注文を確定します。
Aliyun Linuxにログイン
さっそくログインします。 設定は省略しますが、キーペア認証でログインします。
ログインメッセージは”Welcome to Alibaba Cloud Elastic Compute Service !”です。 シンプルですね。 変えたい場合は/etc/motdを変えましょう。
とりあえずunameの結果を見てみます。 下の画像では先にdfを実行し、次にunameです。 dfを実行していることに意味はありません(癖みたいな感じです)。
次にこのOSがRed Hat互換かどうかを確認してみるために、/etc/redhat-releaseを見てみます。
”Alibaba Cloud Enterprise Linux Server release 17.012 (Golden Toad)”となっています。 /etc/redhat-releaseファイルがあるのでRed Hat互換な感じでしょうか。 ただ、バージョンが17.01.2とRed Hatのバージョン表記と大きく異なるので対応はわかりません。
Red Hat互換みたいなのでとりあえず”yum”を実行してみます。 普通にyumコマンドが動いたのでそのまま最新化することにします。
ここであらためて”Aliyun Linx”について調べてみることにします。 普通にCentOSと互換性があるとのことでした。
CentOS 7.2と互換性があり
https://jp.alibabacloud.com/help/faq-detail/53091.htm
CentOSとの違いは以下の公式ドキュメントに記載がありました。 ハイパフォーマンスのためのチューニングがされているようです。 また、自動NUMA機能はちょっと気になりますね。 Hyper Visor側ではなくゲストOS側でどう実装しているのか気になります。
Alibaba Cloud カーネルグループによって管理されているLinuxカーネル4.4との統合
https://jp.alibabacloud.com/help/faq-detail/53091.htm
・スワップ領域の圧縮をサポートし、I/O を大幅に削減します。
・ホットパッチ機能であるkpatchをサポートします。カーネルをアップグレードするためにインスタンスを再起動する必要はありません。
・非常に大きいメモリ(最大で 3 TB)を持つ仮想マシンのkdumpメカニズムをサポートします。
・自動 NUMA 機能をサポートします。
vsyscallページを使用してユーザーモードでタイムスタンプを取得するパフォーマンスを向上させます。
・Dockerテクノロジスタックを完全にサポートします。
・Paravirtual(PV)パニックイベントインターフェイスをサポートし、クラウドユーザーがカーネルの問題をすばやく特定できるようにしています。
・アンチSYNフラッディング攻撃能力が2〜3桁向上した、再設計されたロックレスTCPリスナーを提供します。
次にyumの設定を確認します。
[root@sun yum]# cat /etc/yum.conf [main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=0 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 installonly_limit=5 bugtracker_url=http://www.aliyun.com/ This is the default, if you make this bigger yum won’t see if the metadata is newer on the remote and so you’ll “gain” the bandwidth of not having to download the new metadata and “pay” for it by yum not having correct information. It is esp. important, to have correct metadata, for distributions like Fedora which don’t keep old packages around. If you don’t like this checking interupting your command line usage, it’s much better to have something manually check the metadata once an hour (yum-updatesd will do this). metadata_expire=90m PUT YOUR REPOS HERE OR IN separate files named file.repo in /etc/yum.repos.d |
/etc/yum.repos.dも見てみます。既定で3つのリポジトリを見にいっています。
[root@sun yum]# ls /etc/yum.repos.d/ ALinux-Base.repo aliyun-17.01.repo epel.repo |
ALinux-Base.repoの設定は以下の通り。日本にミラーがあるのかな?
[root@sun yum.repos.d]# cat ALinux-Base.repo [base] name=ALinux-$releasever enabled=1 failovermethod=priority baseurl=http://jp.mirrors.cloud.aliyuncs.com/alinux/$releasever/os/$basearch/ gpgcheck=1 gpgkey=http://jp.mirrors.cloud.aliyuncs.com/alinux/RPM-GPG-KEY-ALinux-7 [updates] name=ALinux-$releasever enabled=1 failovermethod=priority baseurl=http://jp.mirrors.cloud.aliyuncs.com/alinux/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=http://jp.mirrors.cloud.aliyuncs.com/alinux/RPM-GPG-KEY-ALinux-7 [extras] name=ALinux-$releasever enabled=1 failovermethod=priority baseurl=http://jp.mirrors.cloud.aliyuncs.com/alinux/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=http://jp.mirrors.cloud.aliyuncs.com/alinux/RPM-GPG-KEY-ALinux-7 |
aliyun-17.01 の設定は以下の通り。
[root@sun yum.repos.d]# cat aliyun-17.01.repo AliYun.repo [base] name=AliYun-$releasever – Base – mirrors.aliyun.com baseurl=http://mirrors.aliyun.com/alinux/$releasever/os/$basearch/ gpgcheck=1 gpgkey=http://mirrors.aliyun.com/alinux/RPM-GPG-KEY-ALinux-7 released updates [updates] name=AliYun-$releasever – Updates – mirrors.aliyun.com baseurl=http://mirrors.aliyun.com/alinux/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=http://mirrors.aliyun.com/alinux/RPM-GPG-KEY-ALinux-7 additional packages that may be useful [extras] name=AliYun-$releasever – Extras – mirrors.aliyun.com baseurl=http://mirrors.aliyun.com/alinux/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=http://mirrors.aliyun.com/alinux/RPM-GPG-KEY-ALinux-7 |
epel.repo の設定は以下の通り。日本にミラーがあるのかな?
[root@sun yum.repos.d]# cat epel.repo [epel] name=Extra Packages for Enterprise Linux 7 – $basearch enabled=1 failovermethod=priority baseurl=http://jp.mirrors.cloud.aliyuncs.com/epel/7/$basearch gpgcheck=0 gpgkey=http://jp.mirrors.cloud.aliyuncs.com/epel/RPM-GPG-KEY-EPEL-7[ |
Aliyun Linux独自のパッケージが利用できるかはまた別の機会に調べてみることにします。
とりあえず、”Aliyun Linux”が無事立ち上がりましたので次の工程に進みます。
Alibaba Cloud CLIをインストールする
目的はAlibaba Cloud CLI の実行環境を作ることでした。 次に、CLI環境のインストールに進みます。
公式ドキュメントを参考に進めることにします。
”ソースコードをコンパイルする”とあります。 makeコマンドでコンパイルするようですね。 私が仕事を始めた頃はSolaris全盛であらゆるソフトをコンパイルしていました。 当時はコンパイラのGCCを一晩かけてコンパイルするところがスタートでした。そのあと、X-WindowをコンパイルしてCDE(Solaris標準のデスクトップ環境)を置き換えて、wnnやcannnaやkinput2、emacsをインストールしていたことを思い出して懐かしい気分です。
とりあえず、進めてみます。多分”git”コマンドはインストールされていないんだろうなと予想してwhichで確認しつつ、yumでインストールします。
では、公式ドキュメントどおりに進めてみます。 rootで実行していることは無視してください。
[root@sun src]# export GOPATH=/usr/local [root@sun src]# mkdir github.com [root@sun src]# mkdir github.com/aliyun [root@sun src]# cd $GOPATH/src/github.com/aliyun [root@sun aliyun]# git clone http://github.com/aliyun/aliyun-cli.git Cloning into ‘aliyun-cli’… remote: Enumerating objects: 41, done. remote: Counting objects: 100% (41/41), done. remote: Compressing objects: 100% (30/30), done. remote: Total 13689 (delta 10), reused 28 (delta 10), pack-reused 13648 Receiving objects: 100% (13689/13689), 14.94 MiB | 10.21 MiB/s, done. Resolving deltas: 100% (8897/8897), done. [root@sun aliyun]# git clone http://github.com/aliyun/aliyun-openapi-meta.git Cloning into ‘aliyun-openapi-meta’… remote: Enumerating objects: 4632, done. remote: Counting objects: 100% (4632/4632), done. remote: Compressing objects: 100% (280/280), done. remote: Total 4632 (delta 4483), reused 4495 (delta 4346), pack-reused 0 Receiving objects: 100% (4632/4632), 613.89 KiB | 0 bytes/s, done. Resolving deltas: 100% (4483/4483), done. [root@sun aliyun]# pwd /usr/local/src/github.com/aliyun [root@sun aliyun]# cd aliyun-cli/ [root@sun aliyun-cli]# ls bin config integration meta README_zh.md CHANGELOG.md Gopkg.lock LICENSE openapi resource cli Gopkg.toml main oss suite_test.sh command i18n Makefile README.md vendor [root@sun aliyun-cli]# make install go get github.com/aliyun/aliyun-openapi-meta make: go: Command not found make: [deps] Error 127 (ignored) go get -u github.com/jteeuwen/go-bindata/… make: go: Command not found make: *** [deps] Error 127 |
失敗しました。 ” make: go: Command not found”ということなのでgoをインストールすることにします。
”yum install go”でgoコマンドが使えるようになりました。 yumなりapt-getなり便利ですね。
再度”make install”を実行します。
はい、Errorということで失敗です。 よくあることです。
初心に帰ってドキュメントを確認することにします。
Download installer (Recommended)
https://github.com/aliyun/aliyun-cli
Download the installer, then extract the installer. You can move the extractedaliyun
executable file to the/usr/local/bin
directory or add it to the$PATH
.
Download link: (3.0.9)
Mac
Linux
Windows (64 bit)
バイナリが配布されていますね。ダウンロードして展開して、/usr/local/binにコピーするだけで利用可能になるとのこと。 今回はエラーのトラブルシューティングは早々にあきらめてバイナリインストールすることにします。 少し悔しいのですが。
[root@sun aliyun-cli]# cd /usr/local/src [root@sun src]# ls github.com [root@sun src]# mkdir aliyun [root@sun src]# cd aliyun/ [root@sun aliyun]# ls [root@sun aliyun]# wget https://aliyuncli.alicdn.com/aliyun-cli-linux-3.0.9-amd64.tgz –2019-02-13 22:44:12– https://aliyuncli.alicdn.com/aliyun-cli-linux-3.0.9-amd64.tgz Resolving aliyuncli.alicdn.com (aliyuncli.alicdn.com)… 202.47.28.99, 202.47.28.98 Connecting to aliyuncli.alicdn.com (aliyuncli.alicdn.com)|202.47.28.99|:443… connected. HTTP request sent, awaiting response… 200 OK Length: 9466759 (9.0M) [application/octet-stream] Saving to: ‘aliyun-cli-linux-3.0.9-amd64.tgz’ 100%[======================================>] 9,466,759 –.-K/s in 0.1s 2019-02-13 22:44:15 (61.6 MB/s) – ‘aliyun-cli-linux-3.0.9-amd64.tgz’ saved [9466759/9466759] [root@sun aliyun]# tar xzf aliyun-cli-linux-3.0.9-amd64.tgz [root@sun aliyun]# ls aliyun aliyun-cli-linux-3.0.9-amd64.tgz |
無事展開できました。”aliyun”を/usr/local/binのコピーしてインストールは完了です。 簡単なのは嬉しいと思いつつ、自分のスキルが劣化していく気もします。
[root@sun aliyun]# ls -l total 34192 -rwxr-xr-x 1 root wheel 25539909 Jan 24 14:30 aliyun -rw-r–r– 1 root root 9466759 Jan 24 14:30 aliyun-cli-linux-3.0.9-amd64.tgz [root@sun aliyun]# cp -a aliyun /usr/local/bin [root@sun aliyun]# which aliyun /usr/local/bin/aliyun |
インストール完了です。
最後にAlibaba Cloud CLIを実行して終わりにします。とりあえずヘルプを見てみます。
[root@sun /]# aliyun Alibaba Cloud Command Line Interface Version 3.0.9 Usage: aliyun [–parameter1 value1 –parameter2 value2 …] Commands: configure configure credential and settings oss Object Storage Service auto-completion enable auto completion Flags: –mode use --mode {AK|StsToken|RamRoleArn|EcsRamRole|RsaKeyPair} to assign authenticate mode–profile,-p use --profile <profileName> to select profile–language use --language [en|zh] to assign language–region use --region <regionId> to assign region–access-key-id use --access-key-id <AccessKeyId> to assign AccessKeyId, required in AK/StsToken/RamRoleArn mode–access-key-secret use --access-key-secret <AccessKeySecret> to assign AccessKeySecret–sts-token use --sts-token <StsToken> to assign StsToken–ram-role-name use --ram-role-name <RamRoleName> to assign RamRoleName–ram-role-arn use --ram-role-arn <RamRoleArn> to assign RamRoleArn–role-session-name use --role-session-name <RoleSessionName> to assign RoleSessionName–private-key use --private-key <PrivateKey> to assign RSA PrivateKey–key-pair-name use --key-pair-name <KeyPairName> to assign KeyPairName–secure use --secure to force https–force use --force to skip api and parameters check–endpoint use --endpoint <endpoint> to assign endpoint–version use --version <YYYY-MM-DD> to assign product api version–header use --header X-foo=bar to add custom HTTP header, repeatable–body use --body $(cat foo.json) to assign http body in RESTful call–pager use --pager to merge pages for pageable APIs–output,-o use --output cols=Field1,Field2 [rows=jmesPath] to print output as table–waiter use --waiter expr=<jmesPath> to=<value> to pull api until result equal to expected value–dryrun add --dryrun to validate and print request without running.–quiet,-q add --quiet to hide normal output–help print help Sample: aliyun ecs DescribeRegions Use aliyun --help for more information.[root@sun /]# |
以上