Windows11 24H2でVirtualBoxを使用すると動作が遅くなる
概要
- Windows 11 24H2が2024年10月に配信されました。
- 先日Updateをしてみたのですが、VirtualBoxを利用しているとVMとホスト両方とも動作が遅くなり、まともに動かすことが出来なかったので、その時の対策です。
環境
- Windows 11 24H2
- VirtualBox 7.1.0
VirtualBox 7.1.4へのアップデート
- 結論ですがVirtualBoxを2024年12月時点で最新の
7.1.4へアップデートすることで改善されました。 - VirtualBox 7.1.4でWindows 11 24H2への互換対応がされたようです
さいごに
- 大型OSアップデートや新規OSリリースのタイミングでVirtualBoxも対応のためにアップデートしているようなので、その時に自分の環境も見直したほうがいいなと感じました
pyenvのインストールと利用方法について
概要
- pyenvは複数のPythonバージョンをプロジェクトよって切り替えて使用することができるツールです。
- 今回はpyenvのインストールと利用方法について記載します
環境
- RHEL9.4
- pyenv 2.4.10
pyenvのインストール
- GitHub - pyenv installationのドキュメントに従いインストール
curl https://pyenv.run | bash
- pyenvがインストールされていることを確認
pyenv --version
pyenvコマンドが実行できない場合はPATHが通ってない可能性があるのでGitHub - pyenv setup your shell environment for pyenvを参照し、PATHの設定を実施してください
pyenvの利用方法
利用可能なPythonバージョンの確認
pyenv install -lでインストール可能なバージョンの一覧を表示することができます
pyenv install -l
pyenv環境にPythonのインストール
- pyenvを利用してPythonをインストールするには下記コマンドを実行
pyenv install <バージョン>
pyenvでPythonバージョンの切り替え
- pyenvで利用するPythonバージョンを切り替える場合は下記のコマンドを実施します
globalはシステム全体で使うバージョンを変えたいときに利用localはプロジェクトごとで違うバージョンを変えたいときに利用
pyenv global <バージョン> pyenv local <バージョン>
- 切り替え後はPythonバージョンを確認してみてください
python --version
Perlで外部コマンドを実行する方法
概要
Table of Contents
環境
- Perl 5.30.0
system関数を使った方法
- Perlの組み込み関数であるsystemを使うことで、外部コマンドを実行することができます
- コマンドの引数もリストで渡すことで実行できます
#!/usr/bin/env perl use strict; use warnings; my $cmd_result = system('uname', '-r'); print $cmd_result . "\n";
- 実行結果
$ perl system.pl 6.5.0-1022-azure 0
- system関数によって実行された結果は標準出力に出力されます
- コマンドの出力をキャプチャする機能がなく、今回のように変数に格納した場合、戻り値が格納されます
- コマンドの出力をキャプチャしたい場合は、後述するバッククォートを使ったコマンド実行を利用してください
バッククォートを使った方法
- コマンドをバッククォート(``)で囲むことで実行することができます
#!/usr/bin/env perl use strict; use warnings; my $cmd_result = `uname -r`; print $cmd_result;
- 実行結果
$ perl backquote.pl 6.5.0-1022-azure
Windowsに対してAnsibleを実行してみる
概要
Table of Contents
環境
- OS
- Windows Server 2022
- Ansible
- 2.15.9
Windowsへの接続要件を確認する
- AnsibleでWindowsへ接続するにはAnsible Community Documentation - Setting up a Windows Hostに記載の要件を満たす必要があります
- Microsoft の現在のサポートと延長サポートの対象となる Windows バージョンを一般的に管理できる
- Windows ホストに PowerShell 5.1 以降と少なくとも .NET 4.0 をインストールする必要がある
- WinRM リスナーを作成してアクティブ化する必要があります。
サポート対象のWindowsバージョン確認
- 製品およびサービスのライフサイクル情報の検索で確認できます
PowerShellのバージョン確認
- PowerShellのバージョンはPowerShellで下記のコマンドを実行することで確認できます
- エラーが出る場合はWinRMサービスが起動していないことが想定されるため、
Windows Remote Managementを起動しているかご確認ください
- エラーが出る場合はWinRMサービスが起動していないことが想定されるため、
PS C:\Users\Administrator> winrm enumerate winrm/config/Listener
Listener
Address = *
Transport = HTTP
Port = 5985
Hostname
Enabled = true
URLPrefix = wsman
CertificateThumbprint
ListeningOn = 127.0.0.1, 192.168.48.138, ::1, fe80::902f:4d50:638f:38e%14
.Net Frameworkのバージョン確認
- .Net FrameworkのバージョンはPowerShellでコマンドを実行することで確認ができます。
- インストールされているバージョンによって実行するコマンドが違うため、Lern Microsoft - インストールされている .NET Framework バージョンを確認するを確認し対象のコマンドを実行してください
PS C:\Users\Administrator> $release = Get-ItemPropertyValue -LiteralPath 'HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -Name Release
PS C:\Users\Administrator> switch ($release) {
>> { $_ -ge 533320 } { $version = '4.8.1 or later'; break }
>> { $_ -ge 528040 } { $version = '4.8'; break }
>> { $_ -ge 461808 } { $version = '4.7.2'; break }
>> { $_ -ge 461308 } { $version = '4.7.1'; break }
>> { $_ -ge 460798 } { $version = '4.7'; break }
>> { $_ -ge 394802 } { $version = '4.6.2'; break }
>> { $_ -ge 394254 } { $version = '4.6.1'; break }
>> { $_ -ge 393295 } { $version = '4.6'; break }
>> { $_ -ge 379893 } { $version = '4.5.2'; break }
>> { $_ -ge 378675 } { $version = '4.5.1'; break }
>> { $_ -ge 378389 } { $version = '4.5'; break }
>> default { $version = $null; break }
>> }
PS C:\Users\Administrator>
PS C:\Users\Administrator> if ($version) {
>> Write-Host -Object ".NET Framework Version: $version"
>> } else {
>> Write-Host -Object '.NET Framework Version 4.5 or later is not detected.'
>> }
.NET Framework Version: 4.8
AnsibleでWindowsに接続
winrmモジュールのインストール
- Windowsへ接続するためにAnsibleサーバに
pywinrmモジュールが必要のためインストールします
pip install pywinrm
インベントリの準備
- Windowsに接続するための情報を記載したインベントリを作成
--- all: hosts: Win2022: ansible_host: 192.168.48.138 ansible_user: Administrator ansible_password: P@ssword ansible_connection: winrm ansible_port: 5985 ansible_winrm_transport: ntlm win10: ansible_host: 192.168.48.139 ansible_user: hii ansible_password: hii ansible_connection: winrm ansible_port: 5985 ansible_winrm_transport: ntlm
Playbookの準備
- Windowsへの接続を確認するためのPlaybookを作成
--- - name: Windows connection test hosts: all gather_facts: false tasks: - name: Ping win_ping:
Playbook実行
ansible-playbook -i inventory.yml main.yml PLAY [Windows connection test] *********************************************************************************************************************************************************************** TASK [Ping] ****************************************************************************************************************************************************************************************** ok: [Win2022] ok: [win10] PLAY RECAP ******************************************************************************************************************************************************************************************* Win2022 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 win10 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Windows 10へ実行した際のエラー
- Windows 10に対して実行した際に下記のエラーが出力されました
fatal: [win10]: UNREACHABLE! => {
"changed": false,
"msg": "ntlm: the specified credentials were rejected by the server",
"unreachable": true
}
結果としてWindows 10のネットワーク接続の種類がPublicになっているとNGらしく、Privateに変更することで解消できました


さいごに
- httpでの接続ですが無事接続することができました。
- httpsで接続する場合は証明書を準備したりと手間はかかりますがより安全に接続することができるので要件に合わせて実施してみてください
リンク
Windows11で日本語キーボードと英語キーボードの切り替え方
概要
- Windows11のキーボードレイアウトを日本語キーボードから英語キーボードに切り替える方法を記載します
- また、私自身HHKBを使っており全角/半角切り替えがデフォルト設定だと切り替えずらかったため、
Ctrl + Spaceでできる設定も記載します
環境
- Windows11
キーボードレイアウトの変更方法
- [設定]を開く
- [時刻と言語]-[言語と地域]を開く
- 言語欄にある[日本語]の右にある[…]をクリックし、[言語のオプション]をクリックする
- キーボード欄にある[レイアウトを変更する]をクリックする
- [日本語キーボード(106/109キー)]から[英語キーボード(101/102キー)]に変更する
- レイアウト変更後にPCを再起動することでレイアウトの変更は完了です
全角/半角切り替えをCtrl + Spaceで出来るように設定
Shell Scriptの実行時間を計る方法
概要
- Shell Script実行時に処理時間を計測したい場合の方法について記載します
環境
- OracleLinux 9.1
時間の計測が可能なコマンド
timeコマンド
- コマンドの実行時間を計測するためのコマンドです
time コマンド
計測する時間は下記の3種類となります。
- real コマンドの実行時間
- user ユーザCPU時間
- sys システムCPU時間
実際に
timeコマンドを利用してsleepコマンドを実行した結果
$ time sleep 3 real 0m3.002s user 0m0.001s sys 0m0.000s
dateコマンド
- 指定したフォーマットに応じた時間を表示するためのコマンドです
date オプション コマンド
- 実際に
dateコマンドを実行した結果
$ date "+%Y-%m-%d" 2024-07-18
Shell Scriptの実行時間を実際に計ってみる
- Shell Script全体の実行時間を計る場合は
dateコマンド - コマンド単体の実行時間を計る場合は
timeコマンドを利用
#!/bin/bash # 処理開始時間を取得 start_time=`date "+%S"` # 1個目の処理 echo 1個目の処理開始 time sleep 1 echo 1個目の処理終了 # 2個目の処理 echo 2個目の処理開始 time sleep 2 echo 2個目の処理終了 # 3個目の処理 echo 3個目の処理開始 time sleep 3 echo 3個目の処理終了 # 処理終了時間を取得 end_time=`date "+%S"` # スクリプトの実行時間を表示 total_time=$((end_time - start_time)) echo "実行時間: $total_time秒"
KubernetesにGrafanaをデプロイしてZabbixで取得したデータを可視化してみる
概要
- Kubernetes(k3s)にGrafanaをデプロイして、Zabbixで取得したデータを可視化してみたいと思います
環境
- RHEL 8.7
- Zabbix 5.4
- Grafana 11.1.0
Table of Contents
- 前提条件
- KubernetesにGrafanaをデプロイ
- Grafanaへアクセス
- GrafanaにZabbixのプラグインをインストール
- Grafanaにデータソースを追加&Dashboard作成
- 参考リンク
前提条件
- Kubernetes環境が用意されていること
KubernetesにGrafanaをデプロイ
- Kubernetes環境にGrafana用のnamespaceを作成する
kubectl create namespace grafana
- namespaceが作成されていることを確認
kubectl get namespace -A
grafana.ymlという名前のマニフェストファイルを作成する
touch grafana.yml
- kubernetes環境にデプロイ
kubectl apply -f grafana.yml --namespace=grafana
- 各オブジェクトのステータスを確認する
kubectl get pvc -n grafana -o wide kubectl get deployments -n grafana -o wide kubectl get svc -n grafana -o wide
Grafanaへアクセス
- Grafanaのステータスを確認
kubectl get all -n grafana
- Webブラウザで
http://<Server IP>:3000にアクセスしadminユーザーでログイン(パスワードもadminでした)- 初回ログイン後にパスワード変更を求められます

GrafanaにZabbixのプラグインをインストール
- Grafanaにログイン後、[Home] - [Administration] - [Plugins and data] - [Plugins]にアクセスし、
zabbixを検索しPluginをインストール- インストール後に[Enable]をクリックし有効化する

Grafanaにデータソースを追加&Dashboard作成
[Home] - [Dashboards]にアクセスし、
Create dashboardをクリック
[New dashboard]画面で
Add visualizationを選択し、[Select data source]画面でConfigure a new data sourceをクリック
[Add data source]画面から
Zabbixをクリックする- Zabbixの情報入力画面が表示されるため、情報を入力後に
Save & testをクリック- ConnectionのURLは
http://<Zabbix Server IP>:<port>/api_jsonrpc.phpで接続できました
- ConnectionのURLは
前述の項番1、2と同様の手順を行い、[Select data source]画面で追加したZabbixのデータソースをクリック

ここまできたら好きなように好きなようにPanelを作ってDashboardを作るだけです
- とりあえずCPUとMemoryのグラフを作成
