- tech系
VM Managerでインスタンスに一貫した状態を与える
こんにちは。
VM Managerを利用すれば、インスタンスにインストールするミドルウェアやその設定を便利に管理できるので紹介します。
VM Managerは簡単に使える最強のインスタンス管理ツール
Compute Engineを利用する場合には様々なミドルウェアをインストールすると思います。
- docker
- google-fluentd
- stackdriver-agent
などが代表的でしょうか。
これらをインストールし、その設定ファイルをインスタンスに配置する時に利用できるのがVM Managerの「ゲストポリシー」です。
yamlファイルで構成を定義するのは既存の構成管理ツールと同様ですが、ゲストポリシーは定期的にインスタンスの状態をチェックして定義内容と差分があればそれを是正します。
VM Managerには他にも機能があるのですが、この記事では「ゲストポリシー」に焦点を当てることにします。
前提条件
VM Managerを利用するためには管理対象としたいインスタンスのメタデータに enable-osconfig: TRUE
が必要です。
今回はゲストポリシーを利用してubuntuにLoggingエージェントをインストールするので、試してみたい方はVM Manager APIを有効にして、インスタンスにメタデータを設定してください。
必須ではありませんが、ゲストポリシーで対象のインスタンスをフィルタするために、 ラベルとして os: ubuntu
も設定してください。
定義ファイル
Loggingエージェントをインストールする際の公式ドキュメントの手順に従うものとします。
すると、Loggingエージェントをインストールする定義は次のようなものになります。
assignment:
groupLabels:
- labels:
os: ubuntu
recipes:
- name: install-logging-agent
desiredState: INSTALLED
installSteps:
- scriptRun:
script: |-
#!/bin/bash
curl -sSO https://dl.google.com/cloudagents/add-logging-agent-repo.sh
sudo bash add-logging-agent-repo.sh --also-install
sudo service google-fluentd restart
ゲストポリシーの設定例のドキュメントにいくつかのサンプルが載っていますが、これらだけでは不十分なことが多いので、筆者はREST APIの仕様から書くべき設定ファイルを逆算しています。
上記の定義ファイルを guest-policy.yaml
という名前で保存したとして、適用するには次のコマンドを実行します。
gcloud beta compute os-config guest-policies create \
install-logging-agent \
--file=guest-policy.yaml
これだけで、今後起動するものも含めてos: ubuntu
ラベルがついていて、enable-osconfig: TRUE
メタデータが設定されているインスタンス全てに自動でLoggingエージェントがインストールされます。
GCSからファイルをダウンロードすることもできるので、fluentdの設定ファイルをGCSに置いて、インスタンスにはVM Manager経由で設定ファイルを配置することが可能です。
残された問題
GCPに限れば、cloud-initとどのように使い分けるのがいいのかわからない。
この記事を共有する