Puppet发布Blueshift项目中专门针对Docker的特性

于Ubuntu Xenial Puppet代理程序包,另一个基于简化版的Alpine。

Blueshift演示了异构软件管理问题的解决方案,使用Puppet作为新软件栈的统一管理方式。Blueshift包含Puppet社区中关于如何集成Consul、CoreOS和Mesos等技术的信息。Blueshift还包含Puppet的内部工程。

Puppet还提供了如何在Docker中使用Puppet的例子。目前,这些例子展示了如何在VMware Photon OS、Red Hat CentOS Atomic上的Docker容器中和CoreOS上使用Puppet。还有例子展示了如何使用Docker Compose搭建一个Puppet基础设施。

在Blueshift项目的一个例子中,Gareth Rushgrove演示了如何使用Puppet管理Docker容器。Puppet Docker模块大约是和Docker同时发布的,自此以后,社区一直致力于这方面的工作。

第一步是安装Puppet Docker示例模块:

# puppet module install garethr-docker

简单来说,Docker模块允许你使用清单文件中的一行代码安装Docker:

include 'docker'

你可以在清单文件中声明任意多的镜像。这个例子使用了一个Ubuntu镜像:

docker::image { ‘ubuntu': image => 'trusty',}

这些简单的Docker容器现在可以通过Puppet轻松地应用了。Docker version会显示Docker已经安装了,并且会显示详细的版本信息:

# puppet apply /vagrant/docker_example.pp# docker versionClient version: 1.5.0Client API version: 1.17Go version (client): go1.4.1Git commit (client):a8a31efOS/Arch (client): linux/amd64Server version: 1.5.0Server API version: 1.17Go version (server): go1.4.1Git commit (server): a8a31ef#

Docker ps会显示当前没有任何东西在运行:

# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES#

Docker images会显示Docker镜像已经创建:

# docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEUbuntu trusty d0955f21bf24 3 weeks ago 188.3 MBUbuntu trusty-20150320 d0955f21bf24 3 weeks ago 188.3 MBUbuntu latest d0955f21bf24 3 weeks ago 188.3 MBUbuntu 14.04 d0955f21bf24 3 weeks ago 188.3 MBUbuntu 14.04.2 d0955f21bf24 3 weeks ago 188.3 MB #

Docker模块支持运行和管理各种Docker容器。容器可以在主机的init系统(如systemd或sysvinit)下运行,也可以使用Docker内置的进程管理器。下面的代码增加了两个简单的Docker run资源:

docker::run { 'helloworld': image => 'ubuntu', command => '/bin/sh -c "while true; do echo hello world; sleep 1; done"',}docker::run { 'goodbyecruelworld': image => 'ubuntu', command => '/bin/sh -c "while true; do echo goodbye cruel world; sleep 1; done"',}

使用puppet apply,我们可以快速将更新应用到这两个将要在Docker容器中运行的服务上。现在,Docker ps会显示,当前有两个简单的服务正在运行:

# Puppet apply /vagrant/docker_example.ppNotice: Compiled catalog for localhost in environment production in 0.93 secondsNotice: /Stage[main]/Main/Docker::Run[helloworld]/File[/etc/init.d/docker-helloworld]/ensure: createdNotice: /Stage[main]/Main/Docker::Run[helloworld]/Service[docker-helloworld]/ensure: ensure changed ‘stopped’to ‘running’Notice: /Stage[main]/Main/Docker::Run[goodbyecruelworld]/File[/etc/init.d/docker-goodbyecruelworld]/ensure: created Notice: /Stage[main]/Main/Docker::Run[goodbyecruelworld]/Service[docker-goodbyecruelworld]/ensure: ensure changed ‘stopped’ to ‘running’Notice: Finished catalog run in 1.11 seconds# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES27b9ca786f9b ubuntu:14.04 “/bin/sh -c ‘while t 18 seconds ago Up 17 seconds jolly_wright4ec0c0225714 ubuntu:14.04 “/bin/sh -c ‘while t 18 seconds ago Up 17 seconds focused_wright#

使用docker attach和容器ID连接到其中一个服务上会显示正在Docker中执行的服务:

# docker attach 27b9ca786f9bgoodbye cruel worldgoodbye cruel worldgoodbye cruel world ^C### docker attach 4ec0c0225714hello worldhello worldhello world ^C##

Docker模块还支持类似挂载卷、设置环境变量、运行特权容器和暴露端口这样的动作。Puppet还可以使用docker exec特性在运行中的容器环境中执行命令:

docker::exec { 'helloworld-uptime': detach => true, container => 'helloworld', command => 'uptime', tty => true,} 

====================================分割线================================

本文转自d1net(转载)

时间: 2024-07-30 06:31:32

Puppet发布Blueshift项目中专门针对Docker的特性的相关文章

在项目中透明地引入特性开关

在前几期的InfoQ专栏中刊登了一篇名为"使用功能开关更好地实现持续部署"的文章,文中讲解了 特性开关与Spring的集成应用.但如果项目没有依赖Spring,又该如何更好地使用特性开关呢?同时, 又该如何透明地引入,使得项目不至于完全依赖特性开关呢? 接下来我将结合我们在项目中实 际运用特性开关的经验,从另一个角度为大家介绍如何使用特性开关透明地实现功能屏蔽. 问 题 我们的团队正在开发一款在线保险产品,该产品下包括若干品牌,每个品牌有不同的目标用 户群,但提供的服务基本相同.当第一

远程部署-使用jenkins发布maven项目到远程的jetty容器中

问题描述 使用jenkins发布maven项目到远程的jetty容器中 27C 如题(就这点币了)使用jenkins发布maven项目到远程的jetty容器中 解决方案 jenkins只是打包吧! 还能远程部署到jetty里吗? 这个没试过还真不知道.

javaweb项目中jar包相互引用导致tomcat不能正常发布

问题描述 javaweb项目中jar包相互引用导致tomcat不能正常发布 现在做一个项目是用到结构如下: web项目 A 引用了普通java项目B,我在B里重写了Myservlet,结果两者都引用了j2ee.jar. 项目在tomcat发布时老是报"tomcat/webapps/testweb is locked"大体是这样. 想了解下在这种情况下,如何配置project

return-webservices发布的项目在浏览器中得到的文件的解析<jackson或是Xstream解析>

问题描述 webservices发布的项目在浏览器中得到的文件的解析<jackson或是Xstream解析> {"return": [{"@type":"ax21:Student","age":1,"id":100,"name":"张三"}, {"@type":"ax21:Student","age&quo

三个生产环境中使用Docker的案例

本文讲的是三个生产环境中使用Docker的案例[编者的话]本文为2017年初Docker线下见面会的记录,Solita.Zalando和Pipedrive公司做了Docker化经验分享,并对生产环境中使用Docker的细节进行讨论.本文还推荐了一些Docker生产环境中常使用的优秀工具. [3 天烧脑式 Docker 训练营 | 上海站]随着Docker技术被越来越多的人所认可,其应用的范围也越来越广泛.本次培训我们理论结合实践,从Docker应该场景.持续部署与交付.如何提升测试效率.存储.网

RightScale发布DevOps趋势报告:Docker在企业端的采用率正在上升

RightScale发布了他们对业界采用DevOps趋势调查的最新报告,结果显示Docker.Puppet和Chef控制了整个工具市场,同时Docker在企业端的采用率正在上升.早在今年2月份RightScale就发布了云状态的年度报告,此次DevOps趋势报告是对之前的报告中DevOps相关内容的深入调查.该调查由RightScale在2016年1月份发起,调查对象包括1060名技术专家.     2015年到2016年DevOps在企业端的采用率稳步增长.企业的DevOps采用率为81%,高

在生产环境中使用Docker必须注意的事情

本文讲的是在生产环境中使用Docker必须注意的事情,[编者的话]本文以最近非常火的希特勒怒喷Docker的视频为线索,详细分析了Docker存在的一些问题和弱点,以及在生产环境中使用Docker所要注意的方面.这些问题包括隔离性.镜像安全.Docker缺省配置.发布及部署:文章的最后分析了微软最近在容器支持方面的动作. 我们不能否认Linux容器是一个非常强大的概念,它组合了众多优秀的Linux内核功能和Docker开源工具,任何背景知识的开发者都很容易使用. 在2016年容器峰会上,Brya

IFTTT在开发环境中使用Docker的经验

本文讲的是IFTTT在开发环境中使用Docker的经验,[编者的话]IFTTT是"if this then that"的缩写,事实上是让你的网络行为能够引发连锁反应.让你使用更为方便,其宗旨是"Put the internet to work for you"(让互联网为你服务).Docker在IFTTT中也在开发实践,以下是Nicholas Silva的一些介绍. IFTTT是一款新兴的互联网工具型应用,正如他们给自己的介绍"If This Then T

Palo Alto研究员称 未知攻击者使用恶意程序Dimnie攻击Github开发者 企图在开源项目中注入后门

过去几个月间,在GitHub网站上发布代码的开发者陆续遭到攻击,这些攻击都使用了一种鲜为人知却切实有效的网络间谍软件.攻击始于1月份,通过精心构造的恶意邮件吸引开发者注意,如请求他们为开发项目提供帮助或邀请他们参与有偿定制编程工作. 恶意邮件诱骗开发者下载恶意程序Dimnie 邮件中的.gz附件包含Word文档,其中嵌入了恶意宏代码.运行后,宏代码会执行PowerShell脚本,连接远程服务器,下载恶意程序Dimnie.根据Palo Alto Networks(PAN)研究员所说,Dimnie至