(MacOSX10.9, Vagrant1.7.2)
目的
CoreOS 公式サイトで紹介されていた Ansible で CoreOS を管理する方法を試してみる。
基本的に記事の Example Playbook
の箇所まではそのまま。
個人的に Nginx の停止・再起動の Playbook を追加して試してみる。
インストール
Vagrant
Ansible
ローカルに Ansible をインストールする
Vagrant で CoreOS 環境を構築する
$ git clone https://github.com/defunctzombie/coreos-ansible-example.git
$ cd coreos-ansible-example
$ vagrant up
$ ./bin/generate_ssh_config
coreos-bootstrap
Ansible で coreos 内で python と pip を使えるようにする。
$ ansible-galaxy install defunctzombie.coreos-bootstrap -p ./roles
bootstrap.yml を実行する
$ ansible-playbook -i inventory/vagrant bootstrap.yml
対象ホストの情報を取得してみる
$ ansible -i inventory/vagrant all -m setup
core-01 | success >> {
"ansible_facts": {
"ansible_all_ipv4_addresses": [
"172.17.42.1",
"172.12.8.101",
...
Example Playbook
nginx container を pull して起動する。
$ ansible-playbook -i inventory/vagrant website.yml
web ブラウザで確認してみる
Nginx の停止・再起動の Playbook を追加してみる
ここから記事とは別に個人的な追記。
nginx を停止する
ファイルを作成する
stop_nginx.yml
- name: example stop nginx
hosts: web
tasks:
- name: stop nginx
docker:
image="nginx:1.7.1"
name="example-nginx"
ports="8080:80"
state=stopped
実行する
$ ansible-playbook -i inventory/vagrant stop_nginx.yml
PLAY [example stop nginx] *****************************************************
GATHERING FACTS ***************************************************************
ok: [core-01]
TASK: [stop nginx] ************************************************************
changed: [core-01]
PLAY RECAP ********************************************************************
core-01 : ok=2 changed=1 unreachable=0 failed=0
web ブラウザで確認すると接続できなくなっている
nginx をリスタートする
ファイルを作成する
restart_nginx.yml
- name: example restart nginx
hosts: web
tasks:
- name: restart nginx
docker:
image="nginx:1.7.1"
name="example-nginx"
ports="8080:80"
state=restarted
実行する
$ ansible-playbook -i inventory/vagrant restart_nginx.yml
PLAY [example restart nginx] **************************************************
GATHERING FACTS ***************************************************************
ok: [core-01]
TASK: [restart nginx] *********************************************************
changed: [core-01]
PLAY RECAP ********************************************************************
core-01 : ok=2 changed=1 unreachable=0 failed=0
web ブラウザで確認すると表示されている
[追記] systemd でサービスを起動してみる
まず nginx の docker イメージを削除する
$ vagrant ssh core-01
core@core-01 ~ $ docker ps
core@core-01 ~ $ docker kill example-nginx
core@core-01 ~ $ docker rm example-nginx
起動していない事を確認する。
core@core-01 ~ $ curl http://172.12.8.101:8080/
curl: (7) Failed to connect to 172.12.8.101 port 8080: Connection refused
nginx.service を作成する
core@core-01 ~ $ sudo vim /etc/systemd/system/nginx.service
/etc/systemd/system/nginx.service
[Unit]
Description=example-nginx-description
After=docker.service
Requires=docker.service
[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill example-nginx
ExecStartPre=-/usr/bin/docker rm example-nginx
ExecStartPre=/usr/bin/docker pull nginx:1.7.1
ExecStart=/usr/bin/docker run -d -p 8080:80 --name example-nginx nginx
[Install]
WantedBy=multi-user.target
systemctl で起動する
sudo systemctl enable /etc/systemd/system/nginx.service
core@core-01 ~ $ sudo systemctl start nginx.service
起動しているか確認する
core@core-01 ~ $ curl http://172.12.8.101:8080/
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
...