BT

PuppetはDocker向けの機能をBlueshiftプロジェクトでリリースする

| 作者: John Okoro フォローする 1 人のフォロワー , 翻訳者 笠原 王徳 フォローする 0 人のフォロワー 投稿日 2016年7月27日. 推定読書時間: 8 分 |

原文(投稿日:2016/07/20)へのリンク

Blueshiftプロジェクトにおいて、PuppetはPuppetを実行するための一連の新しいDockerイメージをreleased to Docker Hubにリリースした。

これらのDockerイメージの例には(単独動作もしくはPuppetDBと連携する)Puppet Serverを実行するPuppet Serverのイメージと連携するPostgreSQLのイメージを含むPuppetDBが含まれる。また、これらと併せて二つのエージェントイメージがあり、一つはUbuntu Xenial Puppetエージェントパッケージをベースにしたもので、もう一つはスリム化されたAlpineリリースである。

Blueshiftは異種混合のソフトウェアの管理の問題への解のデモであり、Puppetを新しいソフトウェアスタックを管理する統一的な方法として用いるものである。BlueshiftはConsulCoreOSMesosといったテクノロジと統合する方法についてのPuppetコミュニティからの情報が含まれている。BlueshiftはPuppet社内部からの成果物も含む。

PuppetはDockerでPuppetを用いる方法の例についても提供している。例には現在、VMware Photon OS、Red Hat CentOS AtomicとCoreOS上のDockerでの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 version
Client version: 1.5.0
Client API version: 1.17
Go version (client): go1.4.1
Git commit (client):a8a31ef
OS/Arch (client): linux/amd64
Server version: 1.5.0
Server API version: 1.17
Go version (server): go1.4.1
Git commit (server): a8a31ef
#

Docker psコマンドは実行されているコンテナがないことを示している。

# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#

Docker imageコマンドはDockerイメージが作成されたことを示している。

# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
Ubuntu trusty d0955f21bf24 3 weeks ago 188.3 MB
Ubuntu trusty-20150320 d0955f21bf24 3 weeks ago 188.3 MB
Ubuntu latest d0955f21bf24 3 weeks ago 188.3 MB
Ubuntu 14.04 d0955f21bf24 3 weeks ago 188.3 MB
Ubuntu 14.04.2 d0955f21bf24 3 weeks ago 188.3 MB #

Dockerモジュールは個々のDockerコンテナの実行と管理をサポートしている。コンテナはホスト上の初期化システム(例えばsystemdsysvinit)、もしくは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.pp
Notice: Compiled catalog for localhost in environment production in 0.93 seconds
Notice: /Stage[main]/Main/Docker::Run[helloworld]/File[/etc/init.d/docker-helloworld]/ensure: created
Notice: /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  NAMES
27b9ca786f9b   ubuntu:14.04 “/bin/sh -c ‘while t  18 seconds ago  Up 17 seconds         jolly_wright
4ec0c0225714   ubuntu:14.04 “/bin/sh -c ‘while t  18 seconds ago  Up 17 seconds         focused_wright
#

Docker attachコマンドとコンテナIDを用いてサービスの一つにアタッチすることで、Dockerで実行しているサービスを見ることができる。

# docker attach 27b9ca786f9b
goodbye cruel world
goodbye cruel world
goodbye cruel world 
^C#
#
# docker attach 4ec0c0225714
hello world
hello world
hello world 
^C#
# 

Dockerモジュールはボリュームのマウント、環境変数の設定、特権コンテナの実行やポートの開放のような動作もサポートしている。PuppetはDocker exec機能を用いて実行中のコンテナのコンテキスト内でコマンドを実行することもできる。

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

 

 
 

Rate this Article

Relevance
Style
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT