使用 Ansible 操纵 Vagrant 中的 CoreOS Docker

(MacOSX10.9,Vagrant1.7.2)的汉语翻译为:(MacOSX10.9,Vagrant1.7.2)

目标

尝试使用在CoreOS官方网站介绍的Ansible来管理CoreOS。
基本上按照文章中的Example Playbook部分。
我个人还想尝试加上Nginx停止和重新启动的Playbook来进行测试。

    https://coreos.com/blog/managing-coreos-with-ansible/

安装

流浪者

    http://docs.vagrantup.com/v2/installation/

安弗赛布

在本地安装Ansible

    http://docs.ansible.com/intro_installation.html#installing-the-control-machine

使用Vagrant来配置CoreOS环境。

$ git clone https://github.com/defunctzombie/coreos-ansible-example.git
$ cd coreos-ansible-example
$ vagrant up
$ ./bin/generate_ssh_config

核心操作系统引导

使用Ansible在核心os内使python和pip可用。

    https://github.com/defunctzombie/ansible-coreos-bootstrap
$ 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",
            ...

示例剧本

拉取并启动nginx容器。

$ ansible-playbook -i inventory/vagrant website.yml
    https://github.com/defunctzombie/coreos-ansible-example/blob/master/website.yml

我們可以在網頁瀏覽器上確認一下。

    http://172.12.8.101:8080/
スクリーンショット 2015-05-31 12.54.53.png

尝试添加一个用于停止和重新启动Nginx的Playbook。

除了这篇文章外,以下是个人的补充。

停止 nginx

创建文件

- 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

当我使用网络浏览器进行确认时,发现无法连接。

    http://172.12.8.101:8080/

重新启动Nginx

创建文件

- 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

当在网络浏览器中进行确认时,它会显示出来。

    http://172.12.8.101:8080/
スクリーンショット 2015-05-31 12.54.53.png

[补充说明] 尝试使用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 服务。

core@core-01 ~ $ sudo vim /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 {
        ...

请参阅

    • https://coreos.com/blog/managing-coreos-with-ansible/

 

    • https://coreos.com/docs/launching-containers/launching/getting-started-with-systemd/

 

    http://docs.ansible.com/docker_module.html
广告
将在 10 秒后关闭
bannerAds