samba 4.xでドメイン/フォレストの機能レベルを変更する

2016/07/19追記

Samba 4.4.5における現状についてを「Samba 4.4.xでActive Directoryを1から立てる」にて公開中です。

2018/02/01追記
Samba 4.7.4に置ける機能レベルについて下記の記事に追加しました。


Samba 4.xでActive Directoryを1から立てる」で作成したActive Directoryは、ドメインの機能レベル/フォレストの機能レベルが共に「Windows Server 2003」となっていた。

Sambaのコマンドで確認すると、以下の様になっていた。

[root@adtest ~]# /usr/local/samba/bin/samba-tool domain level show
Domain and forest function level for domain 'DC=adosakana,DC=local'

Forest function level: (Windows) 2003
Domain function level: (Windows) 2003
Lowest function level of a DC: (Windows) 2008 R2
[root@adtest ~]#

で・・・2014年5月現在、機能レベルの変更をWindowsから行うことはできないらしい。

samba公式Wikiの「Raising the functional levels」に「Hint: This way does not work at the moment! 」として注意書きがついている。

samba-toolコマンドで変更する、とのこと。
samba 4.1.7の段階で指定できる機能レベルは’2003′, ‘2008’, ‘2008_R2’の3種類。
2018/02/01時点で最新のsamba 4.7.4でも、2012と2012_R2はサポートされていません。(Kerberos関連の動作改善などが取り入れられていない)

まずは、ドメインレベルの上昇から・・・

[root@adtest ~]# /usr/local/samba/bin/samba-tool domain level raise --domain-level=2008_R2
Domain function level changed!
All changes applied successfully!
[root@adtest ~]# /usr/local/samba/bin/samba-tool domain level show
Domain and forest function level for domain 'DC=adosakana,DC=local'

Forest function level: (Windows) 2003
Domain function level: (Windows) 2008 R2
Lowest function level of a DC: (Windows) 2008 R2
[root@adtest ~]#

続いて、フォレストレベル・・・

[root@adtest ~]# /usr/local/samba/bin/samba-tool domain level raise --forest-level=2008_R2
Forest function level changed!
All changes applied successfully!
[root@adtest ~]# /usr/local/samba/bin/samba-tool domain level show
Domain and forest function level for domain 'DC=adosakana,DC=local'

Forest function level: (Windows) 2008 R2
Domain function level: (Windows) 2008 R2
Lowest function level of a DC: (Windows) 2008 R2
[root@adtest ~]#

ちなみに、先にフォレストレベルを上げようとすると、以下の様なエラーとなります。

[root@adtest ~]# /usr/local/samba/bin/samba-tool domain level raise --forest-level="2008_R2"
ERROR: Forest function level can't be higher than the domain function level(s). Please raise it/them first!
[root@adtest ~]#

RHEL6のkickstartインストールだけどホスト名/IPアドレスを手動入力する

RHEL6/CentOS6のkickstartインストールの際、DHCPによるホスト名/IPアドレス配布だけではなく、固定IPアドレスおよびホスト名でのインストールも行いたい。
かといって、起動オプションに細工するとか、個別のkickstartファイルを書く、とかはしたくない。

RHEL4ぐらいのkickstartだと、network行を書かなければ聞いてきたんだけど、いまはそんな仕様ではない模様。

探したらRedHatのkickstart MLで発見「Re: clearpart -all warning

「%pre」内で、コンソールを6番に切り替えてからreadコマンドにより値を入力、とのこと。
(「MORE Kickstart Tips and Tricks」だと3番とあったんだけど、3番でやったら出力が混じったので6番を採用した)
(あと、read -p “~” ~ /dev/tty3 2>&1って記述はうまく動かなかった)

そんなわけで作成したkickstartファイルはこちら!

# Kickstart file automatically generated by anaconda.

#version=DEVEL
install
nfs --server=192.168.44.151 --dir=/images/cent6
lang en_US.UTF-8
keyboard jp106

%include /tmp/network-ks.cfg

rootpw  --plaintext password
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc Asia/Tokyo

zerombr
bootloader --location=partition --driveorder=sda --append="crashkernel=auto"
clearpart --all --drives=sda --initlabel

part /boot/efi --fstype=efi --grow --maxsize=200 --size=50
part /boot --fstype=ext4 --size=500
part pv.vol1 --grow --size=1

volgroup vg_vol1 --pesize=4096 pv.vol1
logvol / --fstype=ext4 --name=lv_root --vgname=vg_vol1 --grow --size=1024 --maxsize=51200
logvol swap --name=lv_swap --vgname=vg_vol1 --grow --size=1638 --maxsize=1638

repo --name="CentOS"  --baseurl=nfs:192.168.44.151:/images/cent6 --cost=100

%packages
@core
@server-policy
@workstation-policy
nfs-utils
%end

%pre --log=/root/anaconda-pre.log
#!/bin/bash

exec < /dev/tty6 > /dev/tty6 2>&1
chvt 6

echo "=== Please input this server information ==="
read -p "Enter hostname: " NEWHOSTNAME
read -p "Enter IP address: " NEWIPADDR
read -p "Enter netmask: " NEWNETMASK
read -p "Enter default gw: " NEWGATEWAY
read -p "Enter DNS server IP: " NEWDNS

echo "network --bootproto=static --ip=${NEWIPADDR} --netmask=${NEWNETMASK} --gateway=${NEWGATEWAY} --nameserver=${NEWDNS} --device=eth0 --onboot=yes --hostname=${NEWHOSTNAME}" > /tmp/network-ks.cfg


chvt 1
%end

%post --log=root/anaconda-post.log --erroronfail
echo "192.168.44.151   master" >> /etc/hosts
mkdir /mnt2
mount -t nfs 192.168.44.151:/images/work /mnt2
rpm -ivh /mnt2/chef-11.12.2-1.el6.x86_64.rpm
mkdir -p /etc/chef
cp /mnt2/validation.pem /etc/chef/validation.pem
chmod 0600 /etc/chef/validation.pem
cp /mnt2/client.rb /etc/chef/client.rb
/usr/bin/chef-client

if [ -f /boot/efi/EFI/redhat/grub.conf ]; then
        sed -i "s/rhgb quiet//" /boot/efi/EFI/redhat/grub.conf
fi
if [ -f /boot/grub/grub.conf ]; then
        sed -i "s/rhgb quiet//" /boot/grub/grub.conf
fi

%end

#reboot

RHEL6のkickstartでPV/VGの名前に_が使えない?

最近、RHEL6/CentOS6の構築自動化手法をいろいろ検討中。

インストール時のkickstartファイルの編集中に初めて認識した仕様。

Logical Volumeの名前は自由に指定できる。
Volume Groupの名も自由に指定できる。
Pythical Volumeの名前はある程度制限される。

fedora project:Anaconda/Kickstart:part or partition
kickstart内でパーテーション作成をする際、命名法則により使用用途が決定される、という仕様になっている。
LVMで使用するためにPVを作成する場合は「pv.~」という命名規則で作る必要がある。
(pv.以降は好きに名前をつけられる)

というわけで、自動生成された「pv.0083」とかいう感じのPVを「pv_vol1」とかに名前変更しようとして失敗したのは、この仕様のせいで、「pv.vol1」とかにすれば問題ない、ということでした。

RHEL6インストールガイドの「EFI用のPXEブートの設定」の記述が嘘っぱちな件

PXEブートを使ってRHEL6/CentOS6のインストールを行おうとしたら、RHEL6の公式ドキュメントに騙された・・・

参照にしたドキュメントは「インストールガイド EFI 用の PXE ブートの設定
(英語版の「30.2.2. Configuring PXE Boot for EFI」も誤っている)

(2015/04/07 英語版/日本語版共に、3の記述は修正されたことを確認)

誤っているところは、以下のところ

3. tftpboot 内に EFI ブートイメージ用のディレクトリパスを作成して、ブートディレクトリからブートイメージをコピーします。
mkdir /var/lib/tftpboot/pxelinux
mkdir /var/lib/tftpboot/pxelinux/bootx64.efi
cp /boot/efi/EFI/redhat/grub.efi /var/lib/tftpboot/pxelinux/bootx64.efi

上記手順だと、grub.efiを/var/lib/tftpboot/pxelinux/bootx64.efi/grub.efiに置くことになる。

5. pxelinux 内に pxelinux.cfg ディレクトリを作成します。
mkdir /var/lib/tftpboot/pxelinux/pxelinux.cfg

6. このディレクトリに設定ファイルを追加します。ファイル名は、efidefault とするか、または IP アドレスにちなんだ名前を付けます。例えば、マシンの IP アドレスが 10.0.0.1 の場合には、ファイル名を 0A000001 とします。
/var/lib/tftpboot/pxelinux/pxelinux.cfg/efidefault にあるサンプルの設定ファイルは以下のようになります。

何が間違っているか?

「ファイルを置くパス」

正しい手順は、以下の通り


3. tftpboot 内に EFI ブートイメージ用のディレクトリパスを作成して、ブートディレクトリからブートイメージをコピーします。

mkdir /var/lib/tftpboot/pxelinux
cp /boot/efi/EFI/redhat/grub.efi /var/lib/tftpboot/pxelinux/bootx64.efi

grub.efiをbootx64.efiという名前で/var/lib/tftpboot/pxelinux/に置く。


5. pxelinux 内に pxelinux.cfg ディレクトリを作成します。
mkdir /var/lib/tftpboot/pxelinux/pxelinux.cfg

EFIの場合は、/var/lib/tftpboot/pxelinux/pxelinux.cfg/というディレクトリを作る必要は無い。


6. このディレクトリに設定ファイルを追加します。ファイル名は、efidefault とするか、または IP アドレスにちなんだ名前を付けます。例えば、マシンの IP アドレスが 10.0.0.1 の場合には、ファイル名を 0A000001 とします。
/var/lib/tftpboot/pxelinux/efidefault にあるサンプルの設定ファイルは以下のようになります。

default=0
timeout=1
splashimage=(nd)/splash.xpm.gz
hiddenmenu
title RHEL
        root (nd)
        kernel /rhel6/vmlinuz
        initrd /rhel6/initrd.img

efidefaultというファイルは/var/lib/tftpboot/pxelinux/というディレクトリに置く。
なぜか「/rawhide-x86_64/」と記載されているが、後の記述をみると「/rhel6/」であるべきもの。

参考にしたページ
・Grokbase:[CentOS] PXE booting UEFI
・fedora project:QA:Testcase UEFI pxeboot

Endian Firewall Community Editionをv2.5.2からv3.0に上げた

現在運用中のEndian Firewall Community Editionをv2.5.2からv3.0.0へアップデートしてみた。

isoイメージはあるもののアップデート手法が明示されていなくて悩む。
「efw-upgradeを実行しろ」というのを見つけたが、実行しても、v2.5.2のまま。

フォーラムにコメント発見。
The New 3.0 Release」のコメント

The upgrade process from a 2.5.X to a 3.0 Appliance will be available by the end of January. Please contact the Endian Support Team for more information.

By the way it’s not an update that can be delivered only with “efw-update upgrade” but a repository switch is needed.

efw-upgrade -s

select 2

EFW 2.5.2 will be update to 3.0Dev

But http proxy 3.0 dev don’t work, don’t block or filer web, Log & report don’t see everything about proxy http

そう、Production versionでのefw-upgradeコマンドによる2.5.2から3.0へのアップデートは、まだ提供されていなかったという!
開発版に切り替えれば可能、ということなので、やってみた。

「efw-upgrade -s」を実行して、「2) Development」を選択すると、すんなりv3.0へのアップデートが完了。

・・・・・・なんと