资讯专栏INFORMATION COLUMN

使用 Ansible 安装和构建 Docker

zacklee / 1809人阅读

摘要:最近,花了很大的兴趣在组合使用和上。步骤如下从那里,我们可以使用已经上传到的角色。我们的像如下简单,在与你的一起的一个文件名字为因此,像这样构建现在读者可以非常容易的适应各种方法。检出文件可能被忽略,并且被替换成命令获得更加大的效率。

最近,花了很大的兴趣在组合使用 Ansible 和 Docker上。所以我想这可以很好的描述一些技巧。

开始,安装 Docker。如果你已经安装了 Ansible 。 Paul Durivage 已经编写了一个在 Ubuntu 出色的安装 Docker 的工具,即使在内部实现,它也比官方安装指令容易。

如果我们在 Ubuntu 13.10 上启动,并且只从开发分支上运行 Ansible,而不安装它。步骤如下:

apt-get update
apt-get install git python-yaml python-jinja2 python-pycurl
git clone https://github.com/ansible/ansible.git
cd ansible
source ./hacking/env-setup

从那里,我们可以使用 Paul 已经上传到 Galaxy 的 docker_ubuntu 角色。因此我们可以使用一个简单的 CLI 调用下载它。

ansible-galaxy install angstwad.docker_ubuntu

并且通过在 /etc/ansible/hosts 创建一个 stub inventory 文件,写一个简单的 playbook 来使用它。

[local]
localhost

并且一个非常简单的 playbook 调用它,/tmp/docker.yml :

- hosts:local
  connection: local
  roles:
    - angstwad.docker_ubuntu

现在我们将调用 Ansible 来启动 Docker:

 ansible-playbook /tmp/docker.yml
 docker pull ubuntu

现在,一切都变得非常简单。但是让我感兴趣的部分是如何使用 Ansible 用最简单的方式来构建 docker-files 。我们一直喜欢的一件事就是自动化的便携式描述。并且使得比开发 bash 更加有效率。

这里有一个在 Docker 文件中使用 Ansible 的简单例子,因此我们可以在 Ansible 中编写复杂的自动化。而不是编写一份 Docker 命令以及 shell 脚本的大杂烩。允许我们的应用部署就像把他们部署在经典的虚拟服务器上。

我们的 Dockerfile 像如下简单,在 /tmp/build/Dockerfile

FROM ubuntu
 MAINTAINER yourname
 RUN apt-get -y update
 RUN apt-get install -y python-yaml python-jinja2 git
 RUN git clone http://github.com/ansible/ansible.git /tmp/ansible
 WORKDIR /tmp/ansible
 ENV PATH /tmp/ansible/bin:/sbin:/usr/sbin:/usr/bin
 ENV ANSIBLE_LIBRARY /tmp/ansible/library
 ENV PYTHONPATH /tmp/ansible/lib:$PYTHON_PATH
 RUN git clone http://github.com/yourusername/yourrepo.git /tmp/example
 ADD inventory /etc/ansible/hosts
 WORKDIR /tmp/examples
 RUN ansible-playbook site.yml -c local
 EXPOSE 22 3000
 ENTRYPOINT [“/usr/bin/foo”]

与你的 Dockerfile 一起的一个文件名字为 inventory:

[local]
localhost

因此,像这样构建:

docker build .

现在读者可以非常容易的适应各种方法。但是最明显的事情或许是打开不同的端口 或者是运行不同的 entry point 。git 检出文件可能被忽略,并且被替换成 "ADD" 命令获得更加大的效率。

这里最妙的是哪部分? 是你的 playbook 能干任何事情,并且做任何重的事情。

下一步要做的更加具有逻辑的事情是用 Docker 分发你的容器,这个可以通过在 Ansbible 核心的 Docker 模块来实现。最好的经验,我们建议使用开发分支的 Ansible 预览版本,它支持最新版本的 Docker。

在这里看 Docker 模块的文件以及能力 See the Docker module documentation and capabilities here.

非常感谢 Cove Schneider 和 Pavel Antonov 开发的这个模块。

因此,结合 Ansbile 和 Docker ,只需要稍加挖掘,你能看到,你不仅能使用 Ansbile 管理你的容器构建进程,而且可以决定什么容器应该运行在哪里。

我希望这篇文章能帮助在探索文件的构建方面使事情更加简单。如果你想少一点手工组合,你也可以像这样组合 Packer 和 Docker。

  

注: Packer 是一个通过一个源文件跨平台构建同样镜像的工具

Related News

Deploying Highly Available OpenShift Origin Clusters | Ansible Me A Sandwich | Listen To Your Servers Talk | Fixing Heartbleed With Ansible | Orchestration, You Keep Using That Word

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28099.html

相关文章

  • Docker 到Jenkins 到Ansible的部署经验

    摘要:从到到的部署经验工作中,除了开发功能,还负责系统的部署工作。我从频繁的部署工作中,逐渐找到了一些偷懒的方法。同时在构建成功后执行我们输入的命令,来达到自动化部署的工作。缺点也是有的,很难保证对方部署的环境是最新的。 从Docker 到Jenkins 到Ansible的部署经验 工作中,除了开发功能,还负责系统的部署工作。我从频繁的部署工作中,逐渐找到了一些偷懒的方法。从传统的Java ...

    beanlam 评论0 收藏0
  • 技术干货 | 初次微服务体验:从Docker容器农场说起

    摘要:或许你的第一次微服务体验,就从本文开始在本文中,和等纷纷亮相,并配有详细的代码说明。该角色与本地网络及的配置设置相关。由于会在虚拟机初始化过程中自动执行配置任务,因此惟一的解决办法就是将相关内容提取至单独的剧本当中 这是一篇温和有趣的技术文章,如果你初识Docker,对微服务充满兴趣,不妨一读。或许你的第一次微服务体验,就从本文开始…… 在本文中,Mesos、Zookeeper、Ma...

    魏宪会 评论0 收藏0
  • 构建生产环境可用的高可用kubernetes集群

    摘要:集群三步安装构建生产环境可用的高可用集群项目地址特性支持任意节点的集群自动构建,且集群使用安全证书,通过方式启动,这样可以通过监控来监控集群健康状态支持多节点,允许任意一台宕机集群功能不受影响使用集群,配置安全证书,网络管控数据无单点故障包 kubernetes集群三步安装 构建生产环境可用的高可用kubernetes集群 | sealos项目地址 特性 [x] 支持任意节点的et...

    ShevaKuilin 评论0 收藏0
  • Rainbond 5.1.5发布,企业应用市场远程一键安装

    摘要:年月日,发布版本,本次版本更新带来了全新的应用市场交付体验,并对源码类服务的运行机制架构服务管理等方面做了大量优化。发布社区公开应用。我们正在进行的是将应用转化为应用存放于应用市场中供用户直接安装使用。 2019年7月8日,Rainbond发布5.1.5版本,本次版本更新带来了全新的应用市场交付Pipeline体验,并对源码类服务的运行机制、ServiceMesh架构、服务管理等方面做...

    Aomine 评论0 收藏0
  • Rainbond 5.1.5发布,企业应用市场远程一键安装

    摘要:年月日,发布版本,本次版本更新带来了全新的应用市场交付体验,并对源码类服务的运行机制架构服务管理等方面做了大量优化。发布社区公开应用。我们正在进行的是将应用转化为应用存放于应用市场中供用户直接安装使用。 2019年7月8日,Rainbond发布5.1.5版本,本次版本更新带来了全新的应用市场交付Pipeline体验,并对源码类服务的运行机制、ServiceMesh架构、服务管理等方面做...

    baukh789 评论0 收藏0

发表评论

0条评论

zacklee

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<