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.