LoginSignup
2
2

More than 5 years have passed since last update.

Chef 動作確認用 Docker イメージ

Last updated at Posted at 2016-08-10

Ubuntu をベースに Ruby 2.3.1 + chef(knife-zero) + openssh-server が入っている Docker イメージを作ってみた。例によって、sshd を走らせると、root のパスワードも公開鍵もなしでログインできる。

注意

これは、Chef 動作チェック専用のイメージであって、実運用を念頭に置いていない。セキュリティ関係の処理が簡略化されていることに注意すること。

準備するファイル

Dockerfile
FROM ubuntu:trusty

ENV PATH /usr/local/rvm/bin:$PATH

RUN export DEBIAN_FRONTEND=noninteractive \
  && gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 \
  && apt-get update \
  && apt-get install -y curl \
  && \curl -L https://get.rvm.io | bash -s stable \
  && rvm install 2.3.1 \
  && bash --login -c 'rvm use 2.3.1 --default' \
  && echo "install: --no-document\nupdate: --no-document" > /etc/gemrc \
  && bash --login -c 'gem install bundler chef knife-zero berkshelf' \
  && apt-get install -y openssh-server \
  && passwd -d root

COPY sshd_config /etc/ssh/sshd_config

CMD ["bash", "--login"]
sshd_config
PermitEmptyPasswords yes
PasswordAuthentication yes
UsePAM no
Subsystem sftp /usr/lib/openssh/sftp-server

イメージ作成

$ ls
Dockerfile sshd_config
$ docker build -t ubuntu_chef .

コンテナ実行

$ docker run -it ubuntu_chef
# service ssh start
# ifconfig eth0
=> IP アドレスを取得(例:173.17.0.2)

雑感

Dockerfile の作り方も若干慣れてきた。
次から sshd_config も Dockerfile に組み込んでしまおうかな?
ファイル一つで Docker イメージが作れるのは気持ちいいよね。

RUN コマンドの中で && を使うのは、必須なんだろうか?
レイヤーを減らして、最終的なイメージを小さくするのに役立つらしい。
ただ、実際ちょっと RUN を多用して同じイメージを作ってみたけど、そんなにイメージサイズは変わらなかったなあ(数%大きい程度)。Docker hub の Dockerfile はだいたい、RUN を一つにまとめているから、私もそれに倣ってこうしているわけだけど。

実は、knife-zero のクライアント側(構成管理される側)は sshd だけが条件で、Ruby はあらかじめインストールされている必要はないし、chef のワークステーション側(構成管理する側)は、ssh のクライアントだけあれば十分なはずなので、上の Docker イメージはちょっと冗長ではあるのだが。

sftp server は必要かどうかわからないがいちおう組み込んでみた。

後日談

あとで気がついたのだが、本家から Chef Development Kit(ChefDK) を落として使うのが今風らしい。あとで Docker イメージを作りなおすかも。ただ "Hello World!" する程度なら現状でも十分な気がする。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2