LoginSignup
14
13

More than 5 years have passed since last update.

ansibleが動くubuntu 14.04用Dockerfile

Posted at

主にDockerizing an SSH Daemon Servicedocker上のコンテナをansibleで構成管理するを参考にさせていただきましたが、意外と面倒くさかったです。

準備

sshの公開鍵をコピーしてauthorized_keysという名前でDockerfileと同じところに置いておく。

# sshd ubuntu 14.04
#
# VERSION               0.0.1

FROM     ubuntu:14.04
MAINTAINER h.obata "obata.hiroshi@propos.jp"

# make sure the package repository is up to date
RUN apt-get update

RUN apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:screencast' | chpasswd

RUN useradd docker -m
RUN echo 'docker:docker1234' | chpasswd
RUN echo 'docker ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/docker

# Set up SSH
RUN mkdir -p /home/docker/.ssh; chown docker /home/docker/.ssh; chmod 700 /home/docker/.ssh
ADD authorized_keys /home/docker/.ssh/authorized_keys

RUN chown docker /home/docker/.ssh/authorized_keys
RUN chmod 600 /home/docker/.ssh/authorized_keys


RUN sed -ri 's/PermitRootLogin without-password/PermitRootLogin yes/g' /etc/ssh/sshd_config

EXPOSE 22
CMD    ["/usr/sbin/sshd", "-D"]

ポイント

RUN echo 'docker ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/dockerでパスワードなしでsudoが実行できるようにする。これが嫌ならInventoryファイルにansible_sudo_passでパスワードを記述するか、ansible実行時に'--ask-sudo-pass'オプションを使う。これをやらないとroot権限が必要なコマンドが動きません。世の中のAnsible入門HogeHogeにはこのあたりのことがちゃんと書いていないものが多いです。

sshd_configの記述形式および初期の設定内容はディストリビューション毎にばらばらなので、sedで書き換えるスクリプトを記述する際には使おうとするディストリビューションの内容を確認した方がよいです。

以上

14
13
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
14
13