LoginSignup
2
2

More than 5 years have passed since last update.

Vagrant AWS Provider で EC2 上に CoreOS のインスタンスを作成し、 Ubuntu 14.04 LTS のコンテナを乗っけて、 SSH で接続可能に。

Last updated at Posted at 2014-12-05

Vagrant AWS Provider で EC2 上に CoreOS のインスタンスを作成し、 Ubuntu 14.04 LTS のコンテナを乗っけて、 SSH で接続可能にする #vagrant #ec2 #coreos #docker

概要

Vagrant AWS Provider で EC2 上に CoreOS のインスタンスを作成し、 Ubuntu 14.04 LTS のコンテナを乗っけて、 SSH で接続可能にする

前提

手順

Vagrant AWS Provider Plugin をインストール

vagrant plugin install vagrant-aws

ダミーの Vagrant box をダウンロード

Vagrant AWS Provider を利用する場合、ダミーの box が必要になります。
詳しくは、下記リンク先参照
Vagrant AWS Provider GitHub

vagrant box add dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box

Vagrantfile の作成

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "dummy"

  config.vm.provider :aws do |aws, override|
    Dotenv.load # vagrant dotenv plugin を利用して .env ファイルから環境変数をロード
    aws.access_key_id             = ENV['ACCESS_KEY_ID']
    aws.secret_access_key         = ENV['SECRET_ACCESS_KEY']
    aws.keypair_name              = ENV['KEY_PAIR_NAME']

    aws.region                    = "ap-northeast-1"
    aws.ami                       = 'ami-858eb884' # CoreOS のマシンイメージ
    aws.instance_type             = 't1.micro'
    aws.security_groups           = 'sample' # CoreOS への接続用と、 Ubuntu 

    override.ssh.username         = "core"
    override.ssh.private_key_path = "~/.ssh/sample.pem"
  end
end

.env の作成

ACCESS_KEY_ID=your_access_key
SECRET_ACCESS_KEY=your_secret_access_key
KEY_PAIR_NAME=sample

EC2 に CoreOS インスタンスを作成

Vagrant up でインスタンスを作成します

$ cd /path/to/your/vagrant_file
$ vagrant up --provider=aws
# $ vagrant.exe up --provider=aws # windows の場合は exe を実行する

EC2 上の CoreOS に ssh 接続する

$ cd /path/to/your/vagrant_file
$ vagrant ssh
# $ vagrant.exe ssh # windows の場合は exe を実行する
Last login: Thu Dec  4 07:38:23 2014 from localhost
CoreOS (stable)
core@ip-some_ip ~ $ whoami
core
core@ip-some_ip ~ $ docker version
Client version: 1.2.0
Client API version: 1.14
Go version (client): go1.3.1
Git commit (client): fa7b24f
OS/Arch (client): linux/amd64

Server version: 1.2.0
Server API version: 1.14
Go version (server): go1.3.1
Git commit (server): fa7b24f

※ ssh コマンドで接続してもよい

$ ssh -i ~/.ssh/sample.pem core@some_ip

Dockfile の作成

core@some_ip ~ $cat << EOF > Dockerfile
FROM ubuntu:trusty
MAINTAINER your_name <some@mail_address.hogehoge.co.jp>
RUN apt-get update
RUN apt-get install -y openssh-server
RUN useradd -m -s /bin/bash core
RUN mkdir -p /home/core/.ssh; chown core:core /home/core/.ssh; chmod 700 /home/core/.ssh
ADD .ssh/authorized_keys /home/core/.ssh/
RUN chown core /home/core/.ssh/authorized_keys; chmod 600 /home/core/.ssh/authorized_keys
RUN chown -R core:core /home/core/.ssh
RUN echo "core    ALL=(ALL)       NOPASSWD: ALL" >> /etc/sudoers.d/core
RUN /etc/init.d/ssh start
RUN /etc/init.d/ssh stop
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
EOF

イメージの作成

core@some_ip ~ $ sudo docker build -t="sample/ubuntu:trusty" .

イメージの確認

core@some_ip ~ $ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
sample/ubuntu       trusty              7739e9be341f        16 hours ago        255.7 MB
<none>              <none>              0b9f16a0bfe8        18 hours ago        255.7 MB
ubuntu              trusty              86ce37374f40        9 days ago          192.7 MB

コンテナの起動

  • -d はデタッチモード。コンテナをバックグラウンドで実行。
  • -p はポートフォワードの設定
core@some_ip ~ $ sudo docker run -d -p 2222:22 sample/ubuntu:trusty /usr/sbin/sshd -D

起動確認

core@some_ip ~ $ docker ps -a
CONTAINER ID        IMAGE                  COMMAND               CREATED             STATUS              PORTS                  NAMES
5fac64bc7c27        sample/ubuntu:trusty   "/usr/sbin/sshd -D"   49 minutes ago      Up 49 minutes       0.0.0.0:2222->22/tcp   thirsty_heisenberg

ローカル環境からの接続確認

$ ssh -i ~/.ssh/sample.pem core@some_ip -p 2222
Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.2.0-58-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

$ whoami
core

Complete !

ハマりポイント

  • Dockerfile で ADD を利用するの際に dis のディレクトリの最後に / (スラッシュ) をつけること。 サンプルの設定が載ったいくつかのサイトがスラッシュなしのだったのでハマった。

参照

Docker (土曜日に podcast します)
coreos-vagrantでDockerしてみてわかったこととかハマったこととか
dockerのUbuntuにsshで接続するAdd Star
Vagrant AWS Provider GitHub

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