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

    xiaoxiao2022-07-09  67

    于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(转载) 相关资源:puppet最经典中文手册资料
    最新回复(0)