LoginSignup
5
5

More than 5 years have passed since last update.

Rancher.ioでDockerコンテナを管理する - Part2: IDCFクラウドにSaltとDockerをインストール

Last updated at Posted at 2015-01-09

以前少し調べてたDockerコンテナ管理ツールのRancher.ioをIDCFクラウドに構築していこうと思います。はじめにSaltを使ってDockerをインストールします。Saltの構築用にsalt-configのひな形を用意しました。salt-masterとsalt-minion用の仮想マシンを1台ずつ作成しておきます。

SLSファイル

このひな形に用意しているSLSファイルは以下になります。

$ tree /srv/salt/config/salt/
/srv/salt/config/salt/
├── base.sls
├── common.sls
├── docker
│   └── init.sls
├── emacs
│   └── init.sls
├── misc.sls
├── s3cmd
│   ├── init.sls
│   └── s3cfg
└── top.sls

top.slsにGrainで定義したロールごとにインストールするパッケージを分けています。Dockerはどちらのロールでもインストールされます。

/srv/salt/config/salt/top.sls
base:
  '*':
    - base
    - users
  'roles:salt-master':
    - match: grain
    - docker
  'roles:dev':
    - match: grain
    - emacs
    - s3cmd
    - docker

まだIDCFオブジェクトストレージは使いませんが、Pillarを編集してキー情報を設定すれば使えるようにしています。

$ cd /srv/salt/config/pillar
$ cp s3cmd.sls.sample s3cmd.sls
$ vi s3cmd.sls
s3cmd:
  access_key: xxx
  secret_key: xxx

salt-masterのインストール

salt-masterの仮想マシンにログインしてrootで作業します。

$ apt-get update && apt-get install -y git
$ git config --global user.name "Masato Shimizu" 
$ git config --global user.email "ma6ato@gmail.com" 
$ git config --global push.default simple

salt-configureのテンプレートをgit cloneします。

$ git clone --recursive git@github.com:masato/salt-config.git /srv/salt/config
$ cd /srv/salt/config

作業ユーザーを作成します。ssh_authは公開鍵を設定します。

$ cd /srv/salt/config/pillar/users
$ cp init.sls.sample init.sls
$ vi init.sls
users:
  mshimizu:
    fullname: Masato Shimizu
    password: xxx
    sudouser: True
    sudo_rules:
      - ALL=(ALL) NOPASSWD:ALL
    groups:
      - docker
    ssh_auth:
      - ssh-rsa AAAAB3Nzxxx

SLSや設定ファイルをコピーします。Salt Formulaはusers-formulaを使うため、GitHubのリポジトリをサブモジュールにしています。

$ mkdir -p /etc/salt/master.d
$ cp /srv/salt/config/etc/salt/master.d/master.conf /etc/salt/master.d
$ cat /etc/salt/master.d/master.conf
pillar_roots:
  base:
    - /srv/salt/config/pillar

file_roots:
  base:
    - /srv/salt/config/salt
    - /srv/salt/config/formulas/users-formula

salt-masterをインストールする仮想マシンにはsalt-minioもインストールします。Grainにsalt-minionのroleを定義します。

$ mkdir -p /etc/salt/minion.d
$ cat <<EOF >  /etc/salt/minion.d/grains.conf
grains:
  roles:
    - salt-master
EOF

salt-masterをbootstrapからインストールします。salt-minionサービスも起動します。

$ curl -L http://bootstrap.saltstack.com | sh -s -- -M
$ service salt-minion start

Saltは2014.7.0 (Helium)がインストールされました。

$ salt --version
salt 2014.7.0 (Helium)

salt-minionのインストール

salt-minionの仮想マシンにログインしてrootで作業します。Grainにsalt-minionのroleを定義します。

$ mkdir -p /etc/salt/minion.d
$ cat <<EOF >  /etc/salt/minion.d/grains.conf
grains:
  roles:
    - dev
EOF

salt-minionをbootstrapからインストールしてサービスを起動します。

$ curl -L https://bootstrap.saltstack.com | sh
$ service salt-minion start

salt-keyで公開鍵の認証

salt-masterの仮想マシンにログインします。salt-keyコマンドを使い接続要求を出しているsalt-minionの公開鍵を承認します。

$ salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
minion1.cs3d0idcfcloud.internal
salt.cs3d0idcfcloud.internal
Proceed? [n/Y] Y
Key for minion minion1.cs3d0idcfcloud.internal accepted.
Key for minion salt.cs3d0idcfcloud.internal accepted.

state.highstate

state.highstateを実行して、すべてのSLSをsalt-minionに適応します。

$ salt '*' state.highstate

確認

SaltでインストールしたDockerのバージョンを確認します。Dockerは1.4.1、Goは1.3.3がインストールされました。

$ salt '*' cmd.run 'docker version'
salt.cs3d0idcfcloud.internal:
    Client version: 1.4.1
    Client API version: 1.16
    Go version (client): go1.3.3
    Git commit (client): 5bc2ff8
    OS/Arch (client): linux/amd64
    Server version: 1.4.1
    Server API version: 1.16
    Go version (server): go1.3.3
    Git commit (server): 5bc2ff8
minion1.cs3d0idcfcloud.internal:
    Client version: 1.4.1
    Client API version: 1.16
    Go version (client): go1.3.3
    Git commit (client): 5bc2ff8
    OS/Arch (client): linux/amd64
    Server version: 1.4.1
    Server API version: 1.16
    Go version (server): go1.3.3
    Git commit (server): 5bc2ff8
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5