あとがきのようなもの

インフラ関連,コンテナ,仮想化技術、過去に書いた記事の解説など

vCenter Serverのアップデート(7.0 Update 3)

vCenter Server Appliance(vCSA)を久々に起動したのでアップデートを実施。 vCSAの管理画面(http://FQDN or IPaddress:5480)からGUIで実施。

1回目(7.0 Update 1c → 7.0 Update 2c)

7.0 Update 1c(7.0.1.00200) から 7.0 Update 2c(7.0.2.00400)のアップデートを実施。 vCSAのアップデートは累積アップデートなので最新のものを1度当てれば良いので特に問題がなければ最新のものを選択する。

利用可能なアップデートでリリース日でソートして最新のものを選んだつもりが、7.0.2.00400が選んでしまっていた模様(スクショ上は7.0.2.00500を選択)。

アップデートリリースの選択
アップデートリリースの選択

リリースバージョンを選択後、ステージングしてインストールを押す。

EULA確認画面
EULA確認画面

アップデート前チェックの実行
アップデート前チェックの実行

SSOのパスワード入力
SSOのパスワード入力

CEPへの参加選択
CEPへの参加選択

vCenter Serverのバックアップの確認
vCenter Serverのバックアップの確認

インストールの開始
インストールの開始

インストールの完了
インストールの完了

インストール時間はちょうど60分ほど

2回目(7.0 Update 2c → 7.0 Update 3)

7.0 Update 2c(7.0.2.00400) から 7.0 Update 3(7.0.3.00000)のアップデートを実施。 ウィザードの流れは1回目と同じ。続けて実施したからか、SSOのパスワード入力は省略された。

アップデートリリースの選択
アップデートリリースの選択

EULA確認画面
EULA確認画面

アップデート前チェックの実行
アップデート前チェックの実行

CEPへの参加確認
CEPへの参加確認

vCenter Serverのバックアップの確認
vCenter Serverのバックアップの確認

インストールの開始
インストールの開始

インストールの完了
インストールの完了

インストール時間は40分ほど

アップデート後の確認

現在のバージョンの詳細と履歴
現在のバージョンの詳細と履歴

vSphere Clientでバージョン確認
vSphere Clientでバージョン確認

less(pager)をコンテナ内でビルドする

lessの最新版では--headerオプションが使えるということでソースからビルドしてみた。 ビルド環境はUBI8のコンテナ内で実行してコンテナイメージを作成。 lessコマンドをコンテナで実行、またはコンテナからビルド済みバイナリを取得できるようにする。

GitHubリポジトリは下記。ビルド方法や実行方法は下記リポジトリのREADMEを参照。

github.com

ビルド時のエラー対応

configureでエラー

[root@a0b329988b80 less]# cat config.log | grep -A10 -B10 "terminal"
| #endif
| char regcmp ();
| int
| main ()
| {
| return regcmp ();
|   ;
|   return 0;
| }
configure:4030: result: no
configure:4040: checking for working terminal libraries
configure:4322: result: Cannot find terminal libraries - configure failed

## ---------------- ##
## Cache variables. ##
## ---------------- ##

ac_cv_c_compiler_gnu=yes
ac_cv_env_CC_set=
ac_cv_env_CC_value=
ac_cv_env_CFLAGS_set=
ac_cv_env_CFLAGS_value=

原因: lncurseswが無い [root@a0b329988b80 less]# cat config.log | grep -A10 -B10 "lncursesw" | #endif | char initscr (); | int | main () | { | return initscr (); | ; | return 0; | } configure:3762: result: no configure:3770: checking for initscr in -lncursesw configure:3795: gcc -o conftest -g -O2 conftest.c -lncursesw >&5 /usr/bin/ld: cannot find -lncursesw collect2: error: ld returned 1 exit status configure:3795: $? = 1 configure: failed program was: | / confdefs.h / | #define PACKAGE_NAME "less" | #define PACKAGE_TARNAME "less" | #define PACKAGE_VERSION "1" | #define PACKAGE_STRING "less 1" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL ""

対処: `ncurses-devel`をインストールする

## コンテナビルド時にエラーで止まる

`make -f Makefile.aut dist`実行後、gpgのエラーが出てコンテナビルドが止まる。

<--- snip ---> Creating release/less-594/594.tar.gz Signing release/less-594/less-594.tar.gz gpg: directory '/root/.gnupg' created gpg: keybox '/root/.gnupg/pubring.kbx' created gpg: no default secret key: No secret key gpg: signing failed: No secret key make: *** [Makefile.aut:130: dist] Error 2 <--- /snip --->

対処: エラーが出てもコンテナのビルドが止まらないようにする。
- Containerfileの`RUN`の該当行を修正: `&& make -f Makefile.aut dist || true \`

### 参考URL
- lessのコンパイル方法: [compiling - How to compile LESS pager? - Unix & Linux Stack Exchange](https://unix.stackexchange.com/questions/468215/how-to-compile-less-pager)

- configureエラーの対処: [Less configuration fails...](https://www.linuxquestions.org/questions/linux-from-scratch-13/less-configuration-fails-573380/)

- コンテナのビルドエラーを無視する: [docker - Dockerfile build - possible to ignore error? - Stack Overflow](https://stackoverflow.com/questions/30716937/dockerfile-build-possible-to-ignore-error/30717108)

CBL-Mariner 1.0のインストール

CBL-Marinerの最新版(1.0.20210901-1.0)でISOがリリースされていた。以前は自分でISOを作成する必要があったのが不要に。

github.com

GitHubのリリースにはISOイメージはなく、別のURLからダウンロードする。

You can try CBL-Mariner with the following ISO Image: x86_64 ISO.

インストールメモ

ESXi 仮想マシンの作成

  • 仮想マシンタイプはその他のLinux 4.x以降(64ビット)を選択
  • SCSIコントローラーにVMware Paravirtual使用
  • NICVMXNET 3使用
  • UEFI、セキュアブート有効

インストールウィザード

  • ISOで起動
  • インストールエクスペリエンスはデフォルトのTerminal Installer (Speech Enabled)を使用
  • インストールタイプはCBL-Mariner Fullを選択
  • ディスクの暗号化は未使用(スキップ可能)
  • ユーザーの作成必要。パスワードは複雑なもの。
    • ユーザーはsudo可能。ウィザードでrootのパスワード設定箇所は無い。
  • インストールは1分未満で完了

インストール後

  • 作成したユーザーでログイン。sudo -sでrootになってpasswd実行。
  • IPアドレスDHCPで取得
  • sshサーバーはインストールされていない。パッケージの追加必要
  • dnfコマンドが使用可能

sshサーバーのインストール

dnf install openssh-server
systemctl enable sshd --now

rootログインはnoになっているのでユーザーでログイン

カーネルバージョン

root@cbl-mariner-Y2DQOH4OEORd [ ~ ]# uname -a
Linux cbl-mariner-Y2DQOH4OEORd 5.10.60.1-1.cm1 #1 SMP Wed Sep 1 13:48:54 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

使用ディスク容量

root@cbl-mariner-Y2DQOH4OEORd [ ~ ]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        921M     0  921M   0% /dev
tmpfs           929M     0  929M   0% /dev/shm
tmpfs           929M  676K  929M   1% /run
tmpfs           929M     0  929M   0% /sys/fs/cgroup
/dev/sda2        49G  1.6G   45G   4% /
tmpfs           929M     0  929M   0% /tmp
/dev/sda1       8.0M  2.3M  5.8M  29% /boot/efi
tmpfs           186M     0  186M   0% /run/user/0
tmpfs           186M     0  186M   0% /run/user/1000

Podman、Dockerのパッケージ確認

root@cbl-mariner-Y2DQOH4OEORd [ ~ ]# dnf search podman
Last metadata expiration check: 0:02:24 ago on Sun Sep 19 18:15:22 2021.
No matches found.
root@cbl-mariner-Y2DQOH4OEORd [ ~ ]# dnf search docker
Last metadata expiration check: 0:02:27 ago on Sun Sep 19 18:15:22 2021.
====================================================================================== Name & Summary Matched: docker ======================================================================================
ovn-docker.x86_64 : OVN drivers for docker
nvidia-docker2.noarch : nvidia-docker CLI wrapper
========================================================================================= Summary Matched: docker ==========================================================================================
moby-buildx.x86_64 : A Docker CLI plugin for extended build capabilities with BuildKit
root@cbl-mariner-Y2DQOH4OEORd [ ~ ]# dnf search moby
Last metadata expiration check: 0:02:35 ago on Sun Sep 19 18:15:22 2021.
======================================================================================= Name & Summary Matched: moby =======================================================================================
moby-cli-debuginfo.x86_64 : Debug information for package moby-cli
moby-runc-debuginfo.x86_64 : Debug information for package moby-runc
moby-buildx-debuginfo.x86_64 : Debug information for package moby-buildx
moby-engine-debuginfo.x86_64 : Debug information for package moby-engine
============================================================================================ Name Matched: moby ============================================================================================
moby-cli.x86_64 : The open-source application container engine client.
moby-runc.x86_64 : CLI tool for spawning and running containers per OCI spec.
moby-buildx.x86_64 : A Docker CLI plugin for extended build capabilities with BuildKit
moby-engine.x86_64 : The open-source application container engine
moby-containerd.x86_64 : Industry-standard container runtime

Dockerはmobyとしてインストール可能

mobyのバージョン

root@cbl-mariner-Y2DQOH4OEORd [ ~ ]# dnf info moby-engine
Last metadata expiration check: 0:18:55 ago on Sun Sep 19 18:21:58 2021.
Available Packages
Name         : moby-engine
Version      : 19.03.15+azure
Release      : 3.cm1
Architecture : x86_64
Size         : 23 M
Source       : moby-engine-19.03.15+azure-3.cm1.src.rpm
Repository   : mariner-official-update
Summary      : The open-source application container engine
URL          : https://mobyproject.org
License      : ASL 2.0
Description  : Moby is an open-source project created by Docker to enable and accelerate software containerization.

dnfの他にtdnfも使用可能(動作未確認)

root@cbl-mariner-Y2DQOH4OEORd [ ~ ]# tdnf --version
tdnf: 2.1.0

open-vm-toolsのインストール

open-vm-toolsはデフォルトで入っていないので、dnfでインストールする

root@cbl-mariner-Y2DQOH4OEORd [ ~ ]# dnf install open-vm-tools
root@cbl-mariner-Y2DQOH4OEORd [ ~ ]# systemctl enable vmtoolsd.service --now

スクリーンショット

インストールモードの選択
インストールモードの選択
ソフトウェアライセンスへの同意
ソフトウェアライセンスへの同意
インストールタイプの選択
インストールタイプの選択
ディスクの選択
ディスクの選択
ディスクの暗号化
ディスクの暗号化
ユーザーアカウントの作成
ユーザーアカウントの作成
インストールの確認
インストールの確認
インストールの進行中
インストールの進行中
インストール完了確認
インストール完了確認
インストール後、初期画面
インストール後、初期画面

Podman 3.4.0-RC1 リリース

Podman v3.4.0-RC1がリリース。 github.com

Podman machine/macOS関係で修正が多く入っているのでビルドしてテストしてみた。

macOS用Podman 3.4.0-RC1のビルドとインストール

macOSの環境

$ sw_vers
ProductName:    macOS
ProductVersion: 11.6
BuildVersion:   20G165
$ go version
go version go1.17 darwin/amd64

Podmanのビルド

$ wget https://github.com/containers/podman/archive/refs/tags/v3.4.0-rc1.tar.gz
$ tar xvzf v3.4.0-rc1.tar.gz
$ cd podman-3.4.0-rc1/
$ make podman-remote-darwin

brew版の停止とgvproxyのシンボリックリンク作成

$ brew unlink podman
$ ln -s /usr/local/Cellar/podman/3.3.1/bin/gvproxy /usr/local/bin/
$ cp bin/darwin/podman /usr/local/bin/

動作確認

Podman machineの起動

$ podman --version
podman version 3.4.0-rc1
$ podman machine init
Extracting compressed file
$ podman machine ls
NAME                    VM TYPE     CREATED             LAST UP
podman-machine-default  qemu        About a minute ago  About a minute ago
$ podman machine start
INFO[0000] waiting for clients...
INFO[0000] listening tcp://0.0.0.0:7777
INFO[0000] new connection from  to /var/folders/df/vy1htn753fd_w4420rltfg0w0000gn/T/podman/qemu_podman-machine-default.sock
Waiting for VM ...
Machine "podman-machine-default" started successfully
  • Podman machineの起動後、起動完了のメッセージが追加
$ podman version
Client:
Version:      3.4.0-rc1
API Version:  3.4.0-rc1
Go Version:   go1.17
Built:        Fri Sep 17 10:11:13 2021
OS/Arch:      darwin/amd64

Server:
Version:      3.3.1
API Version:  3.3.1
Go Version:   go1.16.6
Built:        Tue Aug 31 05:46:36 2021
OS/Arch:      linux/amd64
  • Fedora CoreOSのPodman はまだv3.3.1

ポートフォワードのテスト

nginxコンテナを起動

$ podman run --rm -d --name nginx -p 8080:80 nginx
Resolving "nginx" using unqualified-search registries (/etc/containers/registries.conf.d/999-podman-machine.conf)
Trying to pull docker.io/library/nginx:latest...
Getting image source signatures
Copying blob sha256:20ab512bbb071cf0ca402b08d84c317f21cb888e49d6ffca7f851f1db3438e5b
Copying blob sha256:a330b6cecb98cd2425fd25fce36669073f593b3176b4ee14731e48c05d678cdd
Copying blob sha256:e0ad2c0621bc497b97748af8ca5767c8e7528f6d3fe9118fdb4d5d11faf49171
Copying blob sha256:9e56c3e0e6b7d4a8cc1719050e6573d2da2703b9d20097a3522b890e0ecf9fb8
Copying blob sha256:09f31c94adc624db7764fc3b46eb26c110c49056e18573e8d81f8cf9afb5a947
Copying blob sha256:32b26e9cdb837f314a3de1e50ba33e841eff1638c93e244b57304caf91b0fd10
Copying blob sha256:e0ad2c0621bc497b97748af8ca5767c8e7528f6d3fe9118fdb4d5d11faf49171
Copying blob sha256:9e56c3e0e6b7d4a8cc1719050e6573d2da2703b9d20097a3522b890e0ecf9fb8
Copying blob sha256:a330b6cecb98cd2425fd25fce36669073f593b3176b4ee14731e48c05d678cdd
Copying blob sha256:20ab512bbb071cf0ca402b08d84c317f21cb888e49d6ffca7f851f1db3438e5b
Copying blob sha256:09f31c94adc624db7764fc3b46eb26c110c49056e18573e8d81f8cf9afb5a947
Copying blob sha256:32b26e9cdb837f314a3de1e50ba33e841eff1638c93e244b57304caf91b0fd10
Copying config sha256:ad4c705f24d392b982b2f0747704b1c5162e45674294d5640cca7076eba2865d
Writing manifest to image destination
Storing signatures
23f3f49d1566235b14ad48579cd536d3b1b73df8f7a00810c98d2c7942fee853

curlで接続

$ curl http://localhost:8080
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
  • v3.3.1ではCNIの指定が必要だったのが解消

Podman on Fedora on limaのアップデート

Podman v3.4.0-RC1のビルド

## on macOS
$ ssh -i ~/.lima/_config/user -o USER=$(whoami) -o StrictHostKeyChecking=no localhost -p 60024

## in the FedoraVM
$ curl -LO https://github.com/containers/podman/archive/refs/tags/v3.4.0-rc1.tar.gz
$ tar xvzf v3.4.0-rc1.tar.gz
$ cd podman-3.4.0-rc1/
$ make BUILDTAGS="selinux seccomp"
$ sudo make install PREFIX=/usr
$ systemctl --user daemon-reload
$ systemctl --user restart podman.socket
$ podman -r --url unix:/run/user/${UID}/podman/podman.sock version
Client:
Version:      3.4.0-rc1
API Version:  3.4.0-rc1
Go Version:   go1.16.6
Built:        Fri Sep 17 03:39:24 2021
OS/Arch:      linux/amd64

Server:
Version:      3.4.0-rc1
API Version:  3.4.0-rc1
Go Version:   go1.16.6
Built:        Fri Sep 17 03:39:24 2021
OS/Arch:      linux/amd64

動作確認

on macOS

$ podman system connection default lima
$ podman version
Client:
Version:      3.4.0-rc1
API Version:  3.4.0-rc1
Go Version:   go1.17
Built:        Fri Sep 17 10:11:13 2021
OS/Arch:      darwin/amd64

Server:
Version:      3.4.0-rc1
API Version:  3.4.0-rc1
Go Version:   go1.16.6
Built:        Fri Sep 17 12:39:24 2021
OS/Arch:      linux/amd64
  • macOSから VS CodeのRemote-ContainersでDevContainerへの接続もOK

【Quay.io】リポジトリのDescriptionを設定する際のTips

Quay.ioリポジトリ一覧の一行表示に使われるDescriptionの専用の設定箇所が無い。Quay.ioでは各リポジトリページのDescription(いわゆるREADME)とリポジトリ一覧の一行表示は共通のものとなっているため。

(参考)Docker Hubは個別に設定できる。

対処

一行表示に表示するにはDescription編集画面で「最初の部分に装飾無しで書く」必要がある。

Description編集画面
Description編集画面

リポジトリのDescription表示
リポジトリのDescription表示

リポジトリ一覧の一行表示
リポジトリ一覧の一行表示