tjinjin's blog

さらなる高みに1nmずつ近づくブログ

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

リンク