googlecomputeengine
GoogleCloudPlatform

image-familyとbreaking change !!

More than 1 year has passed since last update.


image alias

Compute EngineのImageには元々Aliasというプロパティがあり、Aliasを指定した場合、その中の最新のImageが使われていました。

例えば、以下のようにdebian-8のAliasを持ったImageが複数あった場合、その中の最も大きい名前のImageが選択されます。

gcloud compute instances create --image debian-8

# debian-8-jessie-v20160606 が使われる

Image List

Image Name                 Alias

debian-8-jessie-v20160511 debian-8
debian-8-jessie-v20160606 debian-8

debian-8-jessie-v20160511                          debian-cloud     debian-8            DEPRECATED  READY

debian-8-jessie-v20160606 debian-cloud debian-8 READY

debian-8とさえ指定していれば、最新のdebian-8を選択してくれるので、便利な機能です。

しかし、Aliasは自分が作成した Custom Imageには設定できず、最初から存在しているImage専用の機能でした。

そのため、Custom Imageを指定してImage Templateを作っている場合、Version Upする度にImage Templateを作りなおす必要がありました。


image-family

その状況を覆すために生まれたのが、image-familyです。image-familyはAliasと同じようにImageに設定され、Instance作成時に指定できます。

また、Custom Imageにもimage-familyを設定できるようになりました。

gcloud compute images create HOGE --family FAMILY

NAME               FAMILY

image-v20160517a sample
image-v20160517b sample

image-familyを利用する場合、明示的に --image-familyを利用します。

gcloud compute instances create HOGE --image-family FAMILY

FAMILYにsampleを指定した場合、sampleの中で最も名前が大きい image-v20160517b が利用されます。

これで、Custom Imageを更新する度に、imageを指定するNAMEを変更する必要がなくなりました。


Breaking Changes

image-familyがリリースされたことで、image aliasesは利用することができなくなりました。そのため--imageを指定する場合は、完全なimage名を指定する必要があります。

gcloud sdk 114.0.0から適用されているので、updateする時は気を付けてください。

gcloud compute instances create hoge --image "/debian-cloud/debian-8-jessie-v20160606"

114.0.0 (2016/06/15)

Breaking Changes

▪ (Google Compute Engine) Deprecated the use of image aliases. Please
use image families instead. See
https://cloud.google.com/compute/docs/images for more details.