Linode CLI のインストール

# Linodeとは

Linode (https://www.linode.com/) は Akamaiが提供するIaaS (Infrastructure as a Service) プラットフォームプロバイダーのサービスです。リノードと発音します。
Akamaiは2022年2月にLinode社の買収を発表しました。
https://www.akamai.com/ja/newsroom/press-release/akamai-to-acquire-linode
クラウドコンピューティングをよりシンプルに、手頃な価格で、誰もが利用できるようにすることで、イノベーションを加速することができます。
https://www.linode.com/ja/alternative-cloud-provider/

## Linode CLI とは

Linodeコマンドラインインターフェース(Linode CLI)は、LinodeがGUIベースで標準的に提供している各種の管理サービスをCLIベースで管理するためのツールです。コマンドラインからLinodeの複数サービスを制御、操作し、スクリプトなどを利用して自動化することができます。

## Linode CLI インストール

こちらを参考にCLIをインストールします。

https://www.linode.com/docs/products/tools/cli/guides/install/

pip3コマンドにてlinode-cliとObject Storageを扱う際に利用するbotoをインストールします。

```
pip3 install linode-cli --upgrade
pip3 install boto
```

インストールが完了したら、help等が表示されるか確認します。

```
linode-cli --help
```

Linode CLIにて利用するアクセスキーの設定を行います。
`linode-cli configure`を利用することで、アクセスキーの作成と登録まで一括で行うことができます。

```
$  linode-cli configure

Welcome to the Linode CLI.  This will walk you through some initial setup.

The CLI will use its web-based authentication to log you in.  If you prefer to supply a Personal Access Token, use `linode-cli configure --token`.

Press enter to continue.  This will open a browser and proceed with authentication.
# Enterキーを押してブラウザを開き、Linodeへアクセスします。

A browser should open directing you to this URL to authenticate:

https://login.linode.com/oauth/xxxxxxxxxxxxxxxxxxxxxxxx
# 自動的にブラウザが開かない場合、上記URLにアクセスして認証を行います。

If you are not automatically directed there, please copy/paste the link into your browser
to continue..


Configuring xxxxx


Default Region for operations.  Choices are:
 1 - ap-west
 2 - ca-central
 3 - ap-southeast
 4 - us-central
 5 - us-west
 6 - us-southeast
 7 - us-east
 8 - eu-west
 9 - ap-south
 10 - eu-central
 11 - ap-northeast

Default Region (Optional): 11 #日本にしたいので11

Default Type of Linode to deploy.  Choices are:
 1 - g6-nanode-1
 2 - g6-standard-1
 3 - g6-standard-2
 4 - g6-standard-4
 5 - g6-standard-6
 6 - g6-standard-8
 7 - g6-standard-16
 8 - g6-standard-20
 9 - g6-standard-24
 10 - g6-standard-32
 11 - g7-highmem-1
 12 - g7-highmem-2
 13 - g7-highmem-4
 14 - g7-highmem-8
 15 - g7-highmem-16
 16 - g6-dedicated-2
 17 - g6-dedicated-4
 18 - g6-dedicated-8
 19 - g6-dedicated-16
 20 - g6-dedicated-32
 21 - g6-dedicated-48
 22 - g6-dedicated-50
 23 - g6-dedicated-56
 24 - g6-dedicated-64
 25 - g1-gpu-rtx6000-1
 26 - g1-gpu-rtx6000-2
 27 - g1-gpu-rtx6000-3
 28 - g1-gpu-rtx6000-4

Default Type of Linode (Optional): 1 #最小インスタンスをデフォルトとしたいので1

Default Image to deploy to new Linodes.  Choices are:
 1 - linode/almalinux8
 2 - linode/almalinux9
 3 - linode/alpine3.12
 4 - linode/alpine3.13
 5 - linode/alpine3.14
 6 - linode/alpine3.15
 7 - linode/alpine3.16
 8 - linode/arch
 9 - linode/centos7
 10 - linode/centos-stream8
 11 - linode/centos-stream9
 12 - linode/debian10
 13 - linode/debian11
 14 - linode/debian9
 15 - linode/fedora34
 16 - linode/fedora35
 17 - linode/fedora36
 18 - linode/gentoo
 19 - linode/kali
 20 - linode/debian11-kube-v1.20.15
 21 - linode/debian9-kube-v1.20.7
 22 - linode/debian9-kube-v1.21.1
 23 - linode/debian11-kube-v1.21.12
 24 - linode/debian9-kube-v1.22.2
 25 - linode/debian11-kube-v1.22.9
 26 - linode/debian11-kube-v1.23.6
 27 - linode/opensuse15.3
 28 - linode/opensuse15.4
 29 - linode/rocky8
 30 - linode/rocky9
 31 - linode/slackware14.2
 32 - linode/slackware15.0
 33 - linode/ubuntu16.04lts
 34 - linode/ubuntu18.04
 35 - linode/ubuntu20.04
 36 - linode/ubuntu21.10
 37 - linode/ubuntu22.04
 38 - linode/centos8
 39 - linode/slackware14.1
 40 - linode/ubuntu21.04

Default Image (Optional): 37 # Ubuntuをデフォルトにしたいので37
Active user will remain 

Config written to /Users/xxxxx/.config/linode-cli #Configの保存先
```

インストールは以上で完了です。

## Linode CLI を使ってみる

Linode CLIでは様々な操作をコマンドラインインターフェースにて扱うことができます。
実際にいくつかのコマンドを実行してみて、出力を確認します。

Linodeのインスタンスの一覧を取得

```
linode-cli linodes list

┌──────────┬────────────────────┬────────────┬───────────────┬───────────────────────┬─────────┬───────────────────┐
│ id       │ label              │ region     │ type          │ image                 │ status  │ ipv4              │
├──────────┼────────────────────┼────────────┼───────────────┼───────────────────────┼─────────┼───────────────────┤
│ 00000001 │ example-instance   │ us-east    │ g6-standard-1 │ linode/ubuntu18.04    │ running │ 192.0.2.42         │
│ 00001111 │ centos-us-east     │ us-east    │ g6-nanode-1   │ linode/centos-stream9 │ running │ 192.0.2.108       │
└──────────┴────────────────────┴────────────┴───────────────┴───────────────────────┴─────────┴───────────────────┘
```

Linodeの各リージョン情報の取得

```
linode-cli regions list

┌──────────────┬─────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬────────┐
│ id           │ country │ capabilities                                                                                                                                            │ status │
├──────────────┼─────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────┤
│ ap-west      │ in      │ Linodes, NodeBalancers, Block Storage, GPU Linodes, Kubernetes, Cloud Firewall, Vlans, Block Storage Migrations, Managed Databases                      │ ok     │
│ ca-central   │ ca      │ Linodes, NodeBalancers, Block Storage, Kubernetes, Cloud Firewall, Vlans, Block Storage Migrations, Managed Databases                                   │ ok     │
│ ap-southeast │ au      │ Linodes, NodeBalancers, Block Storage, Kubernetes, Cloud Firewall, Vlans, Block Storage Migrations, Managed Databases                                   │ ok     │
│ us-central   │ us      │ Linodes, NodeBalancers, Block Storage, Kubernetes, Cloud Firewall, Block Storage Migrations, Managed Databases                                          │ ok     │
│ us-west      │ us      │ Linodes, NodeBalancers, Block Storage, Kubernetes, Cloud Firewall, Block Storage Migrations, Managed Databases                                          │ ok     │
│ us-southeast │ us      │ Linodes, NodeBalancers, Block Storage, Object Storage, GPU Linodes, Kubernetes, Cloud Firewall, Vlans, Block Storage Migrations, Managed Databases      │ ok     │
│ us-east      │ us      │ Linodes, NodeBalancers, Block Storage, Object Storage, GPU Linodes, Kubernetes, Cloud Firewall, Bare Metal, Block Storage Migrations, Managed Databases │ ok     │
│ eu-west      │ uk      │ Linodes, NodeBalancers, Block Storage, Kubernetes, Cloud Firewall, Block Storage Migrations, Managed Databases                                          │ ok     │
│ ap-south     │ sg      │ Linodes, NodeBalancers, Block Storage, Object Storage, GPU Linodes, Kubernetes, Cloud Firewall, Block Storage Migrations, Managed Databases             │ ok     │
│ eu-central   │ de      │ Linodes, NodeBalancers, Block Storage, Object Storage, GPU Linodes, Kubernetes, Cloud Firewall, Block Storage Migrations, Managed Databases             │ ok     │
│ ap-northeast │ jp      │ Linodes, NodeBalancers, Block Storage, Kubernetes, Cloud Firewall, Block Storage Migrations, Managed Databases                                          │ ok     │
└──────────────┴─────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴────────┘
```

Linode Object Storageのリージョン情報を取得し、JSONで出力

```
linode-cli object-storage clusters-list --json | jq

[
  {
    "id": "us-east-1",
    "region": "us-east",
    "status": "available",
    "domain": "us-east-1.linodeobjects.com",
    "static_site_domain": "website-us-east-1.linodeobjects.com"
  },
  {
    "id": "eu-central-1",
    "region": "eu-central",
    "status": "available",
    "domain": "eu-central-1.linodeobjects.com",
    "static_site_domain": "website-eu-central-1.linodeobjects.com"
  },
  {
    "id": "ap-south-1",
    "region": "ap-south",
    "status": "available",
    "domain": "ap-south-1.linodeobjects.com",
    "static_site_domain": "website-ap-south-1.linodeobjects.com"
  },
  {
    "id": "us-southeast-1",
    "region": "us-southeast",
    "status": "available",
    "domain": "us-southeast-1.linodeobjects.com",
    "static_site_domain": "website-us-southeast-1.linodeobjects.com"
  }
]

```

### その他のCLIでの操作について

CLIでは様々な操作コマンドを用意しています。
以下に参考になるドキュメントリンクをまとめました。

CLIによるインスタンスの操作
<a href="https://www.linode.com/docs/products/tools/cli/guides/linode-instances/">https://www.linode.com/docs/products/tools/cli/guides/linode-instances/</a>

CLIによるObject Storageの操作
<a href="https://www.linode.com/docs/products/tools/cli/guides/object-storage/">https://www.linode.com/docs/products/tools/cli/guides/object-storage/</a>

CLIによるNode Balancersの操作
<a href="https://www.linode.com/docs/products/tools/cli/guides/nodebalancers/">https://www.linode.com/docs/products/tools/cli/guides/nodebalancers/</a>

CLIによるLinode DNSの操作
<a href="https://www.linode.com/docs/products/tools/cli/guides/domains/">https://www.linode.com/docs/products/tools/cli/guides/domains/</a>

CLIによるLinode Kubernetes Engineの操作
<a href="https://www.linode.com/docs/products/tools/cli/guides/linode-kubernetes-engine/">https://www.linode.com/docs/products/tools/cli/guides/linode-kubernetes-engine/</a>

CLIによるアカウントの操作
<a href="https://www.linode.com/docs/products/tools/cli/guides/account/">https://www.linode.com/docs/products/tools/cli/guides/account/</a>

CLIによるサポートチケットの操作
<a href="https://www.linode.com/docs/products/tools/cli/guides/support-tickets/">https://www.linode.com/docs/products/tools/cli/guides/support-tickets/</a>

## まとめ

Linode CLIを活用することで、簡易的な操作をコマンドラインインターフェースで実行できるだけなく、
スクリプトにも組み込むことで、自動化も行うことができるようになります。
ぜひ、Linode CLIを活用してみてください。

## 関連記事

アカマイ・テクノロジーズ合同会社のQiitaではLinode関連など開発者向けの記事を記載しております。

https://qiita.com/organizations/Akamai