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