SLSで構築したminionのDockerに、Docker Statesモジュールを使いWordPressコンテナを作成してみます。
Saltには組み込みのStateモジュールたくさんあるので多くのことができますが、DockerでCMツールをどこまで使うべきなのか見極めが問題です。
tutum/wordpress-stackableのイメージ
DockerイメージはTutumのtutum/wordpress-stackableを使います。WordPressとMySQLが別コンテナなので、MySQLはtutum/mysql:5.5を使います。
WordPressコンテナのSLS
WordPressをインストールするためのSLSを作成します。SLSはYAML形式でFigっぽく書けます。
WordPressコンテナの起動前にMySQLコンテナが起動している必要があるため、statesのrequire_in
がちょっと複雑になります。
/srv/salt/wordpress/init.slsmysql-image: docker.pulled: - name: tutum/mysql:5.5 - require_in: mysql-container
mysql-container: docker.installed: - name: db - image: tutum/mysql:5.5 - environment: - "MYSQL_PASS": "password" - require_in: mysql
mysql: docker.running: - container: db - port_bindings: "3360/tcp": HostIp: "" HostPort: "3360" - require_in: wordpress
wordpress-image: docker.pulled: - name: tutum/wordpress-stackable - require_in: wordpress-container
wordpress-container: docker.installed: - name: wordpress - image: tutum/wordpress-stackable - environment: - "DB_PASS": "password" - require_in: wordpress
wordpress: docker.running: - container: wordpress - links: db: db - port_bindings: "80/tcp": HostIp: "" HostPort: "80"
|
Statesの実行
highstateでなく、作成したWordPressのStatesを指定してminion-wpに実行します。
$ sudo salt 'minion-wp*' state.sls wordpress -v ... Summary ------------ Succeeded: 6 Failed: 0 ------------ Total: 6
|
Figの場合
tutum/wordpress-stackableには、Figの設定ファイルも用意されています。SLSよりもシンプルにまとまります。
fig.ymlwordpress: build: . links: - db ports: - "80:80" environment: DB_NAME: wordpress DB_USER: admin DB_PASS: "**ChangeMe**" DB_HOST: "**LinkMe**" DB_PORT: "**LinkMe**" db: image: tutum/mysql:5.5 environment: MYSQL_PASS: "**ChangeMe**"
|
確認
minionのノードをブラウザから開いて確認します。WordPressのインストール画面が表示されました。