スポンサーサイト

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

[入] CentOS7を入れてからの作業

[入] CentOS7.0のkickstart雛形でとりあえずの設定にてVMを作成した。
で、これに対して、vagrantで使えるVMにするのに少し手を加えた
ので、メモしておく。



●NAT接続用のNIC
virtual boxで初期インストール時には、NATの設定をまじめに
やっていなかったので、インタフェースenp0s3にアドレスが付与
されていなくて、外にいけない状態になっていた。

と、VirtualBoxの設定に移りたいところだが、その前に
自動起動しない設定になっていたら不便なので、
/etc/sysconfig/network-scripts/ifcfg-enp0s3
を以下のように「ONBOOT=yes」に変更。


HWADDR=08:00:27:9A:EB:69
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=enp0s3
UUID=e362a382-019a-455d-9544-c3fc0280bb51
ONBOOT=yes


これで一度VMをshutdownしてから、つぎに、
VirtualBoxマネージャー(GUI)でメニュー
「ファイル」>「環境設定」>「ネットワーク」
の「NAT Network」タブにて、VMがNATに使うための
ネットワークを作成(10.0.2.0/24)し、そこからDHCPで
アドレスを払い出すようにした。

これで次回VM起動時には、enp0s3にIPアドレスが
10.0.2.15のようなアドレスで付与される。
IPv6のところはお好みで。

●NAT接続時のポートフォワード
上記でアドレスは付与されるはずなのだが、
ホストマシンから接続する際に、ブリッジ接続のポート
を今の時点で用意してないので、ネットワーク的には
ホストとゲストの間にルータがはさまっている構成になる。

そのため、たとえばteratermにてホスト側からゲスト側に
ssh接続を単純な形ではできないようになっている。
(ブリッジ接続なら同じセグメントが共有されるので単純。)

なので、VM停止時にVirtualBoxのVM個別設定にて
「設定」>「ネットワーク」>「アダプター1」(など割り当てが「NAT」なアダプタ)
にて、「ポートフォワーディング」ボタンを押下して
転送設定してやらないといけない。

たとえばsshなら、
・ゲスト側にあるsshdのポートが22で設定されており、
・かつゲスト側firewallで外部からの22番ポートアクセスを許可している
場合、ホスト側tcp/2222にゲスト側tcp/22を対応させるように
してやれば、次回VM起動後にホスト側にてlocalhost:2222に
sshすれば、VMにsshログインできるようになる。

●vagrantユーザのsudo設定

# grep wheel /etc/group | cut -d ':' -f3
 → 一応gidみておく
# /sbin/usermod -G wheel vagrant
# echo "vagrant ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/vagrant
# chmod 0440 /etc/sudoers.d/vagrant


●シリアル設定
grub2に変わったので、前と手順が結構変わっている。。。

・virtualbox側でも、VM個別設定でシリアルポートを
 有効化させていないといけない。
 ポートモードは「ホストにパイプ」とし、パイプ作成にチェック。
 ポート/ファイルパスは、\\.\pipe\serialport
 とする。
 teratermにてコンソール接続の際には、
 「\\.\pipe\serialport」に接続する。

・teratermなどでコンソールアクセス時に、速度など設定を
 VM側で設定した値とそろえないといけない。
 ボーレート115200, データ8bit, パリティなし、ストップ1bit
 フロー制御なしとしている


[root@localhost pre]# diff /etc/default/grub etc-default-grub
5,6c5,6
< GRUB_TERMINAL_OUTPUT="serial console"
< GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/swap vconsole.font=latarcyrheb-sun16 vconsole.keymap=jp106 rd.lvm.lv=centos/root crashkernel=auto console=tty0 console=ttyS0,115200n8"
---
> GRUB_TERMINAL_OUTPUT="console"
> GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/swap vconsole.font=latarcyrheb-sun16 vconsole.keymap=jp106 rd.lvm.lv=centos/root crashkernel=auto rhgb quiet"
8,10d7
< GRUB_TERMINAL="console serial"
< GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
<
[root@localhost pre]#
[root@localhost pre]# diff /etc/securetty etc-securetty
40d39
< ttyS1
[root@localhost pre]#

上記設定のあとでgrub2-mkconfigと、tty設定を実施

[root@localhost default]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-123.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-123.el7.x86_64.img
Warning: Please don't use old title `CentOS Linux, with Linux 3.10.0-123.el7.x86_64' for GRUB_DEFAULT, use `Advanced options for CentOS Linux>CentOS Linux, with Linux 3.10.0-123.el7.x86_64' (for versions before 2.00) or `gnulinux-advanced-7d2e2c70-93c1-4478-b3cf-d806275d57ed>gnulinux-3.10.0-123.el7.x86_64-advanced-7d2e2c70-93c1-4478-b3cf-d806275d57ed' (for 2.00 or later)
Found linux image: /boot/vmlinuz-0-rescue-e4320e904ba04ca29ca658498c3d6937
Found initrd image: /boot/initramfs-0-rescue-e4320e904ba04ca29ca658498c3d6937.img
done
[root@localhost default]#

[root@localhost ~]# cp /lib/systemd/system/serial-getty@.service /etc/systemd/system/serial-getty@ttyS1.service
[root@localhost ~]# ln -s /etc/systemd/system/serial-getty@ttyS1.service /etc/systemd/system/getty.target.wants/
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start serial-getty@ttyS1.service
[root@localhost ~]# systemctl enable serial-getty@ttyS1.service
The unit files have no [Install] section. They are not meant to be enabled
using systemctl.
Possible reasons for having this kind of units are:
1) A unit may be statically enabled by being symlinked from another unit's
.wants/ or .requires/ directory.
2) A unit's purpose may be to act as a helper for some other unit which has
a requirement dependency on it.
3) A unit may be started when needed via activation (socket, path, timer,
D-Bus, udev, scripted systemctl call, ...).
[root@localhost ~]#




このあと、packer関連のファイルを準備する。

●packer.json
http_directoryで指定した、packerコマンド実行したディレクトリからの
相対パスにあるディレクトリが、一時的なhttpサーバ(vmがkickstartを
ホスト側から取得するために使用)のドキュメントルートになる。

ちなみに、ssh_wait_timeoutの値が大きくないと途中で
インストール途中でVMが落ちることになるので注意。

{
"builders": [
{
"type": "virtualbox-iso",
"vm_name": "vbox-centos7",
"boot_wait": "10s",
"disk_size": 40000,
"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": "30m",
"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-vbox-cent70.cfg<enter><wait>"
]
}
],
"post-processors": [
{
"type": "vagrant",
"output": "./packer/boxes/CentOS-7.0-x86_64.box"
}
]
}



●ks-vbox-cent70.cfg

clocksource=tscで起動時のTSC関連メッセージを出さないようにしている。


#version=RHEL7
## kickstart file
## 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=localhost.localdomain

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

#rootpw --plaintext vbox-cent70
rootpw --lock --iscrypted $1$4qLKl7YM$jKqCKhgmzwTXdFA5sc482/

## 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

%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 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
%end



packer build --only=virtualbox-iso packer.json
を実行すればインストール用isoをダウンロードした後に
VMへのOSインストールが始まる。

kickstartのpostscriptで後処理をするのがいいのか、
provisionerにするのがいいのかは迷うが、
とりあえずprovisionerのほうでも試してみようと思う。

あと、マウス統合がどうのって言われるのは、
Guest Additionsをインストールしないとならないらしい。
VMにisoを配置できるので、あとでマウントして
インストールするとちょっと便利になる。

再起動時のライセンスについても、ちょっと面倒なので
これもなんか解決しておきたいところ。
上記はたたき台であって、もうちょっともまないとです。


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

コメントの投稿

非公開コメント

プロフィール

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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。