ラベル Kickstart の投稿を表示しています。 すべての投稿を表示
ラベル Kickstart の投稿を表示しています。 すべての投稿を表示

2014/08/24

CentOS 7のKickstartファイル中でrepoコマンドのnameオプションを使う場合の注意

Red Hat Enterprise Linux 7 (RHEL7)互換OS、CentOS 7のインストールをAnaconda Kickstartで自動化する場合、CentOS 6までとは、異なる動作をする場合がある。

Kickstartファイルでrepoコマンドを使う場合、CentOS 6までは、
repo --name="CentOS Update (Local)" --baseurl=http://centos.repository.local/centos/6/updates/x86_64 --cost=1
の様に、nameオプションに空白を含んだ文字列を指定しても問題なく動作したと思う

ところが、CentOS 7では、このように指定した場合、このレポジトリは無視されてしまう。
従って例えば、
repo --name=CentOS-Update-Local --baseurl=http://centos.repository.local/centos/7/updates/x86_64 --cost=1
の様に、空白を含まない文字列を指定する必要がある。

2008/07/21

To Do

Google Codeの中におもしろそうなものを発見→Ganeti

ずっと前から口だけ大将になっているCobbler & Koan。Extra Packages for Enterprise Linux (EPEL)にRPMが準備されているので、簡単なんだけど…

2008/07/09

Xen DomUのKickstartインストール時、すべてのパッケージのインストールを指定する方法

CentOSやFecora、Red Hat Enterprise Linux (RHEL)などは、Anaconda Kickstartで自動インストールすることができる。このとき、(ほとんど)すべてのRPMパッケージをインストールしたいとする。非Xenのバニラカーネルなら、%packageセクションで
%packages
@everything
とだけ書けば問題ない。

しかし、Xen DomUの場合はこれではエラーになる。理由は、@everythingのみを指定すると、Xen DomUが必要とするカーネルRPMパッケージ・kernel-xenだけでなく、kernelやkernel-PAEもインストールされ、OS起動時にkernelやkernel-PAEが選択されることがあるからだ。

これを避けるために、%packagesセクションに以下の様に記述する。
%packages
@everything
-kernel
-kernel-PAE
-kmod-gfs
-kmod-gfs-PAE
-kmod-gfs2
-kmod-gfs2-PAE
-kmod-gnbd
-kmod-gnbd-PAE
-libvirt
-xen
-gnome-applet-vm
-libvirt-devel
-libvirt-python
-python-virtinst
-virt-manager
-virt-viewer
Xen DomUをKickstartインストールする方法については、『Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる・その3・DomU dcXのインストール』等を参照。

2008/07/08

CentOS 5.2でanaconda kickstartのバグが修正

CentOS5.2では、CentOS5.1までに存在した、ある不具合が修正された。

例えば、Xen環境では、RPMパッケージkernel-xenをインストールするので、RPMパッケージkernelは不要。そこで、kernelがインストールされないよう、Anaconda Kickstart設定ファイル(『Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる・その4・DomU bs1のインストール』等を参照)の%packagesセクションに
%packages
kernel-xen
-kernel
と書く。しかし、CentOS 5.1では、このように記述しても、kernelがインストールされる。この不具合を回避するため、%postセクションに
%post
yum -y remove kernel
と書く必要があった。

逆に、CentOS 5.2では、Kickstart設定ファイルを上の様に記述すると、別の不具合が発生する。元々RPMパッケージkernelがインストールされないため、代わりにRPMパッケージkernel-xenが削除される。結果として、正常に起動しなくなる。例えば、DomUをインストールすると、インストール後の再起動時に以下の様なメッセージが表示される。
sending termination signals...done
sending kill signals...done
disabling swap...
/dev/mapper/VolGroup00-LogVol01
unmounting filesystems...
/mnt/runtime done
disabling /dev/loop0
/proc done
/dev/pts done
/sys done
/tmp/ramfs done
/selinux done
/mnt/sysimage/boot done
/mnt/sysimage/sys done
/mnt/sysimage/proc done
/mnt/sysimage/selinux done
/mnt/sysimage/dev done
/mnt/sysimage done
rebooting system
Restarting system.

Guest installation complete... restarting guest.
virDomainCreate() failed POST operation failed: (xend.err "Error creating domain: Boot loader didn't return any data!")
Domain installation may not have been
successful. If it was, you can restart your domain
by running 'virsh start dc1'; otherwise, please
restart your installation.
Tue, 08 Jul 2008 11:25:06 ERROR virDomainCreate() failed POST operation failed: (xend.err "Error creating domain: Boot loader didn't return any data!")
Traceback (most recent call last):
File "/usr/sbin/virt-install", line 502, in ?
main()
File "/usr/sbin/virt-install", line 488, in main
dom.create()
File "/usr/lib/python2.4/site-packages/libvirt.py", line 228, in create
if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)
libvirtError: virDomainCreate() failed POST operation failed: (xend.err "Error creating domain: Boot loader didn't return any data!")
#

2008/03/25

RHCS: iSCSI, DM-MP, CLVM and GFS・その2・インストールとクラスタの構成

今回の環境(『その1・概要』参照)でのXen Dom0かつiSCSIターゲット(target/サーバ)fs1およびXen DomUかつiSCSIイニシエータ(initiator/クライアント)dc[123]のインストールし、クラスタを構成する。ここでは、Kickstartファイルを掲載する。詳しい手順は、『Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる』を参照。

fs1のKickstartファイル
Xen DomU fs1は、iSCSIのターゲットとして動作する必要がある。CentOS/RHEL 5.1では、iSCSIターゲット機能は、RPMパッケージscsi-target-utilsでサポートされる。
logging --host=192.168.55.192

text
install
url --url http://repository.xencluster/centos/5/os/i386
lang en_US.UTF-8
keyboard jp106
monitor --monitor="LCD Panel 1024x768"
xconfig --startxonboot --driver ati --resolution 1024x768 --depth 24
network --device eth0 --bootproto static --ip 192.168.55.191 --netmask 255.255.255.0 --gateway 192.168.55.195 --nameserver 192.168.55.193,192.168.55.194 --hostname fs1.xencluster
network --device eth1 --onboot yes --bootproto static --hostname fs1.xencluster
rootpw --iscrypted $1$zthPniQJ$u8VAa0oCtLcKrpfk/WIjs0
user --name USERNAME --homedir /home/USERNAME --iscrypted --password=$1$DCVowOrU$N86i3KrFg2yftOqtXMB3w/ --shell=/bin/bash --groups=USERNAME,wheel
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --permissive
timezone --utc Asia/Tokyo
bootloader --location=mbr --driveorder=sda --append="xencons=tty"

clearpart --all --drives=sda
part /boot --fstype ext3 --size=100 --ondisk=sda
part pv.6 --size=0 --grow --ondisk=sda
volgroup VolGroupXX --pesize=32768 pv.6
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroupXX --size=1984
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroupXX --size=10240

repo --name=base --baseurl=http://repository.xencluster/centos/5/os/i386/
repo --name=updates --baseurl=http://repository.xencluster/centos/5/updates/i386/
repo --name=addons --baseurl=http://repository.xencluster/centos/5/addons/i386/
repo --name=extras --baseurl=http://repository.xencluster/centos/5/extras/i386/

services --enabled=oddjobd,ntpd --disabled=apmd,avahi-daemon,cpuspeed,cups,nfslock,pcscd,smartd,snmpd,yum-updatesd

reboot

%packages
@admin-tools
@base
@base-x
@cluster-storage
@clustering
@core
@dns-server
@editors
@emacs
@ftp-server
@gnome-desktop
@graphical-internet
@japanese-support
@legacy-network-server
@mail-server
@network-server
@ruby
@server-cfg
@system-tools
@text-internet
@virtualization
@web-server
lynx
tftp
-kernel
kernel-xen
-kmod-gfs
kmod-gfs-xen
-kmod-gfs
kmod-gnbd-xen
-NetworkManager
-bluez-utils
device-mapper-multipath
-irda-utils
-pcmciautils
net-snmp-utils
net-snmp-libs
net-snmp
OpenIPMI
OpenIPMI-libs
openhpi
-squid
scsi-target-utils
iscsi-initiator-utils
-apmd


%post --log=/mnt/sysimage/root/anaconda-post.log --erroronfail
/bin/cp /tmp/ks-script-* /root

### network
/bin/cat <<EOL >> /etc/sysconfig/network
NOZEROCONF=yes
VLAN=yes
VLAN_NAME_TYPE=DEV_PLUS_VID
EOL

/bin/cat <<EOL > /etc/sysconfig/network-scripts/ifcfg-eth1.4000
DEVICE=eth1.4000
BOOTPROTO=none
ONBOOT=yes
EOL
/sbin/restorecon /etc/sysconfig/network-scripts/ifcfg-eth1.4000

/bin/cat <<EOL > /etc/sysconfig/network-scripts/ifcfg-eth1.4001
DEVICE=eth1.4001
BOOTPROTO=static
DHCPCLASS=
IPADDR=192.168.56.191
NETMASK=255.255.255.0
ONBOOT=yes
EOL
/sbin/restorecon /etc/sysconfig/network-scripts/ifcfg-eth1.4001

/bin/cat <<EOL > /etc/sysconfig/network-scripts/ifcfg-eth1.4002
DEVICE=eth1.4002
BOOTPROTO=static
DHCPCLASS=
IPADDR=192.168.57.191
NETMASK=255.255.255.0
ONBOOT=yes
EOL
/sbin/restorecon /etc/sysconfig/network-scripts/ifcfg-eth1.4002

/bin/cat <<EOL > /etc/sysconfig/network-scripts/ifcfg-eth1.1000
DEVICE=eth1.1000
BOOTPROTO=none
ONBOOT=yes
EOL
/sbin/restorecon /etc/sysconfig/network-scripts/ifcfg-eth1.1000

### logrotate
/bin/cat > /etc/logrotate.d/00local.conf <<EOL
rotate 20
compress
start 100
EOL
/sbin/restorecon /etc/logrotate.d/00local.conf

### local yum repository
/bin/cp -p /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.dist
/bin/sed 's/mirrorlist=/#mirrorlist=/
s/#baseurl=/baseurl=/
s/mirror.centos.org/repository.xencluster/' < /etc/yum.repos.d/CentOS-Base.repo.dist > /etc/yum.repos.d/CentOS-Base.repo

yum -y remove kernel

### sshd
/usr/bin/patch /etc/ssh/sshd_config <<EOL
39a40
> PermitRootLogin no
60c61
< PasswordAuthentication yes
---
> PasswordAuthentication no
EOL
/sbin/restorecon /etc/ssh/sshd_config

##### for User USERNAME
/bin/mkdir ~USERNAME/.ssh
/bin/chmod 700 ~USERNAME/.ssh
/bin/cat > ~USERNAME/.ssh/authorized_keys2 <<EOL
ssh-dss AAAA<<略>>
EOL
/bin/chmod 644 ~USERNAME/.ssh/authorized_keys2
/bin/chown -R USERNAME.USERNAME ~USERNAME/.ssh

### DELL OpenManage
/usr/bin/wget -q -O - http://linux.dell.com/repo/hardware/bootstrap.cgi | bash
/usr/bin/wget -q -O - http://linux.dell.com/repo/software/bootstrap.cgi | bash
/usr/bin/wget -q -O - http://linux.dell.com/repo/firmware/bootstrap.cgi | bash
/usr/bin/yum install -y srvadmin-all
/usr/bin/yum install -y $(/usr/sbin/inventory_firmware -b)
/usr/bin/update_firmware

### Mail
##### /etc/mail/sendmail.cf
/usr/bin/patch /etc/mail/sendmail.mc <<EOL
26c26
< dnl define(\`SMART_HOST', \`smtp.your.provider')dnl
---
> define(\`SMART_HOST', \`fs2.xencluster')dnl
EOL
(cd /etc/mail; /usr/bin/make sendmail.cf)
/sbin/restorecon /etc/mail/sendmail.cf

##### /etc/aliases
/usr/bin/patch /etc/aliases <<EOL
96c96
< #root:  marc
---
> root:  root@xencluster
EOL
/usr/bin/newaliases
/sbin/restorecon /etc/aliases

### SNMP
/bin/cat > /etc/snmp/snmpd.conf <<EOL
com2sec localhost localhost           COMMUNITY_STRING
com2sec localnet  192.168.55.0/24    COMMUNITY_STRING

group   gOpLocalhost   v1            localhost
group   gOpLocalhost   v2c           localhost
group   gOpLocalnet    v1            localnet
group   gOpLocalnet    v2c           localnet

view    all           included   .1
view    vDell         included   .1.3.6.1.4.1.674.10892.1
view    systemview    included   REDHAT-CLUSTER-MIB:RedHatCluster

access  gOpLocalhost   ""      any       noauth    exact  all    vDell   all
access  gOpLocalnet    ""      any       noauth    exact  all    none    all

syslocation Unknown
syscontact root@xencluster

disk /     100000

load 10

# for DELL
smuxpeer .1.3.6.1.4.1.674.10892.1

# for cluster
dlmod RedHatCluster     /usr/lib/cluster-snmp/libClusterMonitorSnmp.so
EOL
/sbin/restorecon /etc/snmp/snmpd.conf

/bin/cat > /etc/snmp/snmp.conf <<EOL
mibdirs +/opt/dell/srvadmin/omsa/mibs:/opt/dell/srvadmin/rac5/mibs:/opt/dell/srvadmin/rac3/mibs:/opt/dell/srvadmin/sm/mibs:/opt/dell/srvadmin/rac4/mibs
mibs +MIB-Dell-10892:DCS3FRU-MIB:DCS3RMT-MIB:DCS3RMT-MIB:StorageManagement-MIB:DCS3RMT-MIB:REDHAT-MIB:REDHAT-CLUSTER-MIB
EOL
/sbin/restorecon /etc/snmp/snmp.conf

##### iptables
/bin/cat > /etc/sysconfig/iptables <<EOL
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -s 192.168.55.0/24 -i eth0 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -s 192.168.56.0/24 -i eth1.4001 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -s 192.168.57.0/24 -i eth1.4002 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
EOL

### For Xen
/usr/bin/base64 -di <<EOL | /bin/zcat > /etc/xen/scripts/network-vlan-bridge
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
f9k91baOyaixMWFoeDSA4yqMvH8D4vHg6zogAAA=
EOL
/bin/chmod 755 /etc/xen/scripts/network-vlan-bridge
/sbin/restorecon /etc/xen/scripts/network-vlan-bridge

/bin/cat <<EOL > /etc/xen/scripts/network-vlan-bridge-wrapper
#!/bin/sh
BRIDGE_SCRIPT=/etc/xen/scripts/network-vlan-bridge
\$BRIDGE_SCRIPT "\$@" vifnum=0 netdev=eth1.1000 bridge=xenbr1000
\$BRIDGE_SCRIPT "\$@" vifnum=1 netdev=eth1.4000 bridge=xenbr4000
\$BRIDGE_SCRIPT "\$@" vifnum=2 netdev=eth1.4001 bridge=xenbr4001
\$BRIDGE_SCRIPT "\$@" vifnum=3 netdev=eth1.4002 bridge=xenbr4002
EOL
/bin/chmod 755 /etc/xen/scripts/network-vlan-bridge-wrapper
/sbin/restorecon /etc/xen/scripts/network-vlan-bridge-wrapper

/bin/cp -p /etc/xen/xend-config.sxp /etc/xen/xend-config.sxp.dist
/bin/sed 's/^(network-script network-bridge)/(network-script network-vlan-bridge-wrapper)/' < /etc/xen/xend-config.sxp.dist > /etc/xen/xend-config.sxp

/bin/cat <<EOL > /etc/modprobe.d/xen-vlan
options netloop nloopbacks=32
EOL
/sbin/restorecon /etc/modprobe.d/xen-vlan

### For Cluster
##### /etc/cluster/fence_xvm.key
/usr/bin/base64 -di > /etc/cluster/fence_xvm.key <<EOL
B0K3fFCQVQZdPydoMs29eSmd4vKwEbNC+G58HjSeSGzK5x0+uS8VB8B+/gnHVKLt3sqtzZeEpsKs
<<略>>
gDfGZSWpdWxwjz//h5x/zP2JIv6PgZt++qoSDd/1NxP5zdy0wO6/wHLNghjKDEwjtP/7Lt79ntqB
EOL
/bin/chmod 600 /etc/cluster/fence_xvm.key
/sbin/restorecon /etc/cluster/fence_xvm.key

### CMAN init script
/usr/bin/base64 -di <<EOL | /usr/bin/patch /etc/init.d/cman
MTU2YzE1Ngo8ICAgICBlZ3JlcCAiXltbOmJsYW5rOl1dKlwoW1s6Ymxhbms6XV0qbmV0d29yay1z
Y3JpcHRbWzpibGFuazpdXStuZXR3b3JrLWJyaWRnZShbWzpibGFuazpdXSpcKXxbWzpibGFuazpd
XSspIiAvZXRjL3hlbi94ZW5kLWNvbmZpZy5zeHAgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbAotLS0K
PiAgICAgZWdyZXAgIl5bWzpibGFuazpdXSpcKFtbOmJsYW5rOl1dKm5ldHdvcmstc2NyaXB0W1s6
Ymxhbms6XV0rbmV0d29yay0ofHZsYW4tKWJyaWRnZSh8LXdyYXBwZXIpKFtbOmJsYW5rOl1dKlwp
fFtbOmJsYW5rOl1dKykiIC9ldGMveGVuL3hlbmQtY29uZmlnLnN4cCA+L2Rldi9udWxsIDI+L2Rl
di9udWxsCjE2NSwxNjZjMTY1LDE2Nwo8ICAgICBpZiBbICEgLXggL2V0Yy94ZW4vc2NyaXB0cy9u
ZXR3b3JrLWJyaWRnZSBdOyB0aGVuCjwgICAgICAgICBpZiBbIC1mIC9ldGMveGVuL3NjcmlwdHMv
bmV0d29yay1icmlkZ2UgXTsgdGhlbgotLS0KPiAgICAgeGVuX2JyaWRnZV9zY3JpcHQ9YGVncmVw
ICJeW1s6Ymxhbms6XV0qXChbWzpibGFuazpdXSpuZXR3b3JrLXNjcmlwdFtbOmJsYW5rOl1dK25l
dHdvcmstKHx2bGFuLSlicmlkZ2UofC13cmFwcGVyKShbWzpibGFuazpdXSpcKXxbWzpibGFuazpd
XSspIiAvZXRjL3hlbi94ZW5kLWNvbmZpZy5zeHAgfCBzZWQgJ3MvXltbOmJsYW5rOl1dKihbWzpi
bGFuazpdXSpuZXR3b3JrLXNjcmlwdFtbOmJsYW5rOl1dXCtcfFtbOmJsYW5rOl1dKilbWzpibGFu
azpdXSovL2cnYAo+ICAgICBpZiBbICEgLXggL2V0Yy94ZW4vc2NyaXB0cy8keGVuX2JyaWRnZV9z
Y3JpcHQgXTsgdGhlbgo+ICAgICAgICAgaWYgWyAtZiAvZXRjL3hlbi9zY3JpcHRzLyR4ZW5fYnJp
ZGdlX3NjcmlwdCBdOyB0aGVuCjE3NmMxNzcKPCAgICAgZXJybXNnPSQoL2V0Yy94ZW4vc2NyaXB0
cy9uZXR3b3JrLWJyaWRnZSBzdGFydCAyPiYxKSB8fCByZXR1cm4gMQotLS0KPiAgICAgZXJybXNn
PSQoL2V0Yy94ZW4vc2NyaXB0cy8keGVuX2JyaWRnZV9zY3JpcHQgc3RhcnQgMj4mMSkgfHwgcmV0
dXJuIDEKMTkyYzE5MywxOTUKPCAgICAgeG0gbGlzdCAtLWxvbmcgMj4gL2Rldi9udWxsIHwgZ3Jl
cCAtcSAiRG9tYWluLTAiIHx8IHJldHVybiAxCi0tLQo+ICAgICAjIFRoZSBmb2xsb3dpbmcgbGlu
ZSBpcyBjb21tZW50ZWQgb3V0IGJlY2F1c2UgdGhpcyBjaGVjayBkb2VzIG5vdAo+ICAgICAjIHdv
cmsgcHJvcGVybHkgYmVmb3JlIHhlbmQgaXMgc3RhcnRlZC4KPiAgICAgI3htIGxpc3QgLS1sb25n
IDI+IC9kZXYvbnVsbCB8IGdyZXAgLXEgIkRvbWFpbi0wIiB8fCByZXR1cm4gMQo=
EOL
/sbin/restorecon /etc/init.d/cman

### X fonts FOR racvnc
/bin/mkdir /usr/X11R6/lib
/bin/ln -s /usr/share/X11 /usr/X11R6/lib

### /etc/inittab
/usr/bin/patch /etc/inittab <<EOL
32c32,33
< ca::ctrlaltdel:/sbin/shutdown -t3 -r now
---
> #ca::ctrlaltdel:/sbin/shutdown -t3 -r now
> ca::ctrlaltdel:ca::ctrlaltdel:/usr/bin/logger 'CTRL-ALT-DELETE trap is disabled'
EOL
/sbin/restorecon /etc/inittab

### GDM
/usr/bin/patch /etc/gdm/custom.conf <<EOL
50a51
> SystemMenu=false
EOL
/sbin/restorecon /etc/gdm/custom.conf

### grub
/bin/cp -p /boot/grub/grub.conf /boot/grub/grub.conf.orig
/bin/sed 's/ rhgb quiet//' < /boot/grub/grub.conf.orig > /boot/grub/grub.conf

### /etc/bashrc
/bin/cp -p /etc/bashrc /etc/bashrc.dist
/bin/sed 's/xterm\*)/xterm*|vt100*)/' < /etc/bashrc.dist > /etc/bashrc


dc[123]のKickstartファイル
Xen DomU dc[123]は、iSCSIイニシエータとして動作させるため、RPMパッケージiscsi-initiator-utilsをインストールする必要がある。
logging --host=192.168.55.192 --level=debug

install
url --url http://repository.xencluster/centos/5/os/i386
lang en_US.UTF-8
keyboard jp106
network --device eth0 --bootproto dhcp --hostname=localhost.localdomain
rootpw --iscrypted $1$NG4SU1bL$I8FOJo.81cUrO6Xj4dau41
firewall --enabled --ssh --port=snmp:udp
authconfig --enableshadow --enablemd5
selinux --permissive
timezone Asia/Tokyo
bootloader --location=mbr --driveorder=xvda --append="console=xvc0"

services --enabled=ntpd,oddjobd,snmpd --disabled=acpid,apmd,avahi-daemon,bluetooth,cpuspeed,cups,gpm,hidd,lm_sensors,mdmonitor,microcode_ctl,nfslock,pcscd,smartd,xfs,yum-updatesd

clearpart --all --drives=xvda --initlabel
part /boot --fstype ext3 --size=100 --ondisk=xvda
part pv.2 --size=0 --grow --ondisk=xvda
volgroup VolGroup00 --pesize=32768 pv.2
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=272 --grow --maxsize=544
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
repo --name=base --baseurl=http://repository.xencluster/centos/5/os/i386/
repo --name=updates --baseurl=http://repository.xencluster/centos/5/updates/i386/
repo --name=addons --baseurl=http://repository.xencluster/centos/5/addons/i386/
repo --name=extras --baseurl=http://repository.xencluster/centos/5/extras/i386/

reboot

%packages
@admin-tools
@base
@cluster-storage
@clustering
@core
@emacs
@mail-server
@network-server
@ruby
@server-cfg
@system-tools
@text-internet
@web-server
-smartmontools
-OpenIPMI*
-squid
-samba-*
-system-config-samba
lynx
tftp
kernel-xen
kmod-gfs-xen
kmod-gnbd-xen
-kernel
-kmod-gfs
-kmod-gnbd
-NetworkManager
-bluez-utils
device-mapper-multipath
-irda-utils
-pcmciautils
net-snmp-utils
net-snmp-libs
net-snmp
iscsi-initiator-utils
-apmd
-acpid

%post --log=/mnt/sysimage/root/install-post.log
### network
echo 'NOZEROCONF=yes' >> /etc/sysconfig/network

/bin/cp -p /etc/sysconfig/network-scripts/ifcfg-eth0 /tmp/ifcfg-eth0
/bin/sed 's/^HWADDR=/#HWADDR=/' < /tmp/ifcfg-eth0 > /etc/sysconfig/network-scripts/ifcfg-eth0

/bin/egrep -v '^#' /etc/sysconfig/network-scripts/ifcfg-eth0 | /bin/sed 's/eth0/eth1/' > /etc/sysconfig/network-scripts/ifcfg-eth1
/bin/egrep -v '^#' /etc/sysconfig/network-scripts/ifcfg-eth0 | /bin/sed 's/eth0/eth2/' > /etc/sysconfig/network-scripts/ifcfg-eth2
/sbin/restorecon /etc/sysconfig/network-scripts/ifcfg-eth[12]

### logrotate
/bin/cat > /etc/logrotate.d/00local.conf <<EOL
rotate 20
compress
start 100
EOL
/sbin/restorecon /etc/logrotate.d/00local.conf

### yum update from the local repository
/bin/cp -p /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.dist
/bin/sed 's/mirrorlist=/#mirrorlist=/
s/#baseurl=/baseurl=/
s/mirror.centos.org/repository.xencluster/' < /etc/yum.repos.d/CentOS-Base.repo.dist > /etc/yum.repos.d/CentOS-Base.repo

yum -y remove kernel

### For Cluster
##### /etc/cluster/fence_xvm.key
/usr/bin/base64 -di > /etc/cluster/fence_xvm.key <<EOL
B0K3fFCQVQZdPydoMs29eSmd4vKwEbNC+G58HjSeSGzK5x0+uS8VB8B+/gnHVKLt3sqtzZeEpsKs
<<略>>
gDfGZSWpdWxwjz//h5x/zP2JIv6PgZt++qoSDd/1NxP5zdy0wO6/wHLNghjKDEwjtP/7Lt79ntqB
EOL
/bin/chmod 600 /etc/cluster/fence_xvm.key

##### iptables
/bin/cp -p /etc/sysconfig/iptables /etc/sysconfig/iptables.dist
/bin/cat > /etc/sysconfig/iptables <<EOL
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -s 192.168.55.0/24 -i eth0 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
EOL

### sshd
/bin/cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.dist
/bin/sed 's/^PasswordAuthentication yes/PasswordAuthentication no/' < /etc/ssh/sshd_config.dist > /etc/ssh/sshd_config

/bin/mkdir ~root/.ssh
/bin/chmod 600 ~root/.ssh
/bin/cat > ~root/.ssh/authorized_keys2 <<EOL
ssh-dss AAAA<<略>>
EOL
/bin/chmod 644 ~root/.ssh/authorized_keys2

### Mail
##### /etc/mail/sendmail.cf
/usr/bin/patch /etc/mail/sendmail.mc <<EOL
26c26
< dnl define(\`SMART_HOST', \`smtp.your.provider')dnl
---
> define(\`SMART_HOST', \`fs2.xencluster')dnl
EOL
(cd /etc/mail; /usr/bin/make sendmail.cf)

##### /etc/aliases
/usr/bin/patch /etc/aliases <<EOL
96c96
< #root:  marc
---
> root:  root@xencluster
EOL
/usr/bin/newaliases

### SNMP
/bin/cat > /etc/snmp/snmpd.conf <<EOL
com2sec localhost localhost           COMMUNITY_STRING
com2sec localnet  192.168.55.0/24    COMMUNITY_STRING

group   gOpLocalhost   v1            localhost
group   gOpLocalhost   v2c           localhost
group   gOpLocalnet    v1            localnet
group   gOpLocalnet    v2c           localnet

view    all           included   .1
view    systemview    included   REDHAT-CLUSTER-MIB:RedHatCluster

access  gOpLocalhost   ""      any       noauth    exact  all    none    all
access  gOpLocalnet    ""      any       noauth    exact  all    none    all

syslocation Unknown
syscontact root@xencluster

disk /     100000

load 10

# for cluster
dlmod RedHatCluster     /usr/lib/cluster-snmp/libClusterMonitorSnmp.so
EOL

/bin/cat > /etc/snmp/snmp.conf <<EOL
mibs +REDHAT-MIB:REDHAT-CLUSTER-MIB
EOL

### NTP on Xen DomU
/bin/cat >> /etc/sysctl.conf <<EOL

# For ntpd on Xen DomU.
xen.independent_wallclock = 1
EOL

### cron
/bin/cp -p /etc/crontab /etc/crontab.dist
/bin/sed 's/^\(..\) 4 /\1 5 /' < /etc/crontab.dist > /etc/crontab

### grub
log_mesg "grub"
/bin/cp -p /boot/grub/grub.conf /boot/grub/grub.conf.dist
/bin/sed 's/ rhgb quiet//' < /boot/grub/grub.conf.dist > /boot/grub/grub.conf

### /etc/bashrc
log_mesg "bashrc"
/bin/cp -p /etc/bashrc /etc/bashrc.dist
/bin/sed 's/xterm\*)/xterm*|vt100*)/' < /etc/bashrc.dist > /etc/bashrc


その1・概要
その2・インストールとクラスタの構成
その3・iSCSIターゲットの設定
その4・iSCSIイニシエータの設定
その5・Device-Mapper Multipathの設定
その6・CLVMの設定
その7・GFS2の設定
その8・Congaでの設定
その9・考察

2008/02/04

DRACでリモートからCentOS 5.1をAnaconda Kickstartで完全自動PXEインストール・その3

前々回前回で準備した環境を用いて実際にインストールを行う。
インストール対象のDom0は、DRAC III付きPowerEdge 2650。事前にDRACへTELNETで接続できるよう設定しておく。その手順については、『Dell Remote Access ControllerへのTELNET接続』を参照して欲しい。

作業用PCから、Dom0へTELNETで接続する。TELNET接続で使用するユーザ名およびパスワードは、DRACのもの(『DRACユーザ・パスワードの変更』参照)。
ここでは、TELNET端末にTeraTerm Pro (with SSH2)を用いた。TeraTermの場合、漢字コードはUFT-8、背景色を黒にしておいた方がよい。DRACから送られてくる文字がそうなっているためだ(gnome-terminalやxtermの場合は、特に設定変更の必要はない)
TELNET接続後、connect videoコマンドでDom0のコンソールに接続する。コマンド実行直後、以下の様にファンクションキーなどの特殊キーの入力方法が表示される。
Connected to video. To end, use the key sequence "<CR>~.".

Press the spacebar to pause...

KEYMAPPING FOR CONSOLE REDIRECTION:

Use the "<ESC>R<ESC>r<ESC>R" key sequence for <CTRL-ALT-DEL>
Use the "<ESC><n>" key sequence for the Function <n> Key.
for <n> = 1,2,3, ..., 9
Use the "<ESC>0" key sequence for the Function 10 Key.
Use the "<ESC>!" key sequence for the Function 11 Key.
Use the "<ESC>@" key sequence for the Function 12 Key.
Use the "<ESC>h" key sequence for the Home Key.
Use the "<ESC>k" key sequence for the End Key.
Use the "<ESC>+" key sequence for the Insert Key.
Use the "<ESC>-" key sequence for the Delete Key.
Use the "<ESC>?" key sequence for the Page Up Key.
Use the "<ESC>/" key sequence for the Page Down Key.
Use the "<ESC>^Cx" key sequence for <CTRL-x> where:
^C is <CTRL-c>, and x is one of h, i, j, m.
Use the "<ESC>^Ax" key sequence for <ALT-x> where:
^A is <CTRL-a>, and x is any letter, a through z.
この後の作業の中に使用する必要があるのは、PXE起動を指定するための「<ESC>@」([F12])、接続を切るための「<CR>~.」。キーシーケンスを憶えておく。

この後、本体の電源が入っていなかったり、コンソールにグラフィカルな画面が表示されていると、次のような画面が表示される。
ここでDom0を再起動すると、Dom0のコンソール画面が転送され始める。
ここで、PXE Bootを指定する。[F12]を押す代わりに、前述の通り「<ESC>@」と入力する。
画面右上に「Attemtpting PXE Boot」と表示されていることに注意。
しばらくすると、PXE起動によってDHCPが開始される。
続いて、TFTPによるブートイメージのダウンロードが行われ、ネットワークインストールが開始される。
Anacondaが起動され、CentOSのインストールが開始される。
パッケージの依存性が検査される。
パッケージのダウンロードとインストールの準備。
パッケージのダウンロードとインストールが開始される。所要時間は約10分間。
パッケージインストール後の設定が実行される(%postスクリプトではない)。
通常、ここで再起動に移るが、%postセクションを記述していれば、%postスクリプトが実行される。DELL OpenManageをダウンロードするため、かなり時間がかかる。
%postスクリプトが終了すると、再起動に移る。
OS起動後、GDMのグラフィカルなログイン画面が表示されると、DRACの出力が停止する。
「<CR>~.」を入力し、作業を終了する。
Dom0のコンソールには、GDM画面が表示されている。

DRACでリモートからCentOS 5.1をAnaconda Kickstartで完全自動PXEインストール・その1
DRACでリモートからCentOS 5.1をAnaconda Kickstartで完全自動PXEインストール・その2
DRACでリモートからCentOS 5.1をAnaconda Kickstartで完全自動PXEインストール・その3

DRACでリモートからCentOS 5.1をAnaconda Kickstartで完全自動PXEインストール・その2

URL http://Repository.LocalDomain/centos/5.1/Dom0-ks.cfgに置くAnaconda Kickstartの設定ファイルの内容について解説する。当然、インストール条件によって内容を変える必要がある。今回は、以下の機能を盛り込んだ。
  • VLAN
  • Xen
  • RHCS(luci&ricci、仮想マシンフェンス)
  • DELL OpenManage
OSインストール後の設定は、%postセクションに、シェルスクリプトとして記述する(--interpreterオプションでスクリプト言語を変更することもできる)
ただし、ファイルを新規に生成する場合には注意が必要。SELinuxのファイルコンテキストを、restoreconコマンド等で調整する必要があるかもしれない。ファイル内容の変更にpatchコマンドを使う場合も、結果的に新規にファイルを生成することになるので注意する。

Dom0-ks.cfgの内容は以下の通り。
logging --host=192.168.55.32

text
install
url --url http://Repository.LocalDomain/centos/5/os/i386
lang en_US.UTF-8
keyboard jp106
monitor --monitor="LCD Panel 1024x768"
xconfig --startxonboot --driver ati --resolution 1024x768 --depth 24
network --device eth0 --bootproto static --ip 192.168.55.31 --netmask 255.255.255.0 --gateway 192.168.55.35 --nameserver 192.168.55.33,192.168.55.34 --hostname Dom0.LocalDomain
network --device eth1 --onboot no --bootproto dhcp --hostname Dom0.LocalDomain
rootpw --iscrypted $1$zthPniQJ$u8VAa0oCtLcKrpfk/WIjs0
user --name USERNAME --homedir /home/USERNAME --iscrypted --password=$1$DCVowOrU$N86i3KrFg2yftOqtXMB3w/ --shell=/bin/bash --groups=USERNAME,wheel
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --permissive
timezone --utc Asia/Tokyo
bootloader --location=mbr --driveorder=sda --append="xencons=tty"

clearpart --all --drives=sda
part /boot --fstype ext3 --size=100 --ondisk=sda
part pv.6 --size=0 --grow --ondisk=sda
volgroup VolGroupXX --pesize=32768 pv.6
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroupXX --size=1984
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroupXX --size=10240

repo --name=base --baseurl=http://Repository.LocalDomain/centos/5/os/i386/
repo --name=updates --baseurl=http://Repository.LocalDomain/centos/5/updates/i386/
repo --name=addons --baseurl=http://Repository.LocalDomain/centos/5/addons/i386/
repo --name=extras --baseurl=http://Repository.LocalDomain/centos/5/extras/i386/

services --enabled=oddjobd,ntpd --disabled=avahi-daemon,cpuspeed,cups,nfslock,pcscd,smartd,yum-updatesd

reboot

%packages
@admin-tools
@base
@base-x
@cluster-storage
@clustering
@core
@dns-server
@editors
@emacs
@ftp-server
@gnome-desktop
@graphical-internet
@japanese-support
@legacy-network-server
@mail-server
@network-server
@ruby
@server-cfg
@system-tools
@text-internet
@virtualization
@web-server
lynx
tftp
-kernel
kernel-xen
-kmod-gfs
kmod-gfs-xen
-kmod-gfs
kmod-gnbd-xen
-NetworkManager
-bluez-utils
device-mapper-multipath
-irda-utils
-pcmciautils
net-snmp-utils
net-snmp-libs
net-snmp
OpenIPMI
OpenIPMI-libs
openhpi
-squid


%post --log=/mnt/sysimage/root/anaconda-post.log --erroronfail
function log_mesg() {
/bin/echo
/bin/echo %POST: $*
}

log_mesg "BEGIN %POST SCRIPT"

/bin/cp /tmp/ks-script-* /root

### network
log_mesg "network"
echo 'NOZEROCONF=yes' >> /etc/sysconfig/network

### logrotate
log_mesg "logrotate"
cat > /etc/logrotate.d/00local.conf <<EOL
rotate 20
compress
start 100
EOL

### local yum repository
log_mesg "local yum repository"
/bin/mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.dist
/bin/cat /etc/yum.repos.d/CentOS-Base.repo.dist | /bin/sed 's/mirrorlist=/#mirrorlist=/
s/#baseurl=/baseurl=/
s/mirror.centos.org/Repository.LocalDomain/' > /etc/yum.repos.d/CentOS-Base.repo

### sshd
log_mesg "sshd"
/usr/bin/patch /etc/ssh/sshd_config <<EOL
39a40
> PermitRootLogin no
60c61
< PasswordAuthentication yes
---
> PasswordAuthentication no
EOL
/sbin/restorecon /etc/ssh/sshd_config

##### for User USERNAME
log_mesg "sshd/User USERNAME"
/bin/mkdir ~USERNAME/.ssh
/bin/chmod 700 ~USERNAME/.ssh
/bin/cat > ~USERNAME/.ssh/authorized_keys2 <<EOL
ssh-dss AAAA<<略>>rQ== someuser1@somehost1
ssh-dss AAAA<<略>>achN someuser2@somehost2
EOL
/bin/chmod 644 ~USERNAME/.ssh/authorized_keys2
/bin/chown -R USERNAME.USERNAME ~USERNAME/.ssh

### DELL OpenManage
log_mesg "DELL OpenManage"
log_mesg "DELL OpenManage/WGET"
/usr/bin/wget -q -O - http://linux.dell.com/repo/hardware/bootstrap.cgi | bash
/usr/bin/wget -q -O - http://linux.dell.com/repo/software/bootstrap.cgi | bash
/usr/bin/wget -q -O - http://linux.dell.com/repo/firmware/bootstrap.cgi | bash
log_mesg "DELL OpenManage/yum #1"
/usr/bin/yum install -y srvadmin-all
log_mesg "DELL OpenManage/yum #2"
/usr/bin/yum install -y $(/usr/bin/inventory_firmware -b)
log_mesg "DELL OpenManage/update_firmware"
/usr/bin/update_firmware

### Mail
log_mesg "mail"
##### /etc/mail/sendmail.cf
log_mesg "mail/sendmail.cf"
/usr/bin/patch /etc/mail/sendmail.mc <<EOL
26c26
< dnl define(\`SMART_HOST', \`smtp.your.provider')dnl
---
> define(\`SMART_HOST', \`SmtpServer.LocalDomain')dnl
EOL
(cd /etc/mail; /usr/bin/make sendmail.cf)
/sbin/restorecon /etc/mail/sendmail.cf

##### /etc/aliases
log_mesg "mail/aliases"
/usr/bin/patch /etc/aliases <<EOL
96c96
< #root: marc
---
> root: root@LocalDomain
EOL
/usr/bin/newaliases
/sbin/restorecon /etc/aliases

### SNMP
log_mesg "SNMP"
cat > /etc/snmp/snmpd.conf <<EOL
com2sec localhost localhost COMMUNITY_STRING
com2sec localnet 192.168.55.0/24 COMMUNITY_STRING

group gOpLocalhost v1 localhost
group gOpLocalhost v2c localhost
group gOpLocalnet v1 localnet
group gOpLocalnet v2c localnet

view all included .1
view vDell included .1.3.6.1.4.1.674.10892.1
view systemview included REDHAT-CLUSTER-MIB:RedHatCluster

access gOpLocalhost "" any noauth exact all vDell all
access gOpLocalnet "" any noauth exact all none all

syslocation Unknown
syscontact root@LocalDomain

disk / 100000

load 10

# for DELL
smuxpeer .1.3.6.1.4.1.674.10892.1

# for cluster
dlmod RedHatCluster /usr/lib/cluster-snmp/libClusterMonitorSnmp.so
EOL

cat > /etc/snmp/snmp.conf <<EOL
mibdirs +/opt/dell/srvadmin/omsa/mibs:/opt/dell/srvadmin/rac5/mibs:/opt/dell/srvadmin/rac3/mibs:/opt/dell/srvadmin/sm/mibs:/opt/dell/srvadmin/rac4/mibs
mibs +MIB-Dell-10892:DCS3FRU-MIB:DCS3RMT-MIB:DCS3RMT-MIB:StorageManagement-MIB:DCS3RMT-MIB:REDHAT-MIB:REDHAT-CLUSTER-MIB
EOL

##### iptables
log_mesg "iptables"
/bin/cat > /etc/sysconfig/iptables <<EOL
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -s 192.168.55.0/24 -i eth0.4000 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
EOL

### For Cluster
log_mesg "cluster"
##### /etc/lvm/lvm.conf
log_mesg "cluster/lvm.conf"
/bin/cp -p /etc/lvm/lvm.conf /etc/lvm/lvm.conf.dist
/bin/sed 's/locking_type = 1/locking_type = 3/' < /etc/lvm/lvm.conf.dist > /etc/lvm/lvm.conf

##### /etc/cluster/fence_xvm.key
log_mesg "cluster/fence_xvm.key"
/usr/bin/base64 -di > /etc/cluster/fence_xvm.key <<EOL
FiAuM5lLTfCoom3BIrNrWKXj2eObJkK1AYcg4g9uu+r8kDPl8uZaxva6KhteDOtAMXY62DCvW/3/
<<略>>
IDI+IC9kZXYvbnVsbCB8IGdyZXAgLXEgIkRvbWFpbi0wIiB8fCByZXR1cm4gMQo=
EOL
/sbin/restorecon /etc/init.d/cman

### X fonts FOR racvnc
/bin/mkdir /usr/X11R6/lib
/bin/ln -s /usr/share/X11 /usr/X11R6/lib

### /etc/inittab
log_mesg "inittab"
/usr/bin/patch /etc/inittab <<EOL
32c32,33
< ca::ctrlaltdel:/sbin/shutdown -t3 -r now
---
> #ca::ctrlaltdel:/sbin/shutdown -t3 -r now
> ca::ctrlaltdel:ca::ctrlaltdel:/usr/bin/logger 'CTRL-ALT-DELETE trap is disabled'
EOL
/sbin/restorecon /etc/inittab

### GDM
log_mesg "GDM"
/usr/bin/patch /etc/gdm/custom.conf <<EOL
50a51
> SystemMenu=false
EOL
/sbin/restorecon /etc/gdm/custom.conf

### grub
log_mesg "grub"
/bin/cp -p /boot/grub/grub.conf /boot/grub/grub.conf.orig
/bin/sed 's/ rhgb quiet//' < /boot/grub/grub.conf.orig > /boot/grub/grub.conf

### /etc/bashrc
log_mesg "bashrc"
/bin/cp -p /etc/bashrc /etc/bashrc.dist
/bin/sed 's/xterm\*)/xterm*|vt100*)/' < /etc/bashrc.dist > /etc/bashrc

log_mesg "END %POST SCRIPT"
次回は、実際のインストール作業を解説する(スナップショット画面付)。

DRACでリモートからCentOS 5.1をAnaconda Kickstartで完全自動PXEインストール・その1
DRACでリモートからCentOS 5.1をAnaconda Kickstartで完全自動PXEインストール・その2
DRACでリモートからCentOS 5.1をAnaconda Kickstartで完全自動PXEインストール・その3

2008/02/01

DRACでリモートからCentOS 5.1をAnaconda Kickstartで完全自動PXEインストール・その1

こんなニッチな記事を書いて、自分以外の誰の役に立つのか、という疑問は湧くが…
  • DRACを使うと、キャラクタコンソールをリモートから操作することが可能。
  • PXEとローカルミラーリポジトリを利用すると、CD-ROMなどの媒体を一切利用しない、完全なネットワークインストールが可能。
  • Red Hat系のインストーラ、Anacondaは、Kickstartと呼ばれる、インストール自動化のための仕組みがある。
これら三つの知識を総合すると、完全にリモートから、つまり、対象機器のキーボードや画面に触れずに、Red Hat系のインストールが可能、ということが解る。それを実際にやってみようというわけだ。
しかも、OSインストール後の設定も併せて自動化してしまおう、というオマケ付きだ。

この作業には、以下が必要だ。
  • ローカルミラーリポジトリ
  • DHCPサーバおよびTFTPサーバ
  • DRACの付いたDELL PowerEdge
ローカルミラーリポジトリの代わりにインターネット接続環境を準備して、公式ミラーリポジトリを利用することも可能。
しかし、OSインストール後の設定作業をKickstartで行う場合、その作業を行うスクリプトのデバッグのため、再試行が必要となる。デバッグ作業の時間短縮のため、また、公式ミラーサイトに余計な負荷をかけないためにも、ローカルミラーリポジトリをお勧めする。
詳しい構築手順については、『ローカルミラーレポジトリ・その1・概要』から一連の記事を参照して欲しい。
後で解説するが、ローカルミラーリポジトリには、Anaconda Kickstartの設定ファイルも置く。

DHCPサーバおよびTFTPサーバの構築ついては、ここでは詳しくは解説しない。以下を参照して欲しい。
DHCPサーバ、TFTPサーバおよびローカルミラーリポジトリサーバは、一台で兼ねる事ができる。管理上も一台に集約した方がいいだろう。ここでは、このサーバをRepository (Repository.LocalDomain / 192.168.55.32)とする。

DHCPサーバに関しては、以下の様なエントリを追加する。
host Dom0 {
hardware ethernet 00:0d:56:XX:XX:XX;
fixed-address 192.168.55.31;
}
ここで、Dom0は、インストール対象のホスト名(FQDN: Dom0.LocalDomain)、00:0d:56:XX:XX:XXはそのMACアドレス。それに対して、ここでは、IPアドレス192.168.55.31を割り当てることを指定している。

TFTPサーバ上には、Dom0向けの設定ファイル/tftpboot/linux-install/pxelinux.cfg/01-00-0d-56-XX-XX-XXを準備する(ファイル名は、'01-'の後にDom0のMACアドレスを続けたもの)。内容は次の通り。
default centos5.1

label centos5.1
kernel centos5.1/vmlinuz
append load initrd=centos5.1/initrd.img devfs=nomount ksdevice=eth0 ks=http://Repository.LocalDomain/centos/5.1/Dom0-ks.cfg
最後の行のappendディレクティブで、Anaconda Kickstartの設定ファイルの場所を指定している。

次回は、Kickstartの設定ファイルの内容を解説。

DRACでリモートからCentOS 5.1をAnaconda Kickstartで完全自動PXEインストール・その1
DRACでリモートからCentOS 5.1をAnaconda Kickstartで完全自動PXEインストール・その2
DRACでリモートからCentOS 5.1をAnaconda Kickstartで完全自動PXEインストール・その3

2008/01/30

訂正:Anaconda Kickstartの%postスクリプトの動作を観察する

Anaconda Kickstartの%postスクリプトの動作を観察する』にウソを書いてしまったので訂正。

スクリプトの例の最後に
/bin/chown -R ユーザ.グループ ~ユーザ/.ssh
%end
と書いたが、最後の%endを書くと、bashにジョブの指定と解釈され、エラーになる(少なくとも現行バージョンでは)

言い訳:
公式ドキュメントには、%pre%packageおよび%postセクションの終わりに、%endと書く例がある。
のだが、よく読むと…
Postinstallation scripts should be closed with %end, though this is not yet required. It will be required in the future, however.
なんてこったい!今のバージョンでは、まだ%endって書くな、だそうです。

2008/01/24

Anaconda Kickstartの%postスクリプトの動作を観察する

注意: 訂正記事も併せて読んでください。

Xen DomUインストールでAnaconda Kickstartを使う』『Kickstart中のパスワードの暗号化』でAnaconda Kickstartを使った自動インストールを紹介した。

このKickstartでは、設定ファイル中に、OSインストール直後(あるいは直前)に自動実行させたいスクリプトを記述できる。これを%postスクリプト(あるいは%preスクリプト)と呼ぶ(Postscriptとは関係ない。念の為)
例えば、SSHDについて、/etc/ssh/sshd_configを編集してパスワードログインやrootログインを禁止したり、~ユーザ/.ssh/authorized_keys2を作成して、公開鍵でログイン可能にしたり、という設定作業を自動化する等の応用が考えられる。その場合、設定ファイル中に、
%post
/usr/bin/patch /etc/ssh/sshd_config <<EOL
39a40
> PermitRootLogin no
60c61
< PasswordAuthentication yes
---
> PasswordAuthentication no
EOL


/bin/mkdir ~ユーザ/.ssh
/bin/chmod 600 ~ユーザ/.ssh
/bin/cat > ~ユーザ/.ssh/authorized_keys2 <<EOL
ssh-dss AAAAB3NzaC1kc3MAAACBAIsk92QYQGB8GRK+zHp/7JaXjBA+Jglm2MR3mO1uJtGncof+O/89
<<略>>
DxgLIXtME7riQMSVp3ImnMT9Q7bNJUWiGaZB6v5BBDYe86blSw/Wl/JSDg8= whoami@whereishere
EOL
/bin/chmod 644 ~ユーザ/.ssh/authorized_keys2
/bin/chown -R ユーザ.グループ ~ユーザ/.ssh
%end
と記述する。

では、このスクリプトをデバッグするにはどうすればよいだろうか?これにはいくつかの方法がある。

最初の方法は、Kickstartのログをとることだ。これは、Kickstart設定ファイル中にSYSLOGサーバのアドレスを
logging --host=192.168.55.10
の様に指定すればよい。ただし、このログには、%postスクリプトが出力するエラーメッセージは含まれない。

次に、%postスクリプトのログをファイルに書き出すことも可能だ。これは、%postコマンドに--log=ファイル名を指定すればよい。例えば、
%post --log=/mnt/sysimage/root/anaconda-post.log --erroronfail
ここでファイルのパスに注目して欲しい。ここで指定するのは、Anacondaから認識されているパス名なので、OSインストール後のパス名の前に/mnt/sysimageを付加する必要がある。
オプション--erroronfailは、スクリプトにエラーがあった場合にインストールを失敗させるための指定だ。
ただ、この方法は、実行の様子をリアルタイムに見れるわけではない。バッファリングの関係で、標準出力と標準エラーの内容が前後してしまうことがある。

最後は、ターミナルに表示させる方法だ。これは、%postスクリプトの最初に、
%post
exec < /dev/tty3 > /dev/tty3
/usr/bin/chvt 3
最後に、
/usr/bin/chvt 1
%end
と記述すればよい。この指定によって、スクリプトの出力をtty3へ送り、表示する画面をchvtコマンドで切替えている。この方法の利点は、実行の様子をリアルタイムに観察できることだ。

なお、Kickstartインストール中は、tty1がテキストインストール画面、tty6がGUIインストール画面で、tty2には対話的なシェルが立ち上がっている。[Ctrl]+[Fn]で切替えることができる。

参考:『Tips and tricks for anaconda and kickstart

2008/01/23

Kickstart中のパスワードの暗号化

Xen DomUインストールでAnaconda Kickstartを使う』で、kickstartの使用法を紹介したが、この中のパスワードの扱いについて。
Kickstartファイル中では、ユーザrootのパスワードや、一般ユーザ生成時にそのパスワードを指定できる。閉鎖環境なら、これらのパスワードを平文で書いてもいいが、少しでも安全性を上げたい場合、これらを暗号化して指定することができる。たとえば、
rootpw --iscrypted $1$XRWJplIP$5sSckYBmFvtMzRi4ZKiPX.
user --name=user --iscrypted --password=$1$sHG7Mld2$D2490DxcHuYE79eAfm0Id.
と言った具合だ。

では、この暗号化したパスワードをどう生成するか?一番単純なのは、/etc/shadowのencrypted passwordフィールド(「:」(コロン)区切りの二番目のフィールド)をコピーすること。別の方法としては、opensslコマンドを利用する方法がある。
$ openssl passwd -1
Password:パスワード
Verifying - Password:パスワード
$1$GOdtVjHf$Udhy08p1PyutEO7QGcxzN/
$
四行目、'$1$'で始まる文字列が暗号化されたパスワードだ。

#遅くなりましたが、今年もよろしくご指導ご鞭撻の程を。

2007/11/14

Xen DomUインストールでAnaconda Kickstartを使う

RHELやCentOSをインストールしたことのある人は、インストーラAnacondaのお世話になっているはずだ。Anacondaによるインストールでは通常、対話的にインストールパラメータを指定していく。
これはこれでユーザに優しい仕組みだが、同じ設定で何台もOSをインストールしたり、少しづつインストールパラメータを変えながら繰り返しインストールしたりする場合には、かえって煩雑で不便だ。それを解消する方法がKickstartだ。
Kickstartのもっとも簡単な利用方法は、設定ファイルks.cfgをフロッピーディスクに入れておき、これをインストールディスク起動時に読み込ませる方法だろう。インストールディスクからの起動時、boot:プロンプトが表示されたら、次のように入力する(未検証)
boot: linux ks=floppy
詳しくは、Stray Penguinの記事を参照して欲しい(先達はあらまほしきことなり。ありがたや)

さて、本題。では、XenのDomUをインストールするときにはどうすればいいのか?DomUのインストーラ、virt-installプログラムのオプション--extra-argsオプションを使ってAnacondaにパラメータを渡せばよい。例えば、
  • ローカルレポジトリ: http://centos.repository.localdomain/centos/5/os/i386
  • Kickstart設定ファイル: http://centos.repository.localdomain/centos/5/DomU-ks.cfg
を元を使用する場合、以下の様に実行する。
# virt-install --name=node01 --uuid=`uuidgen` --ram=256 --vcpus=1 \
--file=/dev/VolGroup00/LogVolNode01 \
--nographics --paravirt \
--location=http://centos.repository.localdomain/centos/5/os/i386 \
--extra-args='ks=http://centos.repository.localdomain/centos/5/DomU-ks.cfg'

さて、ここまでKickstartの設定ファイルks.cfgの内容については触れてこなかった。詳しくは、マニュアルを参照して欲しいが、実際に例を見てみるのが早い。普通にCentOSやFedora、RHELをインストールすると、そのときのインストールパラメータが、Kickstart設定ファイルの形式で、/root/anaconda-ks.cfgに保存されている。自分が対話的に指定した内容とこれを照らし合わせながら眺めてみると、直感的に理解できるはずだ。

LVMを利用している場合には、
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --all --drives=xvda
#part /boot --fstype ext3 --size=100 --ondisk=xvda
#part pv.100000 --size=0 --grow --ondisk=xvda
#volgroup VolGroup00 --pesize=32768 pv.100000
#logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=272 --grow --maxsize=544
#logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
の様なコメントアウトされた部分が見つかる。コメントを読むと、そのままでは動かないような記述だが、ディスク全体を初期化する(clearpart --all)ような場合や、パーティションを変更しない場合は、問題なく動作する。必要な部分をコメントアウトして使う。

ちょっと予告: 上の例の中で利用したローカルレポジトリ環境(参考)や、これ利用してPXEインストールする環境
(参考)の構築は結構手間なのだが、Cobblerというツールを利用すると簡単にできるようだ。検証でき次第、ここで報告したい。