0%

Salt with Docker - Part1: Dockerインストール

IDCFクラウドのCLIでSaltをプロビジョニングするでsalt-masterとsalt-minionをインストールした環境をしばらく放置していました。Kubernetesの構築ではSaltが重要な位置を占めているのでSaltの復習をしたいと思います。
ちょうど開発用のWordPressのコンテナを用意する必要があったので、Docker Statesを作成してminionにインストールします。

salt-minionのインスタンス作成

salt-minion用のインスタンスを作成してからインストールコマンドを実行します。
名前はminion-wpとしました。

$ salt-install minion-wp minion
...
salt-minion start/running, process 3179
Setting up debconf-utils (1.5.42ubuntu1) ...
* INFO: Running install_ubuntu_check_services()
* INFO: Running install_ubuntu_restart_daemons()
* INFO: Salt installed!

salt-minion公開鍵をsalt-masterに登録

salt-masterのホストで、salt-minionの未承認の公開鍵を一覧します。

$ sudo salt-key -L
Accepted Keys:
minion1.cs29dcloud.internal
minion2.cs29dcloud.internal
salt.cs29dcloud.internal
Unaccepted Keys:
minion-wp.cs29dcloud.internal
Rejected Keys:

作成したminion-wpの公開鍵を承認します。

$ sudo salt-key -a minion-wp.cs29dcloud.internal
The following keys are going to be accepted:
Unaccepted Keys:
minion-wp.cs29dcloud.internal
Proceed? [n/Y] Y
Key for minion minion-wp.cs29dcloud.internal accepted.

再度一覧すると、すべてAccepted Keysに追加されています。

$ sudo salt-key -L
Accepted Keys:
minion-wp.cs29dcloud.internal
minion1.cs29dcloud.internal
minion2.cs29dcloud.internal
salt.cs29dcloud.internal
Unaccepted Keys:
Rejected Keys:

docker/init.sls

Automating application deployments across clouds with Salt and Dockerを参考にして、Salt Statesを作成します。
docker-formulaもありますが、salt.states.dockerioを実行するためのdocker-pyがインストールされないので、自分で定義することにします。

/srv/salt/docker/init.sls
docker-python-pip:
pkg.installed:
- name: python-pip

docker-python-dockerpy:
pip.installed:
- name: docker-py
- repo: git+https://github.com/dotcloud/docker-py.git
- require:
- pkg: pkg-core
- pkg: docker-python-pip

docker-dependencies:
pkg.installed:
- pkgs:
- iptables
- ca-certificates
- lxc

docker-repo:
pkgrepo.managed:
- humanname: Docker Repo
- name: deb https://get.docker.io/ubuntu docker main
- key_url: https://get.docker.io/gpg
- require:
- pkg: pkg-core

lxc-docker:
pkg.latest:
- require:
- pkg: docker-dependencies

docker:
service.running

base.sls

共通のbase.slsは、Kubernetesを参考にします。

localeはja_JP.UTF-8を指定します。

/srv/salt/base.sls
pkg-core:
pkg.installed:
- names:
- apt-transport-https
- python-apt
- git
- language-pack-ja

ja_JP.UTF-8:
locale.system

top.sls

top.slsにはbase環境を1つだけ定義します。

/srv/salt/top.sls
base:
'*':
- base
- docker

state.highstate

salt-masterからstate.highstateを実行して、minion-wpにDockerをインストールします。

$ sudo salt 'minion-wp*' state.highstate
...
Summary
------------
Succeeded: 9
Failed: 0
------------
Total: 9