rancheros

RancherOS cloud-config.yml メモ

More than 1 year has passed since last update.

はじめに

こんにちは、 @FoxBoxsnet です。

  • CloudGarage 早速いじってみた - Part.09 RancherOS をインストールする

を書いてたら、以外に説明項目が多かったので別記事にしました。
記事のない内容は、 2017/09/10 現在 になります。

RancherOS とは

コンテナ による、 コンテナ のための、シンプルで軽量な OS

Docker に特価している

RancherOS インストール時からDockerのインストールが完了していて、すぐに使用出来ます。

  • Docker ver.
    • docker-1.12.6
    • docker-1.13.1
    • docker-17.03.1-ce
    • docker-17.03.2-ce (defaults)
    • docker-17.04.0-ce
    • docker-17.05.0-ce
    • docker-17.06.1-ce

サイズが小さくて起動が早い

  • ISOイメージは 59MB と非常に軽量

System Docker / User Docker が別れている

  • System Docker
    • reboot
    • docker
    • preload-user-images
    • cloud-init-execute
    • ntp
    • network
    • udev
    • all-volumes
    • system-cron
    • syslog
    • udev-cold
    • acpid
    • logrotate
    • user-volumes
    • system-volumes
    • media-volumes
    • container-data-volumes
    • command-volumes
    • console
  • User Docker
    • User が起動するコンテナが全てここになります。

write_files:

公式ドキュメント: Writing Files in RancherOS

ファイルの変更が必要な場合は、 write_files: で記述する事をおすすめします。
RancherOS では、ほとんどの サービス が Docker で稼働している為再起動で設定が消える可能性があるためです。

cloud-config.yml
#cloud-config
write_files:
  - container: ntp
    path: /etc/ntp.conf
    permissions: "0644"
    owner: root
    content: |
      server 0.pool.ntp.org iburst
      server 1.pool.ntp.org iburst
      server 2.pool.ntp.org iburst
      server 3.pool.ntp.org iburst

      # Allow only time queries, at a limited rate, sending KoD when in excess.
      # Allow all local queries (IPv4, IPv6)
      restrict default nomodify nopeer noquery limited kod
      restrict 127.0.0.1
      restrict [::1]

runcmd:

公式ドキュメント: Running Commands in RancherOS

起動時にコマンドを実行できる。

Dockerfile の CMD のように記述します。

cloud-config.yml
#cloud-config
runcmd:
- [ touch, /home/rancher/test1 ]
- echo "test" > /home/rancher/test2

hostname:

公式ドキュメント: Setting the Hostname in RancherOS
hostname を設定出来ます。

cloud-config.yml
#cloud-config
hostname: myhost

rancher:

ここには、 Rancher に関する、設定の記述をしていきます。

cloud-config.yml
#cloud-config
rancher:
  console: ubuntu
  docker:
    engine: docker-17.03.1-ce
  network:
    interfaces:
      eth1:
        mtu: 1500
        dhcp: true
    dns:
      search:
        - mydomain.com
        - example.com

console:

公式ドキュメント: Switching Consoles in RancherOS

RancherOS は Service がすべてコンテナで起動しているので、
system-docker の Console が ユーザーがログインするコンテナです。

SSHもこのコンテナにログインすることになります。

2017/09/13 現在
shell-session
$ sudo ros console list
disabled alpine
disabled centos
disabled debian
disabled default
disabled fedora
current ubuntu

上記のように、 apline, centos, debian, default, fedora, ubuntu のOSのコンソールが利用可能です。

私は、 ubuntu を利用しているので ubuntu の設定を書いときます。

コンテナは TimeZone UTC になっているため、 environment: に TimeZone の環境変数で JST-9 を指定して JST にします。

cloud-config.yml
#cloud-config
rancher:
  console: ubuntu
  services:
    console:
      environment:
        TZ: JST-9

docker:

公式ドキュメント: Changing Docker Versions in RancherOS

Docker の version の指定などが出来ます。
Docker Regisutory v2 の時に LTS 設定必要な設定などが設定出来ます。

cloud-config.yml
#cloud-config
rancher:
  docker:
    engine: docker-17.03.1-ce

network:

公式ドキュメント: Configuring Network Interfaces in RancherOS

ネットワークの設定
interfaces, dns などを記述できます。

cloud-config.yml
#cloud-config
rancher:
  network:
    interfaces:
      eth1:
        mtu: 1500
        dhcp: true
    dns:
      search:
        - mydomain.com
        - example.com

interfaces:

公式ドキュメント: Configuring Network Interfaces in RancherOS

interfaces の設定で static IP などを設定出来ます。
OpenStackなどの上で動かすさいの MTU の設定などもあります。

cloud-config.yml
#cloud-config
rancher:
  network:
    interfaces:
      eth1:
        mtu: 1500
        dhcp: true

dns: Configuring DNS in RancherOS

公式ドキュメント:

dns の設定です。

cloud-config.yml
#cloud-config
rancher:
  network:
    dns:
      search:
        - mydomain.com
        - example.com

proxy:

公式ドキュメント: Configuring Proxy Settings in RancherOS

proxy の設定です

cloud-config.yml
#cloud-config
rancher:
  network:
    http_proxy: https://myproxy.example.com
    https_proxy: https://myproxy.example.com
    no_proxy: localhost,127.0.0.1

ssh_authorized_keys:

公式ドキュメント:

SSH Key はこのように記述します。

#cloud-config
ssh_authorized_keys:
  - ssh-rsa AAA...ZZZ example1@rancher
  - ssh-rsa BBB...ZZZ example2@rancher

最後に

cloud-config.yml の書き方をまとめてみました。

他にも書き方がわからないなどあれば、

Rancher JP Slack #qa に投稿してみてください.