gloudからcloud-configを渡してcoreosを起動する
gceの検証で試してみました。
試してみる
cloud-configを作る
適当に作成します。
coreos: units: - name: docker.service command: start - name: timezone.service command: start content: | [Unit] Description=timezone [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/ln -sf ../usr/share/zoneinfo/Japan /etc/localtime - name: aaa.service command: start content: | [Unit] Description=aaa After=docker.service [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/docker run ubuntu:14.04 /bin/echo 'Hello world' users: - name: coreuser1 passwd: aaaaaaaaa group: - sudo - docker
インスタンスを作る
gcloudでインスタンスを起動するときにcloud-config.ymlを渡すことができるようです。
gcloud compute instances create core1 --image https://www.googleapis.com/compute/v1/projects/coreos-cloud/global/images/coreos-stable-766-5-0-v20151105 --zone asia-east1-b --machine-type n1-standard-1 --metadata-from-file user-data=cloud-config.yml
ログインして確認する
$ gcloud compute ssh core1 $ sudo systemctl status aaa ● aaa.service - aaa Loaded: loaded (/etc/systemd/system/aaa.service; static; vendor preset: disabled) Active: active (exited) since Sat 2015-11-07 23:09:56 JST; 3min 54s ago Process: 700 ExecStart=/usr/bin/docker run ubuntu:14.04 /bin/echo Hello world (code=exited, status=0/SUCCESS) Main PID: 700 (code=exited, status=0/SUCCESS) Memory: 0B CPU: 0 CGroup: /system.slice/aaa.service ... $ id coreuser1 uid=1000(coreuser1) gid=1000(coreuser1) groups=1000(coreuser1) $ date Sat Nov 7 23:17:17 JST 2015
起動したサーバはお掃除しましょうね〜(´・ω・)(・ω・`)ネー
$ gcloud compute instances list $ gcloud compute instances delete core1
まとめ
coreosというかsystemd入門になりましたね。サーバのbootstrapをcloud-configで行うようなイメージですかねー。もう1歩進んで、サービスが終わったら、インスタンス自身をインスタンス内から削除させたいんですけどどうすればいいんでしょうね。
おまけ
metaデータの取り方です。何か使えるかな。
$ curl -s http://metadata.google.internal/computeMetadata/v1/instance/ -H "Me tadata-Flavor: Google" attributes/ cpu-platform description disks/ hostname id image machine-type maintenance-event network-interfaces/ scheduling/ service-accounts/ tags virtual-clock/ zone
gcpja - GCE AutoHeading構成構築メモ - Qiita