Salt StackでGoogle Cloud Platform (GCP) をマネージメントしたい
E
目的
インフラ構成管理ソフトについて勉強中。AWSで使ってみて、使用感が良かったので、GCPでも使用してみる。
この記事でやること
SaltStackの公式ドキュメント [Getting Started With Google Compute Engine] をやってみる。
Salt StackでGCPをマネージメントするために用意しておくこと
- なし ←事前準備が"なし"というのがGCPのすごいところ!
Salt Stackを実行するCompute Engineを用意する
次のCompute Engineをコンソールから作成した。
ssh-keyを作成して、Compute Engineのメタデータに登録する
一般的なやり方なのでわかりやすい。以下のサイトを見ると簡単に登録できる
SSH 認証鍵ペアによるインスタンス アクセスの管理 | Compute Engine ドキュメント | Google Cloud Platform
Salt Stackのインストール
作成したCompute Engineにログインし、SaltStackの公式ドキュメント [Ubuntu] を参照してインストールを行う。このsalt-masterをインストールした環境が管理サーバとなる。
# apt-getのアップデー
apt-get update
#一般的な ネットワークアクセスを行うためのパッケージ
apt-get install salt-api
# public cloud VM をマネージメントするパッケージ
apt-get install salt-cloud
# 管理サーバに入れるパッケージ
apt-get install salt-master
# クライアントサーバに入れるパッケージ
apt-get install salt-minion
# リモート操作をするためのパッケージ
apt-get install salt-ssh
# 分散リモート実行システムパッケージ
apt-get install salt-syndic
# おまじない
salt-cloud -u
#おまじないについて
# file_ignore_glob関連のWARNINGが大量に出力されてしまうので、対応しておく
公式ドキュメントに書いておいてほしいですね。
Create a Service Account
サービスアカウントのキーを作成してダウンロードする。下記のマニュアルをみて、デフォルトのサービスアカウントのjsonファイルを生成して、Compute Engineにアップロードしておく
サービス アカウント キーの作成と管理 | Cloud Identity and Access Management のドキュメント | Google Cloud Platform
Salt Cloudを使用してクライアントサーバを構築する
2つのCompute Engine構築のための設定ファイルを用意する。これによりインフラ構築環境を再現することができる。
1つめ:/etc/salt/cloud.providers
# プロバイダー名。設定をこの名前を使って取り込む重要な名前
gce-config
# Set up the Project name and Service Account authorization
project: "your-project-id"
service_account_email_address: "123-a5gt@developer.gserviceaccount.com"
service_account_private_key: "/path/to/your/NEW.pem"
# masterのprivate ip アドレスをいれておく
minion:
master: xx.xx.xx.xx
# このままでいい
grains:
node_type: broker
release: 1.0.1
driver: gce
2つめ:/etc/salt/cloud.profiles
# プロファイル名。salt-cloud実行時にこの名前を使って指定する。
my-gce-profile:
image: ubuntu-1604
size: n1-standard-1
location: asia-east1-c
network: default
subnetwork: default
use_persistent_disk: True
delete_boot_pd: False
deploy: True
make_master: False
provider: gce-config
ssh_username: your_login_user
ssh_keyfile: /home/your_login_user/.ssh/id_rsa
↑で使用しているssh_keyfileのpublic key (id_rsa.pub) をCompute Engineのメタデータに登録する。ほかに本家のマニュアルを見ればもっと細かいことをやっているが、こちらは最小設定。
Salt Cloudを実行する
# Usage: salt-cloud -p <プロファイル名> <新たに作られるインスタンスのName(任意)>
# インスタンスを立てる
salt-cloud -p my-gce-profile kchiba-test-instance
MasterからMinionのコマンドを起動する
# minionサーバのコマンドが実行できた。
# salt kchiba-test-instance test.ping
kchiba-test-instance
: True
# pythonも実行できる
# salt kchiba-test-instance cmd.run 'python --version'
kchiba-test-instance:
Python 2.7.12
便利っぽい。
おかたづけ(インスタンスを削除する)
#Compute Engineをdestroyするコマンドの実行 # salt-cloud -d kchiba-test-instance The following virtual machines are set to be destroyed: gce-config: gce: kchiba-test-instance Proceed? [N/y] y
# Masterの設定も初期化されたかをみてみる。 # salt-key Accepted Keys: # kchiba-test-instanceが設定されていたのが消えている
Compute Engineを削除すると同時にsalt-masterとsalt-minionの関係も解消してくれた。
使ってみて感想
Compute Engineインスタンスを簡単に作成できる。
ssh-keyなどGoogle独自の方法ではなく、一般的な方法が使えるのでわかりやすい
ほとんどAWSと同じコマンドだった。
おわり。