labunix's blog

labunixのラボUnix

vSphere6.0にRHEL7.1を導入、開発者用サブスクリプションを有効化する。

■vSphere6.0にRHEL7.1を導入、開発者用サブスクリプションを有効化する。
 動作確認目的で、無償となった開発者用サブスクリプションを使用する。

 Red Hat Developer Programに参加して開発者用サブスクリプションを入手しよう
 https://oss.sios.com/redhat-ch/blog/developer

■基盤となるOSは、vShpere Hypervisor 6.0.0。
 起動まではvSphere Clientで行い、
 ブラウザコンソールでインストール作業を行う。

] uname -s -r -v
VMkernel 6.0.0 #1 SMP Release build-3029758 Aug 31 2015 00:54:00

] esxcli software vib list | awk '/ui/{gsub(/  */,",",$0);print}'
esx-ui,1.1.0-3731936,VMware,VMwareCertified,2016-04-09,

■インストールに使用するメディアは7.1 DVDのisoイメージ。

] md5sum < /vmfs/volumes/datastore1/rhel-server-7.1-x86_64-dvd.iso 
370662c78e36528bbaf3f2b901c29d6f  -

■ゲストOSの情報

] vim-cmd vmsvc/getallvms | awk '/rhel/{print $1,$2}'
12 rhel7.1

] awk '(/^[cdegmn]/ && !/Address|^m[io]|FALSE|pci/)' \
    /vmfs/volumes/datastore1/rhel7.1/rhel7.1.vmx
config.version = "8"
nvram = "rhel7.1.nvram"
numvcpus = "2"
cpuid.coresPerSocket = "2"
memSize = "2048"
ethernet0.virtualDev = "vmxnet3"
ethernet0.networkName = "VM Network"
ethernet0.addressType = "generated"
ethernet0.uptCompatibility = "TRUE"
ethernet0.present = "TRUE"
displayName = "rhel7.1"
guestOS = "rhel7-64"
extendedConfigFile = "rhel7.1.vmxf"

■初回起動後のネットワーク確認。

$ ip -4 neigh | sed -e 's/[0-9a-f][0-9a-f]:/XX:/g'
172.31.31.90 dev eno16780032 lladdr XX:XX:XX:XX:XX:ab REACHABLE
172.31.31.252 dev eno16780032 lladdr XX:XX:XX:XX:XX:48 STALE

$ ip -4 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eno16780032: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    inet 172.31.31.54/24 brd 172.31.31.255 scope global eno16780032
       valid_lft forever preferred_lft forever

$ ip -4 route 
default via 172.31.31.252 dev eno16780032  proto static  metric 100 
172.31.31.0/24 dev eno16780032  proto kernel  scope link  src 172.31.31.54  metric 100 

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.31.31.252   0.0.0.0         UG    100    0        0 eno16780032
172.31.31.0     0.0.0.0         255.255.255.0   U     100    0        0 eno16780032

■待ち受けポート程度なら、ざっと16進数を10進数に変換するだけで良い。

$ awk '/[0-9A-F]/{gsub(/.*:/,"",$2);print $2}' /proc/net/tcp | \
    awk '{a[$1]+=1}END{for(n in a){print "echo $((0x"n"))"}}' | sh
22
25
631

■netstatは無く、地雷の多いssコマンドしか使えない。

$ ss -4tan
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port 
LISTEN     0      128                       *:22                       *:*     
LISTEN     0      128               127.0.0.1:631                      *:*     
LISTEN     0      100               127.0.0.1:25                       *:*     
ESTAB      0      0              172.31.31.54:22            172.31.31.90:43061 

$ sudo ss -4tanp
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port 
LISTEN     0      128                       *:22                       *:*      users:(("sshd",1139,3))
LISTEN     0      128               127.0.0.1:631                      *:*      users:(("cupsd",12785,12))
LISTEN     0      100               127.0.0.1:25                       *:*      users:(("master",1620,13))
ESTAB      0      0              172.31.31.54:22            172.31.31.90:43061  users:(("sshd",14298,3),("sshd",14285,3))

■サービスの確認

$  systemctl -t service | awk '/running/{gsub(/.service/,"",$1);print $1}' | column
abrt-oops		dbus			rhsmcertd
abrtd			firewalld		rsyslog
accounts-daemon		gdm			rtkit-daemon
alsa-state		irqbalance		smartd
atd			ksmtuned		sshd
auditd			libstoragemgmt		systemd-journald
avahi-daemon		libvirtd		systemd-logind
bluetooth		lvm2-lvmetad		systemd-udevd
chronyd			ModemManager		tuned
colord			NetworkManager		udisks2
crond			polkit			upower
cups			postfix			vmtoolsd

$ systemctl status sshd.service
sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
   Active: active (running) since 日 2016-04-17 03:40:56 JST; 24min ago
 Main PID: 1139 (sshd)
   CGroup: /system.slice/sshd.service
           └─1139 /usr/sbin/sshd -D

$ systemctl status postfix.service
postfix.service - Postfix Mail Transport Agent
   Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled)
   Active: active (running) since 日 2016-04-17 03:40:59 JST; 24min ago
 Main PID: 1620 (master)
   CGroup: /system.slice/postfix.service
           ├─1620 /usr/libexec/postfix/master -w
           ├─1637 pickup -l -t unix -u
           └─1638 qmgr -l -t unix -u

$ systemctl status cups
cups.service - CUPS Printing Service
   Loaded: loaded (/usr/lib/systemd/system/cups.service; enabled)
   Active: active (running) since 日 2016-04-17 03:55:20 JST; 1h 0min ago
 Main PID: 12785 (cupsd)
   CGroup: /system.slice/cups.service
           └─12785 /usr/sbin/cupsd -f

■隔離環境でインストールすると、サブスクリプションが登録されていないので、
 yumが実行出来ない。

$ sudo yum repolist all
読み込んだプラグイン:langpacks, product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
repolist: 0

$ subscription-manager config --server.proxy_hostname=172.31.31.60 --server.proxy_port=8080
スーパーユーザー権限を必要とする"subscription-manager"を実行しようとしていますが、
 実行するには追加情報が必要です。
"root" として認証しています
パスワード:

$ subscription-manager register
スーパーユーザー権限を必要とする"subscription-manager"を実行しようとしていますが、
 実行するには追加情報が必要です。
"root" として認証しています
パスワード:
ユーザー名: labunix1
パスワード: 
このシステムは次の ID で登録されました: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

■サブスクリプションIDの登録確認

$ subscription-manager list --available --all | awk '/サブスクリプション名|サービスレベル|終了|システムタイプ|数量/'
パスワード:
サブスクリプション名:     Red Hat Enterprise Linux Developer Suite
数量:                     1
サービスレベル:           Self-Support
終了:                     20170402日
システムタイプ:           物理
サブスクリプション名:     Red Hat Enterprise Linux Developer Suite
数量:                     100
サービスレベル:           Self-Support
終了:                     20170402日
システムタイプ:           仮想

# subscription-manager subscribe --auto


インストール済み製品の現在の状態:
製品名: Red Hat Enterprise Linux Server
状態:   サブスクライブ済み

# subscription-manager list

+-------------------------------------------+
    インストール済み製品のステータス
+-------------------------------------------+
製品名:           Red Hat Enterprise Linux Server
製品 ID:          69
バージョン:       7.1
アーキテクチャー: x86_64
状態:             サブスクライブ済み
状態の詳細:       
開始:             20160402日
終了:             20170402# yum repolist all | awk '/有効/{print $1}'
'ascii' codec cant decode byte 0xe3 in position 0: ordinal not in range(128)
rhel-7-server-eus-rpms/7Server/x86_64
rhel-7-server-rpms/7Server/x86_64
rhel-7-server-rt-beta-rpms/x86_64
rhel-7-server-rt-rpms/7Server/x86_64
rhel-ha-for-rhel-7-server-eus-rpms/7Server/x86_64
rhel-ha-for-rhel-7-server-rpms/7Server/x86_64
rhel-rs-for-rhel-7-server-eus-rpms/7Server/x86_64
rhel-rs-for-rhel-7-server-rpms/7Server/x86_64

■ところで、上記のpythonのUnicodeEncodeErrorらしき文言は「LANG=C」なら出ない。
 LANG環境変数自体は正しく設定されているので、単純に作りが甘いのでしょう。

# env LANG=C yum repolist all | awk '/enable/{print $1}'
rhel-7-server-eus-rpms/7Server/x86_64
rhel-7-server-rpms/7Server/x86_64
rhel-7-server-rt-beta-rpms/x86_64
rhel-7-server-rt-rpms/7Server/x86_64
rhel-ha-for-rhel-7-server-eus-rpms/7Server/x86_64
rhel-ha-for-rhel-7-server-rpms/7Server/x86_64
rhel-rs-for-rhel-7-server-eus-rpms/7Server/x86_64
rhel-rs-for-rhel-7-server-rpms/7Server/x86_64

# locale
LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=