VESAクイックリリース追加購入

エルゴトロンのクイックリリースを追加購入した。

ものはこれ→エルゴトロン クイックリリース ブラケット 15.9kgまで対応 60-589-060

内容物とか

クイックリリースのパーツ。

モニター側プレート

アーム側プレート

ねじ類

あと、モニター側プレートにいれるワッシャー

M3×6×0.25のワッシャー

シム取付

モニター側プレートのねじを外して、ワッシャーをはさむ

ワッシャー取り付け中

微妙に隙間ができた感じがする。

ワッシャー取り付け後

右側もワッシャーを取り付けておく。

アームにプレート取り付け

クイックリリース付属のねじ(M4×6mm)で取り付け。ねじの先端がモニタ側にちょっと出るが、モニタ側プレートには当たらない。

アーム側プレート取り付け完了

モニター側プレート取り付け

モニター側にもプレートを取り付けるが、今回利用するモニターのVESAマウントはくぼんでいる。

モニターのVESAマウント

そのままプレートを取り付けると、くぼみにはまってしまってクイックリリース用のレバーを押せない(のでモニターを外せない)。

そこで、付属のスペーサーを使ってプレートを取り付ける。スペーサーを入れる都合上、ねじはM4×25mm(これも付属品)を利用する。

VESAマウントからねじ取り外し

スペーサーを使ってプレート取り付け

モニターをアームに取り付け

クイックリリースを取り付けたので、モニターをアームに取り付ける。

アームのリフト強度が弱くてモニターを取り付けると下に降りてくるので、リフトきょどを高める(モニターを取り付けてなかったので、リフト強度を弱めていた)。

水準器で水平・垂直を調整しておしまい

モニター取り付け完了

SDカードリーダーの性能を確認してみる

超高速SDカードの性能を100%引き出せるカードリーダー「SanDisk Professional PRO-READER SD and microSD」の性能をノートPC内蔵カードリーダーと比べてみた - GIGAZINEを読んで、手元にあるSDカードリーダーの性能を確認してみることにする。

確認環境は以下。

PCには同じUSBハブ(サンワサプライ 400-HUB061, USB3.1 Gen2 )経由で接続した。

Ugreen

ProGrade Digital

Python開発環境整備(Windows 10)

いまさらながら、Windows 10でPython開発環境の整備をしたので、メモを残しておく。WSLとかはなしで。

Pythonインストール

Python公式サイトのPython Releases for Windows | Python.orgから、「Windows Installer (64-bit)」をダウンロード。バージョンは3.10.4だった。

ダウンロードしたインストーラーを起動する。

Python 3.10.4 Installer

「Add Python 3.10 to PATH」にチェックを入れた後、「Install Now」をクリックする。

インストールが完了すると、「Setup was successful」と表示される。

「Disable path length limit」をクリックするかどうかはおまかせ。今回はしない。

コマンドプロンプトを起動し、py もしくは pythonと入力し、Pythonが対話モードで起動することを確認する。exit() もしくは Ctrl-z + returnで終了しておく。

Visual Studio Code (VSCode)のインストール

今回はVSCodeを使いますよ、ということになっているので、VSCodeもインストールする。

Visual Studio Code - Code Editing. Redefinedからインストーラーをダウンロードして実行する(1.67.1だった)。設定はすべてデフォルトのまま。

インストール完了後、VSCodeを起動する。表示言語を日本語にするため、言語パックをインストールする。

Python extension for Visual Studio Codeをインストールする。

flake8使うよってことなので、コマンドプロンプトから pip install flake8を実行しておく。

VSCodeにflake8の設定投入。Ctrl-Shift-pでコマンドパレットを開き、「settings」と入力。一覧から「基本設定: 設定(JSON)を開く」を選択する

flake8の設定をいれる

以下は、コピペ用。

     //flake8 config
     "python.linting.pylintEnabled": false,
     "python.linting.flake8Enabled": true,
     "files.autoSave": "afterDelay",
     "files.autoSaveDelay": 1000,
     "python.linting.lintOnSave": true,
     "python.linting.flake8Args": [
         "--ignore=W293, W504",
     ],
     "python.linting.flake8Args": [
         "--max-line-length=80",
     ],
     "python.linting.flake8Args": [
         "--max-complexity=20"

pylintは無効化しておく。

Oracle Linux 8について

Oracle Linux 8 (主に8.5)についてのまとめ。

(個人的な)Oracle Linxuのメリット

 

Kernel

Unbreakable Enterprise Kernel (UEK)とRed Hat Compatible Kernel (RHCK)の2つが同梱されている。デフォルトはUEK。

UEKとRHCKはBase Kernel versionが異なるが、ユーザ空間で動作するアプリケーションについてはABI(Application Binary Interface)互換性がある。そのため、一般的なアプリケーションの動作にはほとんど影響しない。Unbreakable Enterprise Kernel Release Notes for Unbreakable Enterprise Kernel Release 6 Update 3 - Chapter 1 New Features and Changesの「1.3 Comaptibility」に記載あり。

UKE/RHCKを切り替える

ディストリビューションとバージョンは /etc/oracle-release で確認できる。

現在のKernelは uname -r を実行すると確認できる。

また、UEK/RHCKがインストールされていることもわかる。

注意事項として、/etc/sysconfig/kernel 内に default kernel package typeを指定するところがあるので、切り替えた場合はこちらも変更すること(update時はここで指定したほうがdefault kernelになる)。

切り替えは grubbyを使うのがわかりやすい

リリースとkernelの情報

CentOS 8からOracle Linux 8への移行

CentOS Oracle Linux 移行」で検索すればよいです

リポジトリ

Oracle Linuxには専用のEPELリポジトリがある。

yum repolist all | grep -i epel で出てくればEPELリポジトリはインストール済み。

Oracle Linux 8用のEPELリポジトリは ol8_developer_EPEL。

ない場合は、oracle-epel-release-el8をインストールする。

VESAクイックリリースの比較

自宅では、モニターアームを利用している。これまではエルゴトロンのLX デュアルスタキングアーム, 長身ポール (アルミニウム) 45-549-026にモニターを2つ、縦置きで取り付けていたのだが、ちょっと取付位置を少し高くしたくなった。あと、ポール1本につきモニター(とアーム)を1つにしたくなった。

高さを変えたくなったのは、モニターを交換して机上面からモニターまでのスペースがせまくなったため。ポールとモニターを1:1にしたくなったのは、常に2つのモニターとアームを調整するのが面倒(ばらしたくなった)のと、ポールの上のほうにアームを取り付けるので、机への荷重が気になったため。

調整時にモニターをアームごと取り外すのは面倒なので、アームはそのまま、モニターだけ取り外せないかと調べたところ、

があった。

使ってみないとわからないので、両方とも1つずつ購入して比較してみることにする。

内容確認と単体での取り付け・取り外し

エルゴトロン

内容物

  • 説明書
  • アーム側プレート。四角いほう
  • モニター側プレート。X字のほう
  • M4×6mm 4本
  • M4×10mm 4本
  • M4×25mm 4本
  • M4スペーサー×15mm 4本

ロック

  • 下側はアーム側側プレート下部がL字になっていて、引っかかるようになっている
  • 上側はアーム側プレート上部のタブにモニター側プレートのレバー(プラスチック製)でロックされる。取り付けた時点ではロックされないので、明示的にレバーを倒してロックする必要がある

はまり具合

  • プレート単体だと、ロックしなくてもはめたら外れない。軽く振っても問題なし
  • ちょっと力を入れないと外れない。amazon.co.jpのレビューにある通り。ワッシャーを挟んでどうなるか試す予定

テザーツールズ

内容物

  • 説明書
  • アーム側プレート。四角い
  • モニター側プレート。X字
  • M4 ×12mm 8本
  • M4 ×30mm 4本
  • M4スペーサー×15mm 4本

ロック

  • 両プレートのはめあいが上すぼまりになっているので、あるところで止まる
  • モニター側プレートの穴にアーム側プレートレバーについたフックが引っかかるようになっていて、上方向には数mmだけ動く

はまり具合

  • プレート単体だと、若干の遊びあり。モニターをつけると、重みでかっちりはまるかも
  • モニター側プレートのレバーを押すとフックが外れるので、プレートは軽く抜ける

調整

クイックリリースブラケットでモニターとアームの着脱をスムーズにする - ビルドンブングでシムを入れて調整している。

今回は、https://www.amazon.co.jp/gp/product/B0848PZ2S4/ を購入した(2023-01-15現在、在庫切れ)。

今なら、TOP LINE 高分子ポリマーシム M3.0用 厚さ0.25mm 10個入り TP-55025

になると思う。

Let's EncryptによるSSLサーバ証明書の導入準備

一応httpd動いているので、Let's Encryptを利用してSSLサーバ証明書をいれる準備をしてみる。

OSはOracle Linux 8.2

Certbot導入

CertbotというACMEクライアントを使うのがおすすめです。」とのこと。

CentOS/RHEL8 -  Apacheでの導入手順書を参考にしつつ。

EPELの有効化

ol8_developer_EPELが有効かどうかを確認する

$ env LANG=C sudo dnf repolist all
repo id                                repo name                                                                                    status
ol8_UEKR6                              Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64)                   enabled
ol8_UEKR6_RDMA                         Oracle Linux 8 UEK6 RDMA (x86_64)                                                            disabled
ol8_addons                             Oracle Linux 8 Addons (x86_64)                                                               disabled
ol8_appstream                          Oracle Linux 8 Application Stream (x86_64)                                                   enabled
ol8_baseos_latest                      Oracle Linux 8 BaseOS Latest (x86_64)                                                        enabled
ol8_codeready_builder                  Oracle Linux 8 CodeReady Builder (x86_64) - Unsupported                                      enabled
ol8_kvm_appstream                      Oracle Linux 8 KVM Application Stream (x86_64)                                               disabled
ol8_u0_baseos_base                     Oracle Linux 8 BaseOS GA (x86_64)                                                            disabled
ol8_u1_baseos_base                     Oracle Linux 8.1 BaseOS (x86_64)                                                             disabled
ol8_u2_baseos_base                     Oracle Linux 8.2 BaseOS (x86_64)                                                             disabled
$

そもそも存在してないので、まずはリポジトリのインストール

sudo dnf install oracle-epel-release-el8

再度確認

$ env LANG=C sudo dnf repolist all
repo id                                repo name                                                                                    status
ol8_UEKR6                              Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64)                   enabled
ol8_UEKR6_RDMA                         Oracle Linux 8 UEK6 RDMA (x86_64)                                                            disabled
ol8_addons                             Oracle Linux 8 Addons (x86_64)                                                               disabled
ol8_appstream                          Oracle Linux 8 Application Stream (x86_64)                                                   enabled
ol8_baseos_latest                      Oracle Linux 8 BaseOS Latest (x86_64)                                                        enabled
ol8_codeready_builder                  Oracle Linux 8 CodeReady Builder (x86_64) - Unsupported                                      enabled
ol8_developer_EPEL                     Oracle Linux 8 EPEL Packages for Development (x86_64)                                        enabled
ol8_kvm_appstream                      Oracle Linux 8 KVM Application Stream (x86_64)                                               disabled
ol8_u0_baseos_base                     Oracle Linux 8 BaseOS GA (x86_64)                                                            disabled
ol8_u1_baseos_base                     Oracle Linux 8.1 BaseOS (x86_64)                                                             disabled
ol8_u2_baseos_base                     Oracle Linux 8.2 BaseOS (x86_64)                                                             disabled
$

snapdインストール

続いて、dnf install snapdでsnapdをインストール。

インストール後、snapdを最新にする

$ sudo snap install core
Setup snap "core" (11420) security profiles                                                                                                -
2021-08-09T13:16:49+09:00 INFO Waiting for automatic snapd restart...
core 16-2.51.3 from Canonical? installed
$ sudo snap refresh core
snap "core" has no updates available
$

Certbotインストール

snapコマンドでCertbotをインストールする

 sudo snap install --classic certbot
certbot 1.18.0 from Certbot Project (certbot-eff?) installed
$ sudo snap list
Name     Version    Rev    Tracking       Publisher     Notes
certbot  1.18.0     1343   latest/stable  certbot-eff?  classic
core     16-2.51.3  11420  latest/stable  canonical?    core
core20   20210702   1081   latest/stable  canonical?    base
$ ls -la /snap/bin/certbot
lrwxrwxrwx. 1 root root 13  8月  9 13:21 /snap/bin/certbot -> /usr/bin/snap
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
$ ls -la /snap/bin/certbot /usr/bin/certbot
lrwxrwxrwx. 1 root root 13  8月  9 13:21 /snap/bin/certbot -> /usr/bin/snap
lrwxrwxrwx. 1 root root 17  8月  9 13:22 /usr/bin/certbot -> /snap/bin/certbot
$

ほい

SSLサーバー証明書インストール

事前に、証明書をインストールするホストにhttp/httpsでアクセスできることを確認しておく。

certbot --apacheを実行することで、証明書の取得・conf追加・reloadまでやってくれる。

SSLサーバー証明書の自動更新

Snap版だと、自動更新機能もインストールされる模様

# /bin/systemctl list-timers
NEXT                         LEFT       LAST                         PASSED       UNIT                         ACTIVATES
Tue 2021-08-10 13:29:15 JST  23min left Tue 2021-08-10 12:29:14 JST  36min ago    dnf-makecache.timer          dnf-makecache.service
Tue 2021-08-10 20:24:00 JST  7h left    Tue 2021-08-10 10:21:05 JST  2h 44min ago snap.certbot.renew.timer     snap.certbot.renew.service
Wed 2021-08-11 00:00:00 JST  10h left   Tue 2021-08-10 00:00:09 JST  13h ago      unbound-anchor.timer         unbound-anchor.service
Wed 2021-08-11 12:59:20 JST  23h left   Tue 2021-08-10 12:59:20 JST  6min ago     systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.servi>

4 timers listed.
Pass --all to see loaded but inactive timers, too.
#

unitfileを確認してみる

# cat /etc/systemd/system/snap.certbot.renew.timer
[Unit]
# Auto-generated, DO NOT EDIT
Description=Timer renew for snap application certbot.renew
Requires=var-lib-snapd-snap-certbot-1343.mount
After=var-lib-snapd-snap-certbot-1343.mount
X-Snappy=yes

[Timer]
Unit=snap.certbot.renew.service
OnCalendar=*-*-* 10:21
OnCalendar=*-*-* 20:24

[Install]
WantedBy=timers.target
#
# cat /etc/systemd/system/snap.certbot.renew.service
[Unit]
# Auto-generated, DO NOT EDIT
Description=Service for snap application certbot.renew
Requires=var-lib-snapd-snap-certbot-1343.mount
Wants=network.target
After=var-lib-snapd-snap-certbot-1343.mount network.target snapd.apparmor.service
X-Snappy=yes

[Service]
EnvironmentFile=-/etc/environment
ExecStart=/usr/bin/snap run --timer="00:00~24:00/2" certbot.renew
SyslogIdentifier=certbot.renew
Restart=no
WorkingDirectory=/var/snap/certbot/1343
TimeoutStopSec=30
Type=oneshot
#

ただし、証明書更新後のhttpd再起動は実施されないので、個別に設定しておく必要がある。/etc/letsencrypt/renewal-hooks/post/以下にスクリプトを置けばよい。

# cat /etc/letsencrypt/renewal-hooks/post/restart_httpd.sh
#!/bin/sh

/bin/systemctl restart httpd
#

これで毎日 10:21と20:24にSSLサーバ証明書の更新を試み、更新されたらhttpdが再起動されるはず。

vCenter 7.0 Update 2でのメールサーバ設定とsendmail.cf

これの続き。 

vCenterをアップデートしたら、アラートメール送信に失敗するようになった - しろぺん

上記記事で、vCenter 6.7 Update 3gからvCenter 6.7 Update 3jにアップデートしたとき、vCenterが生成するsendmail.cf (の元となるm4マクロ)について調べた。

この時点では、

  • vCenterでメールサーバを設定すると、変数 ${SMTP_RELAY_SERVER} にセットされる
  • メールサーバ設定を保存すると、/usr/lib/vmware-vpx/config_sendmail.sh が実行される
  • 上記スクリプトは、変数${SMTP_RELAY_SERVER} が空でない場合は以下を出力する
    define(\`RELAY_MAILER_ARGS', \`TCP \$h $SMTP_RELAY_PORT')dnl
    define(\`ESMTP_MAILER_ARGS', \`TCP \$h $SMTP_RELAY_PORT')dnl

となっていた。

処理部分は以下。

generate_sendmail_mc() {
    echo "######################################################################"
    echo "# /etc/mail/sendmail.cf"
    echo "#"
    echo "# Generated by $0 on $(date +'%Y/%m/%d %H:%M:%S')"
    echo "# generator script VERSION=$VERSION"
    echo "######################################################################"
    echo "divert(-1)"
    echo "include(\`/etc/mail/m4/cf.m4')"
    echo "divert(0)dnl"
    echo "VERSIONID(\`@(#)Setup for Generic Linux')dnl"
    echo "OSTYPE(\`linux')dnl"
    echo "define(\`confPRIVACY_FLAGS', \`noexpn,novrfy')dnl"

    if test -n "$SMTP_RELAY_SERVER" ; then
        echo "define(\`SMART_HOST', \`$SMTP_RELAY_SERVER')dnl"
        echo "undefine(\`confHOST_STATUS_DIRECTORY')dnl"
    fi
    if test -n "$SMTP_RELAY_PORT" ; then
        echo "define(\`RELAY_MAILER_ARGS', \`TCP \$h $SMTP_RELAY_PORT')dnl"
        echo "define(\`ESMTP_MAILER_ARGS', \`TCP \$h $SMTP_RELAY_PORT')dnl"
    fi

    # certs for STARTTLS
    (以下略)

このため、メールサーバをIPアドレスで指定する場合は、[]でくくって指定(192.168.0.1なら、[192.168.0.1])する必要があった。

今回、別システムで vCenter 7.0 Update 2 にアップデートしたところ、ここの処理が変更されていた。

generate_sendmail_mc() {
    echo "######################################################################"
    echo "# /etc/mail/sendmail.cf"
    echo "#"
    echo "# Generated by $0 on $(date +'%Y/%m/%d %H:%M:%S')"
    echo "# generator script VERSION=$VERSION"
    echo "######################################################################"
    echo "divert(-1)"
    echo "include(\`/etc/mail/m4/cf.m4')"
    echo "divert(0)dnl"
    echo "VERSIONID(\`@(#)Setup for Generic Linux')dnl"
    echo "OSTYPE(\`linux')dnl"
    echo "define(\`confPRIVACY_FLAGS', \`noexpn,novrfy')dnl"

    if test -n "$SMTP_RELAY_SERVER" ; then
        if [[ "$SMTP_RELAY_SERVER" == *[[:alpha:]]* ]] || \
           ([[ "$SMTP_RELAY_SERVER" == *[[:digit:]]* ]] && [[ "$SMTP_RELAY_SERVER" == *[[:alpha:]]* ]])
        then
            echo "define(\`SMART_HOST', \`$SMTP_RELAY_SERVER')dnl"
        else
            echo "define(\`SMART_HOST', \`[$SMTP_RELAY_SERVER]')dnl"
        fi
        echo "undefine(\`confHOST_STATUS_DIRECTORY')dnl"
    fi

    if test -n "$SMTP_RELAY_PORT" ; then
        echo "define(\`RELAY_MAILER_ARGS', \`TCP \$h $SMTP_RELAY_PORT')dnl"
        echo "define(\`ESMTP_MAILER_ARGS', \`TCP \$h $SMTP_RELAY_PORT')dnl"
    fi

    # certs for STARTTLS
    (以下略)

指定されたメールサーバを[ ]でくくる必要があるかどうかを判別するようになっている。

このため、メールアドレスをIPアドレス指定する場合に[]でくくる必要がなくなった。