Category Archives: coreos

[coreos]CoreOSインストール時に使ったcloud-configはどこに行ったの?

Pocket

自分でCoreOSをインストールするときには、初期設定を書き込んだcloud-configを読み込ませる。
ファイル一つでOSの設定を全部、賄えるとは、なんてお手軽なんだろう。

あれ?
ではインストール後に、そういった設定を変更したい場合にはどうしたらよいのだろう。
もちろん、CoreOSだってLinuxなんだから、/etc下に設定ファイルが転がっているのは百も承知。
しかしCoreOSなんだから、一つのファイルで全部、管理したいじゃないか。

インストール後のcloud-configの場所

答え:
インストール時に使用したcloud-configは、/var/lib/coreos-install/user_dataに保存されているので、これを書き換えればよい。

例。
インストール後に、CoreOSの更新方法を変える。
更新方法は/etc/coreos/update.confでも設定できるが、上述の理由から、敢えてuser_dateで操作する。

では早速。
/var/lib/coreos-install/user_dataに以下の行を加えればよい。
※以下の例ではreboot-strategyにbest-effortを指定している。

 coreos:
   update:
     reboot-strategy: best-effort

CoreOSをリブートすると、/etc/coreos/update.confに以下の通り、最後の一行が増えている。

$ cat update.conf
GROUP=stable
REBOOT_STRATEGY=best-effort

なお、CoreOSのバージョンは/etc/os-releaseに記載あり。

$ cat /etc/os-release
NAME=CoreOS
ID=coreos
VERSION=835.11.0
VERSION_ID=835.11.0
BUILD_ID=
PRETTY_NAME="CoreOS 835.11.0"
ANSI_COLOR="1;32"
HOME_URL="https://coreos.com/"
BUG_REPORT_URL="https://github.com/coreos/bugs/issues"

参考
https://github.com/coreos/coreos-cloudinit/blob/master/Documentation/cloud-config.md#update
https://coreos.com/os/docs/latest/update-strategies.html

https://coreos.com/os/docs/latest/cloud-config-locations.html
On every boot, coreos-cloudinit looks for a config file to configure your host. Here is a list of locations which are used by the Cloud-Config utility, depending on your CoreOS platform:

/var/lib/coreos-install/user_data
When you install CoreOS manually using the coreos-install tool. Usually used in bare metal installations.

タスク管理ツールWekan(Trelloクローン)+VirtualBox+CoreOS+docker

Pocket

WekanとはTrelloクローン。
鉄壁のセキュリティに守られて、インターネッツに出て行けず、世の中のイケてるサービスを使えないせいで、「サービス名」+「alternative」というキーワードで検索するのが癖になっている今日この頃です。
Trelloのalternativeで見つけたのがWekan。
これをCoreOSにインストールする。

VirtualBox上のCoreOSにはdockerまでインストール済みの前提。
以下の手順に沿ってインストールする。
https://github.com/wekan/wekan/wiki/Install-Wekan-Docker-for-testing
https://docs.docker.com/compose/install/

URLの示す通り、テスト目的。
大量のユーザを相手にするのでなければ、これでも大丈夫でしょう。
参考までに書いておくと、テスト目的と、下記の本番用で示される構成の違いは、フロントエンドにApacheがあること。
テスト目的の方の手順だと、ユーザがいきなりWekanに接続する。

https://github.com/wekan/wekan/wiki/Install-Wekan-Docker-in-production

繰り返すが、本稿ではWekanに直接、繋げさせる構成でセットアップする。

docker-composeのインストール。

まず、docker-composeのインストール。
docker-composeはdockerの管理ツール。
インストール済みならこの章は飛ばしてよい。
公式サイトの手順だと、/usr/local/bin下にインストールすることになっているが、CoreOSだと読み取り専用なので、そこ以外の、たとえばホームディレクトリのbin下等に置く。
実行権限の付与も忘れないように。

$ curl -L https://github.com/docker/compose/releases/download/1.5.2/docker-compose-`uname -s`-`uname -m` > ~/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   600    0   600    0     0    687      0 --:--:-- --:--:-- --:--:--   697
100 7739k  100 7739k    0     0  1458k      0  0:00:05  0:00:05 --:--:-- 1840k
$ chmod +x ./bin/docker-compose
$ ls -la ./bin/
total 7760
drwxr-xr-x 2 nobwak nobwak    4096 Jan  1 12:17 .
drwxr-xr-x 5 nobwak nobwak    4096 Dec  7 14:05 ..
-rwxr-xr-x 1 nobwak nobwak 7925655 Jan  1 12:17 docker-compose

docker-compose.ymlの作成。

wekanをインストールするディレクトリにdocker-compose.ymlを作成する。
以下の例では、ホストOS、つまりCoreOSのポート8081で待ち受ける。

wekan:
  image: mquandalle/wekan
  links:
    - wekandb
  environment:
    - MONGO_URL=mongodb://wekandb/wekan
    - ROOT_URL=http://localhost:80
  ports:
    - 8081:80

wekandb:
   image: mongo
   volumes:
     - /home/wekan/data:/data/db

もし、ホストOSの起動時に自動的にWekanも起動させたい場合には、冒頭部分を以下のように書き換える。

  wekan:
    image: mquandalle/wekan
    restart: always

Wekanの起動

docker-composeから立ち上げる。
まずdocker-compose –helpとして使い方を一覧しておこう。
初回起動時はupだが、二回目以降はstartで良さそうだ。

 $ docker-compose --help
Define and run multi-container applications with Docker.

Usage:
  docker-compose [-f=...] [options] [COMMAND] [ARGS...]
  docker-compose -h|--help

Options:
  -f, --file FILE           Specify an alternate compose file (default: docker-compose.yml)
  -p, --project-name NAME   Specify an alternate project name (default: directory name)
  --x-networking            (EXPERIMENTAL) Use new Docker networking functionality.
                            Requires Docker 1.9 or later.
  --x-network-driver DRIVER (EXPERIMENTAL) Specify a network driver (default: "bridge").
                            Requires Docker 1.9 or later.
  --verbose                 Show more output
  -v, --version             Print version and exit

Commands:
  build              Build or rebuild services
  help               Get help on a command
  kill               Kill containers
  logs               View output from containers
  pause              Pause services
  port               Print the public port for a port binding
  ps                 List containers
  pull               Pulls service images
  restart            Restart services
  rm                 Remove stopped containers
  run                Run a one-off command
  scale              Set number of containers for a service
  start              Start services
  stop               Stop services
  unpause            Unpause services
  up                 Create and start containers
  migrate-to-labels  Recreate containers to add labels
  version            Show the Docker-Compose version information

実際に作成&起動。

$ sudo ~/bin/docker-compose up
Creating wekan_wekandb_1
Creating wekan_wekan_1
Attaching to wekan_wekandb_1, wekan_wekan_1
wekan_1   | => Starting meteor app on port:80
(略)

もしうまくいかない場合には、imagesをいったん削除してやり直してみよう。
エラーなど無さそうなら次のステップへ。
なお、問題なく動作することを確認できたら、Ctrl+Cで停止。
次回以降は

docker-compose -d start

でよし。

VirtualBoxでポートフォワーディングの設定

上記で設定したCoreOSの待ち受けポートへの、VirtualBox上でのフォワーディングを設定する。
以下の例ではVirtualBoxを動かしているホストの8082が、VirtualBox上CoreOSの8081にフォワーディングされる。

13

接続確認

前章で設定したポートにブラウザで繋ぐ。
本稿の例で言えば、http://127.0.0.1:8082へ繋ぐ。
以下の画面になればOK
9
ユーザを新規登録し、もし英語が嫌なら設定を変える。
12

ボードとリストの設定。

ボードは適当に、リストは http://www.sekai-lab.com/times/?p=473 を参考に作成。
というか、どういうリストを作ればよいか、って結構なノウハウだと思うのだが、ありがたや。

 1. Tasks:タスクリスト(アサインと期日が定まっていないタスク)
 2. Todo:やることリスト(アサインと期日が定まったタスク, 優先順位を手動で並べ替える)
 3. Today:今日やることリスト
 4. Doing:作業中のタスク
 5. In review:他人がレビュー中のタスク(アサインをレビュー者に変更!)
 6. Done:完了したタスク

以上

No tags for this post.

[memo] CoreOSのインストール

Pocket

CoreOSを自分でインストールする。
目的は、VirtualBoxや、VMWarePlayer, vSphere(ESXi)等で動かす自前のCoreOSイメージを作成するため。

CoreOSの初期設定

CoreOSはユーザアカウント等の初期設定をインストール時に一括で行う。
「一括で」とわざわざ書いたのには理由がある。
通常、LinuxやFreeBSDなどのインストールでは、インストール時に対話インタフェースが実行され、質問に答える形で各種設定を行う。
しかしCoreOSでは、あらかじめ準備した設定ファイルを、インストール時に指定する方法を採る。
つまり設定ファイルさえ書いておけば、コマンド一発でインストールができるということ。

その設定ファイルがCloud-Config。

Cloud-Configの書き方

ここに記載がある。
https://coreos.com/os/docs/latest/cloud-config.html

いきなりここにあるすべての設定を書き込むのは、後述の手順を見てもかなり大変。
よって、必要最低限のものしか書かない。
具体的には、CoreOSにターミナルログインするユーザ設定のみ。
そこから先は、OSインストール後に実施する。

ISOイメージでブート

https://coreos.com/os/docs/latest/booting-with-iso.html
上記からダウンロード。
VirtualBoxでもなんでも、すきな仮想ソフトウェアに読み込ませて起動する。
なお、仮想マシン作成時、OSを選ぶ際には64bit Linuxを選んでおけばよい。

Cloud-Configを書く前に

必要なのは、作業用アカウントの設定だけ。
したがって、ID、パスワード、作業用アカウントの権限くらいでよい。
当然のことながらパスワードを平文で保存するわけにはいかないから、mkpasswdを使ってハッシュ化したものを書き込むこと。

パスワードハッシュの生成

作業用アカウントのパスワードハッシュを生成する。
もちろん、SSHの公開鍵でもいいのだが、パスワードハッシュの方が楽。

mkpasswdの使い方はmkpasswd -hで得られる。

 $ mkpasswd -h
Usage: mkpasswd [OPTIONS]... [PASSWORD [SALT]]
Crypts the PASSWORD using crypt(3).

      -m, --method=TYPE     select method TYPE
      -5                    like --method=md5
      -S, --salt=SALT       use the specified SALT
      -R, --rounds=NUMBER   use the specified NUMBER of rounds
      -P, --password-fd=NUM read the password from file descriptor NUM
                            instead of /dev/tty
      -s, --stdin           like --password-fd=0
      -h, --help            display this help and exit
      -V, --version         output version information and exit

If PASSWORD is missing then it is asked interactively.
If no SALT is specified, a random one is generated.
If TYPE is 'help', available methods are printed.

ハッシュ生成方法についてはmkpasswd -m helpで得られる。

$ mkpasswd -m help
Available methods:
des     standard 56 bit DES-based crypt(3)
md5     MD5
sha-256 SHA-256
sha-512 SHA-512

SHA-512までいけますね。
では、ハッシュ生成。
いったんテストして問題ないようなら、テキストファイルに書き込む。

$ mkpasswd -m sha-512 avedakedavra
$6$hIKFY6fnAE$gfpPpQu3rAcJMCeO3t93/3jUxVKBe7W/hC1.n5kwge3nnqsQngVnnoM8.jyWv/jYKbsJZoBm/6SSO7Ge4Zx/B0
$ mkpasswd -m sha-512 avedakedavra > cloud-config
$

以上でカレントディレクトリのcloud-configが生成された。
あとはこのcloud-configに必要な設定を書き加えるだけ。

Cloud-configの作成

設定ファイルの書式はYAML
YAMLは人間の眼には易しいが、フォーマットが合っているか不安になる。
その場合はatom等で書いておいてもよい。ハイライトしてくれるパッケージもある

そこで先述の通り必要最低限の記載だけする。
hostnameでホスト名、追加したいユーザと、そのユーザがsudoとdockerを使えるよう、groupに追加する。
以下のように。

#cloud-config

  hostname: "coreos"
  users:
    - name: "nobwak"
      passwd: $6$hIKFY6fnAE$gfpPpQu3rAcJMC....
      groups:
        - "sudo"
        - "docker"

 

CoreOSのインストール

作成したcloud-configを指定してインストールすればよい。
-dでインストール先デバイスを、-Cでチャネルを、-cで先ほど作成したcloud-configを指定する。

sudo coreos-install -d /dev/sda -C stable -c cloud-config

起動したら、作成したユーザでログインすることを確認する。
 

No tags for this post.