スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[入] CentOS7.0のvagrant BOX

結局、昨日作成したファイルはどうにもうまくいかず、お蔵入り。

SSHで、handshake error(none password ?)が出て、boxファイル生成に
失敗してしまうようだった。改行コードが原因といううわさもあったが、
総当りで全パターン(LF, CR+LF)をやってもダメだったので、
一度成功したファイルを元に作り直した。

●環境
windows 7 professional 64bit
packer 0.7.5
virtualbox 4.3.28
vagrant 1.7.2

●ファイル一覧
packer_home/make-box-150624.bat
packer_home/packer-150624.json
packer_home/Vagrantfile → あとで生成(vagrant init)
packer_home/packer_cache
 → インストール用isoがダウンロードされておかれる。自動生成されるディレクトリ
packer_home/packer/boxes/cent70vbox64-20150624r1.box
 → 生成されるボックスファイル
packer_home/packer/builders/ks-cent70vbox64-20150624r1.cfg
 → キックスタートファイル。一時httpサーバのドキュメントルート
packer_home/output-virtualbox-iso/
 → vdiファイルなどが生成される一時ディレクトリ。自動生成・削除されるディレクトリ

個別ファイルの内容は以下。
どうも改行コードがまずいと動かないらしいことがわかったので
極力、改行コードを成功時からずらさないようにしている。。


■make-box-150624.bat

@rem
@rem make-box.bat
@rem

packer build --only=virtualbox-iso packer-150624.json


■packer-150624.json
jsonファイルは改行コードCR+LF。
ssh接続タイムアウトは長めに1時間としている。
シャットダウンのコマンドは、パワーオフとしている。echoでユーザ名は食わせない。

{
"builders": [
{
"type": "virtualbox-iso",
"vm_name": "cent70vbox64-20150624r1",
"boot_wait": "10s",
"disk_size": 40960,
"guest_os_type": "RedHat_64",
"iso_checksum": "713ea7847adcdd1700e92429f212721a",
"iso_checksum_type": "md5",
"iso_url": "http://127.0.0.1/os/CentOS_7_x86_64.iso",
"ssh_username": "vagrant",
"ssh_password": "vagrant",
"ssh_port": 22,
"ssh_wait_timeout": "60m",
"shutdown_command": "sudo poweroff",
"guest_additions_path": "VBoxGuestAdditions_{{.Version}}.iso",
"virtualbox_version_file": ".vbox_version",
"vboxmanage": [
[
"modifyvm",
"{{.Name}}",
"--memory",
"2048",
"--cpus",
"2",
"--vram",
"16"
]
],
"http_directory": "./packer/builders/",
"boot_command": [
"<tab> text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ks-cent70vbox64-20150624r1.cfg<enter><wait>"
]
}
],
"post-processors": [
{
"type": "vagrant",
"output": "./packer/boxes/cent70vbox64-20150624r1.box"
}
]
}


■ks-cent70vbox64-20150624r1.cfg
キックスタートファイルは改行コードLF。
なお、ファイルアップロードの順番から、
mount -o loop /home/vagrant/VBoxGuestAdditions_4.3.28.iso /mnt/cdrom
/mnt/cdrom/VBoxLinuxAdditions.run
はvagrant upのあとに実施が必要。。。かっこわるー。。

ポストスクリプトで、tscのエラー回避、vga指定(高解像度1024x768)、
コンソール設定、sudo設定などなどを盛り込んでいる。

#version=RHEL7
## kickstart file : cent70vbox64-20150624r1 (LF)
## cf: https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-kickstart-syntax.html

## System authorization information
auth --enableshadow --passalgo=sha512

## Use CDROM installation media
cdrom

## Use text mode install
text

## OS install or upgrade
install

## System language
lang en_US.UTF-8
#lang ja_JP.UTF-8

## Keyboard layouts
keyboard --vckeymap=jp106 --xlayouts='jp106'

## System timezone
timezone Asia/Tokyo --isUtc

## Run the Setup Agent on first boot
firstboot --enable

## Security
firewall --disabled
selinux --disabled

## Network information
network --bootproto=dhcp --ipv6=auto --activate --onboot=yes --hostname=cent70vbox64.localdomain

## Root password
## --lock : can't login as root user
## --iscrypted : set encrypted password. cf: openssl passwd -1

#rootpw --plaintext vagrant
rootpw --iscrypted $1$s2ehhhGg$nfQ3PAmYOhE7V.D7bGMFh1

## configure the X Window System
#xconfig --startxonboot
skipx

## user information
user --groups=wheel --name=vagrant --password=vagrant --gecos="vagrant user" --homedir=/home/vagrant --shell=/bin/bash

## Initialize illegal partition table
zerombr

## System bootloader configuration
bootloader --location=mbr --boot-drive=sda

## Partition clearing information
clearpart --all --initlabel --drives=sda

## ignore HDD drives
ignoredisk --only-use=sda

#autopart --type=btrfs
autopart --type=lvm
#autopart --type=plain
#swap --recommended

reboot

%packages
@additional-devel
@backup-client
@base
@compat-libraries
@core
@debugging
@desktop-debugging
@development
@dial-up
@directory-client
@dns-server
@emacs
@file-server
@fonts
@ftp-server
@gnome-apps
@gnome-desktop
@graphics
@guest-desktop-agents
@hardware-monitoring
@identity-management-server
@infiniband
@input-methods
@internet-applications
@internet-browser
@java-platform
@large-systems
@legacy-x
@load-balancer
@mail-server
@mainframe-access
@mariadb
@multimedia
@network-file-system-client
@office-suite
@performance
@perl-runtime
@perl-web
@php
@platform-devel
@postgresql
@print-client
@python-web
@remote-desktop-clients
@ruby-runtime
@smart-card
@technical-writing
@virtualization-client
@virtualization-hypervisor
@virtualization-tools
@web-server
@web-servlet
@x11
%end

%pre
%end

%post --log=/root/kickstart-post.log
/sbin/usermod -G wheel vagrant
echo "vagrant ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/vagrant
chmod 0440 /etc/sudoers.d/vagrant
sed -i -e '/GRUB_CMDLINE_LINUX=/s/"$/ clocksource=tsc vga=792 console=tty0 console=ttyS0,115200n8"/' -e '/GRUB_CMDLINE_LINUX=/s/rhgb quiet //g' /etc/default/grub
echo "GRUB_TERMINAL=\"console serial\"" >> /etc/default/grub
echo "GRUB_SERIAL_COMMAND=\"serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1\" " >> /etc/default/grub
echo "ttyS1" >> /etc/securetty
grub2-mkconfig -o /boot/grub2/grub.cfg
cp /lib/systemd/system/serial-getty@.service /etc/systemd/system/serial-getty@ttyS1.service
ln -s /etc/systemd/system/serial-getty@ttyS1.service /etc/systemd/system/getty.target.wants/
systemctl daemon-reload
systemctl start serial-getty@ttyS1.service
systemctl enable serial-getty@ttyS1.service
mkdir /mnt/cdrom
mount -o loop /home/vagrant/VBoxGuestAdditions_4.3.28.iso /mnt/cdrom
/mnt/cdrom/VBoxLinuxAdditions.run
%end



■Vagrantfile
シリアルの設定を入れているが、これはまだうまく機能していない。
一応VMは起動する。

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

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure(2) do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.

# Every Vagrant development environment requires a box. You can search for
# boxes at https://atlas.hashicorp.com/search.
config.vm.box = "cent70vbox64-20150624r1"
config.vm.box_url = "./packer/boxes/cent70vbox64-20150624r1.box"

# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false

# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# config.vm.network "forwarded_port", guest: 80, host: 8080

# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"
config.vm.network "private_network", ip: "192.168.177.10"

# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"

# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"

# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
config.vm.provider "virtualbox" do |vb|
# Display the VirtualBox GUI when booting the machine
vb.gui = true

# Customize the amount of memory on the VM:
vb.memory = "2048"
vb.cpus = 2
vb.customize ["modifyvm", :id, "--uart1", "0x3E8", "4" ]
vb.customize ["modifyvm", :id, "--uartmode1", "server", "\\\\.\\pipe\\serialport" ]
end
#
# View the documentation for the provider you are using for more
# information on available options.

# Define a Vagrant Push strategy for pushing to Atlas. Other push strategies
# such as FTP and Heroku are also available. See the documentation at
# https://docs.vagrantup.com/v2/push/atlas.html for more information.
# config.push.define "atlas" do |push|
# push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
# end

# Enable provisioning with a shell script. Additional provisioners such as
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
# documentation for more information about their specific syntax and use.
# config.vm.provision "shell", inline: <<-SHELL
# sudo apt-get update
# sudo apt-get install -y apache2
# SHELL
end


この「とりあえず作業環境用box」ができたら、次は最小インストール
をベースにいよいよOpenStack用のboxを作って遊ぼうと思う。

yum -y install deltarpm
yum install -y http://rdo.fedorapeople.org/openstack-juno/rdo-release-juno.rpm
yum install -y openstack-packstack
で、とりあえずパッケージだけ取ってこよう。


関連記事
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

kr2

Author:kr2
ネコと音楽が好き。
CD紹介、技術ネタ
などの雑記帳。

カレンダー
10 | 2017/11 | 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -
月別アーカイブ
カテゴリー
ブログ内検索
RSSフィード
最近の記事
最近のコメント
最近のトラックバック
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。