LoginSignup
2
2

More than 5 years have passed since last update.

VagrantでPackerの作業環境を整える

Last updated at Posted at 2015-03-16

MacでPackerを用いいてDocker imageの作成を試みたが期待通り動かなかったのでUbuntu上で作業を行う
この資料はMac環境でPackerを用いでdocker imageを問題なく作成できるようになるまでのメモです

準備

vagrantをmacにインストールしておく

Ubuntuの用意

vagrant init

Vagrantfileに含まれるboxにてubuntu/trusty64を指定する

vagrant up
vagrant ssh

github/bitbucketなどで利用してるssh鍵を利用する

packerなんかの構成情報をgitで管理してる場合はrepositoryにアクセスするための鍵を利用できるようにする必要があるので。
特に試すだけなら不要

ssh-agent
ssh-add ~/.ssh/id_rsa (deploy keyなどを指定)

Vagrantfileにてconfig.ssh.forward_agent = trueを追加

vagrantで起動済みの場合vagrant reloadを実行しVagrantfileの設定を読み込む

Packerのインストール

How To Install and Get Started with Packer on an Ubuntu 12.04 VPS | DigitalOcean

sudo apt-get install unzip
mkdir packer
cd packer/
wget https://dl.bintray.com/mitchellh/packer/packer_0.7.5_linux_amd64.zip
sudo unzip packer_0.7.5_linux_amd64.zip

.bashrcに以下を追加

export PATH=$PATH:~/packer/

読み込む

source ~/.bashrc

Dockerのインストール

Ubuntu - Docker Documentation

sudo apt-get update
sudo apt-get install docker.io
source /etc/bash_completion.d/docker.io

動作確認

vagrant@vagrant-ubuntu-trusty-64:~/packer$ sudo docker info
Containers: 0
Images: 0
Storage Driver: devicemapper
 Pool Name: docker-8:1-262387-pool
 Data file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata
 Data Space Used: 291.5 Mb
 Data Space Total: 102400.0 Mb
 Metadata Space Used: 0.7 Mb
 Metadata Space Total: 2048.0 Mb
Execution Driver: native-0.2
Kernel Version: 3.13.0-46-generic
WARNING: No swap limit support

dockerをsudo無しで利用できるようにする

packerで利用するだけという前提で以下を参考にsudo無しで利用できるようにする

$ sudo groupadd docker
groupadd: group 'docker' already exists #登録済みだった
$ sudo gpasswd -a ${USER} docker
Adding user vagrant to group docker
$ sudo service docker restart
docker: unrecognized service # (´Д`)ハァ…
$ sudo service docker.io restart # ubuntu14.04 はpackage名がdocker.io
docker.io stop/waiting
docker.io start/running, process 1739

docker groupへの追加を有効にするためnewgrp dockerを実行するかvmを再起動する

packerでDocker imageを構築する

packer build config.json

config.json
{
    "builders": [
        {
            "type": "docker",
            "image": "ubuntu:14.04",
            "export_path": "ubuntu.tar"
        }
    ],
    "provisioners": [
        {
            "type": "shell",
            "inline": ["echo test"]
        }
    ],
    "post-processors": [
        [
            {
                "type": "docker-import",
                "repository": "shiwork/ubuntu",
                "tag": "0.1"
            }
        ]
    ]
}
$ packer build config.json
docker output will be in this color.

==> docker: Creating a temporary directory for sharing data...
==> docker: Pulling Docker image: ubuntu:14.04
    docker: Pulling repository ubuntu
==> docker: Starting docker container...
    docker: Run command: docker run -v /tmp/packer-docker756254750:/packer-files -d -i -t ubuntu:14.04 /bin/bash
    docker: Container ID: 408f626466bd8090f06b1f948930b0da99a786145a176423a05af902ef96322b
==> docker: Provisioning with shell script: /tmp/packer-shell638185518
    docker: test
==> docker: Exporting the container
==> docker: Killing the container: 408f626466bd8090f06b1f948930b0da99a786145a176423a05af902ef96322b
==> docker: Running post-processor: docker-import
    docker (docker-import): Importing image: Container
    docker (docker-import): Repository: shiwork/ubuntu:0.1
    docker (docker-import): Imported ID: 0b2141004ce9f60f6786adfc0dfb1cc6245dea3805630d7d8c6b64abce850f3d
Build 'docker' finished.

==> Builds finished. The artifacts of successful builds are:
--> docker: Imported Docker image: shiwork/ubuntu:0.1

まとめ

あっさり動いたなー。Mac上のPackerでやった時はあれこれ試して無理だったのに。Packer, Docker周り弄るときは当分Linux上でやったほうが良いかもしれないですねー。

追記

VagrantとAnsibleのPlaybookを作成しました。
packer-vagrant

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