色々システム障害
あらあら。 Microsoftの方はTeamsで会議に入れなくなった...みたいな話は出てた。
東証CIOの人の株は上がった、というコメントをみて笑ってしまったww
オレのAWS3号機 Ubuntu 1804 LTS → 2004 LTS 実行後の調整
sudo do-release-update した後の調整。
dnsmasqがlxdを使うようになってたようで、色々調整しないと動かない模様。 今は使っていないので、消去しておく。
sudo systemctl stop dnsmasq sudo systemctl disable dnsmasq sudo apt remove dnsmasq
Ubuntu 2004 LTSの場合、/etc/ssh/sshd_configには以下の設定は最初から入っていた。
TCPKeepAlive yes ClientAliveInterval 30 ClientAliveCountMax 60
tag: vagrant, hyperv
現在、徐々にHyper-Vを使うように環境を設定中。
現在Hyper-Vが有効かどうかによって、環境変数 VAGRANT_DEFAULT_PROVIDER を設定する PowerShell は以下。
# vagrant provider指定 (hyperv or virtualbox)
# 現在Hyper-Vが有効かどうかにしたがって環境変数VAGRANT_DEFAULT_PROVIDERを設定する
$RESULT = bcdedit /enum | Select-String "hypervisorlaunchtype"
if ( Write-Output $RESULT | Select-String "Auto" ) {
# echo "Hyper-V is ON"
$env:VAGRANT_DEFAULT_PROVIDER="hyperv"
}
if ( Write-Output $RESULT | Select-String "Off" ) {
# echo "Hyper-V is OFF"
$env:VAGRANT_DEFAULT_PROVIDER="virtualbox"
}
強制的に切り替えているので、万能ではないけども。
今の所、ウチの Windows 10 Pro 2004 , vagrant 2.2.10 , virtualbox 6.1.14 の環境 では、 Hyper-VをONにして、 freebsd/FreeBSD-12.1-RELEASE (virtualbox, 2019.11.01) という boxイメージを使って起動すると、 マジで起動する(!!!)ものの、scpでWindowsから150MBをコピーしようとすると時々失敗する。 (scpでLost Connectionエラーが出たり、scpは成功してもtar.gzのチェックサムがあわなかったりする) (virtualboxのboxイメージでもHyper-V環境で動いてるあたり、謎テクノロジー満載で凄いんだけどwwちと惜しい)
generic/freebsd12 (hyperv, 3.0.32)というboxイメージを使うと、scpでWindowsから150MBをコピーは成功するので、 とりあえずこっちに移住する計画。
ちなみに、generic/freebsd12のboxイメージの提供元はこちら。
hyperv版がきっちり用意されていたり、色々なOSのboxイメージを用意していたり、いったい何者なんだ...。
コマンドから管理者権限でWindows Terminal を起動する
tag: windows10, windows-terminal, powershell
# 管理者権限でWindows Terminalを起動
powershell start-process wt -verb runas
# カレントディレクトリを引き渡すなら以下。
powershell start-process wt -ArgumentList "--startingDirectory","$PWD" -verb runas
# 関数パラメータをコマンドラインパラメータとして渡すなら以下。
function f-sudo-windows-terminal {
if ( $args.Length -eq 0 ) {
powershell start-process wt -ArgumentList "--startingDirectory","$PWD" -verb runas
} else {
# カンマ区切りの引数を生成する
$cmd_args = ""
foreach ( $j in $args ) {
if ( $cmd_args.length -ne 0 ) {
$cmd_args += ","
}
$cmd_args += "$j"
}
powershell start-process wt -ArgumentList "--startingDirectory","$PWD","$cmd_args" -verb runas
}
}
Start-Processコマンドレットの -ArgumentList は、スペースを含めずにカンマ区切りで記載する。
Windows10 (20.04) Hyper-V 環境でVagrantを使う(FreeBSD)
tag: hyperv, vagrant, freebsd
今までvagrant boxを使っていたのでHyper-Vはオフにしていたが、 WSL2がHyper-V前提なので、vagrant boxをHyper-V環境で使う方法をチェック。
■環境情報
■vagrant on Hyper-Vメモ
■Vagrantfileの作成
generic/freebsd12 boxイメージの場合、最大メモリが2048に設定されているので、それより増やす場合はmaxmemoryもセットする。
Vagrant.configure("2") do |config|
config.vm.box = "generic/freebsd12"
config.vm.synced_folder ".", "/vagrant", type: "rsync", rsync__exclude: [ ".git/" ]
# master1 node
config.vm.define "freebsd61" do |master1|
master1.vm.hostname = "freebsd61"
master1.vm.provider "hyperv" do |h|
h.enable_virtualization_extensions = true
h.maxmemory = 4096
h.memory = 4096
h.cpus = "2"
end
# PROXY設定を環境変数PROXY_SERV_PORT,PROXY_USER,PROXY_PASSから読み込んでVM側に持ち込む
# https://qiita.com/hakomikan/items/860bb960699889849933 Vagrantfile をコミットするために - Qiita
master1.vm.provision "export env",
type: "shell",
run: "always",
privileged: true,
inline: <<-SHELL
mkdir -p /etc/profile.d
echo "# vagrant script for every boot" > /etc/profile.d/vagrant.sh
echo export PROXY_SERV_PORT=#{ENV['PROXY_SERV_PORT']} >> /etc/profile.d/vagrant.sh
echo export PROXY_USER=#{ENV['PROXY_USER']} >> /etc/profile.d/vagrant.sh
echo export PROXY_PASS=#{ENV['PROXY_PASS']} >> /etc/profile.d/vagrant.sh
echo export PROXY_SKIP=#{ENV['PROXY_SKIP']} >> /etc/profile.d/vagrant.sh
echo export http_proxy=#{ENV['http_proxy']} >> /etc/profile.d/vagrant.sh
echo export https_proxy=#{ENV['https_proxy']} >> /etc/profile.d/vagrant.sh
echo export no_proxy=#{ENV['no_proxy']} >> /etc/profile.d/vagrant.sh
echo export FROM_ORESRV=#{ENV['FROM_ORESRV']} >> /etc/profile.d/vagrant.sh
echo export FROM_OREAWS=#{ENV['FROM_OREAWS']} >> /etc/profile.d/vagrant.sh
chmod +x /etc/profile.d/vagrant.sh
SHELL
# shell provisioner
master1.vm.provision "shell", path: "setupscripts.sh"
end
end
■setupscripts.shの作成
Default Switchを使う場合、IPアドレスは起動毎にランダムになる。
「ifconfig hn0 inet 192.168.54.59/24 alias」として、VM内部用に固定IPをaliasでつけてあげる。
#!/bin/sh
set -e
f_log() {
echo "■ $(date) $@"
}
f_log "環境変数読み込み"
if [ -r /etc/profile.d/vagrant.sh ]; then
. /etc/profile.d/vagrant.sh
fi
# IPアドレスのaliasを追加。
f_log "IPアドレスのaliasを追加"
ifconfig hn0 inet 192.168.54.59/24 alias
f_log "pkg アップデート"
pkg update
f_log "pkg アップグレード"
pkg upgrade -y
f_log "bashインストール"
pkg install -y bash
f_log "ansibleインストール ansible-playbook-2.7"
pkg install -y py27-ansible
■仮想マシン作成
管理者権限を持つ powershell とか MSYS2 bash を起動。
export VAGRANT_DEFAULT_PROVIDER=hyperv export VAGRANT_LOG=debug vagrant up --provider=hyperv
起動中にIPアドレスが表示される。
■接続
# ssh接続 vagrant ssh
ssh接続後、/etc/rc.conf内部に「ifconfig_hn0_alias0="inet 192.168.54.59 netmask 0xffffff00"」と書いて、再起動後も固定IPをaliasでつけてあげるのが良い。
■毎回IPアドレスが変動する対策
とりあえずの対策だが、「vagrant ssh-config」するとssh接続用の設定が表示されるので、 ~/.ssh/config に投入。
Windowsのhostsファイル (/windows/system32/drivers/etc/hosts) も毎回書き換え。
本当は自分でgeneric/freebsd12専用の仮想スイッチを手作りして、VMのIPアドレスを固定するのが良いのかも。
ひとまず Hyper-V ON 環境で FreeBSD 環境ができた。
p.s.
ウチの環境だと、scpコピーで4MB/secしか出ないのが悲しい。エラーは起きないけど。
Windows10 (20.04) Hyper-V 環境でVagrantを使う(Debian10)
tag: debian10, hyperv, vagrant
debian10 buster の場合でもHyper-Vの仮想スイッチ(Default Switch)を使う場合はネットワークアドレスとIPアドレスはランダム付与になる。
内部でサーバを起動する場合は固定IPアドレスがあった方が便利なので、同じNICに複数のIPアドレスを付与する。
もちろん、VMの外(Windows側)からここで適当に付与した固定IPアドレスにはアクセスできないのだが...。
結局、真面目に使うならDefault Switchじゃなくて自作の仮想スイッチを作成するしか無いらしい。
ここではDefault Switchを使う簡易的な方法が書いてある。
■NICに複数のIPアドレスを追加する方法
Debian10の場合は以下。
# コマンド ip address add 192.168.54.81/24 dev eth0
OS起動時に自動設定する場合は、/etc/network/interfaces に追記しておく。
元々のinterfacesの内容に、改行ひとつ加えてから書くのが重要。 詳しくは man interfaces と man ifup 参照。
iface eth0 inet static
address 192.168.54.81/24
■Vagrantfile
Debian10用もあまり変わらない。
Vagrant.configure("2") do |config|
config.vm.box = "generic/debian10"
config.vm.synced_folder ".", "/vagrant", type: "rsync", rsync__exclude: [ ".git/" ]
# master1 node
config.vm.define "debian81" do |master1|
master1.vm.hostname = "debian81.hyperv.local"
master1.vm.provider "hyperv" do |h|
h.enable_virtualization_extensions = true
h.maxmemory = 4096
h.memory = 4096
h.cpus = "2"
end
# PROXY設定を環境変数PROXY_SERV_PORT,PROXY_USER,PROXY_PASSから読み込んでVM側に持ち込む
# https://qiita.com/hakomikan/items/860bb960699889849933 Vagrantfile をコミットするために - Qiita
master1.vm.provision "export env",
type: "shell",
run: "always",
privileged: true,
inline: <<-SHELL
mkdir -p /etc/profile.d
echo "# vagrant script for every boot" > /etc/profile.d/vagrant.sh
echo export VBOX_HOST_NAME=debian81 >> /etc/profile.d/vagrant.sh
echo export VBOX_FIXED_IP_ADDR=192.168.54.81 >> /etc/profile.d/vagrant.sh
echo export PROXY_SERV_PORT=#{ENV['PROXY_SERV_PORT']} >> /etc/profile.d/vagrant.sh
echo "export ADDITIONAL_ETC_HOSTS_1=\\"#{ENV['ADDITIONAL_ETC_HOSTS_1']}\\"" >> /etc/profile.d/vagrant.sh
echo "export ADDITIONAL_ETC_HOSTS_2=\\"#{ENV['ADDITIONAL_ETC_HOSTS_2']}\\"" >> /etc/profile.d/vagrant.sh
echo "export ADDITIONAL_ETC_HOSTS_3=\\"#{ENV['ADDITIONAL_ETC_HOSTS_3']}\\"" >> /etc/profile.d/vagrant.sh
chmod +x /etc/profile.d/vagrant.sh
SHELL
# shell provisioner インストールなど初期化処理を行う
master1.vm.provision "shell", path: "setupscripts-1-base.sh"
end
end
■setupscripts-1-base.sh
セットアップ用スクリプトの一部。
#!/bin/bash
set -e
if [ -r /etc/profile.d/vagrant.sh ]; then
source /etc/profile.d/vagrant.sh
fi
# 内部サーバ用IPアドレス2個目aliasを設定(コマンド)
ip address add ${VBOX_FIXED_IP_ADDR}/24 dev eth0
# /etc/network/interfaces に IPアドレスのaliasを追記
# https://wiki.debian.org/NetworkConfiguration
cat >> /etc/network/interfaces << EOF
iface eth0 inet static
address ${VBOX_FIXED_IP_ADDR}/24
EOF
# /etc/hosts設定
f_log "/etc/hosts設定"
cat /etc/hosts | grep -v ${VBOX_HOST_NAME} > /etc/hosts.2
mv /etc/hosts.2 /etc/hosts
echo "${VBOX_FIXED_IP_ADDR} ${VBOX_HOST_NAME}.hyperv.local ${VBOX_HOST_NAME}" >> /etc/hosts
ここから先はFreeBSDの場合と同じで、vagrant up した後、vagrant ssh-config の結果から、/Windows/System32/drivers/etc/host にホスト名を登録して、 ~/.ssh/config に接続情報を記載する。
Windows 10 2004 WSL2 インストール
tag: wsl2, windows10
■ WSL2 インストール 管理者権限のPowerShellから実施。
# Windows Subsubsystem for Linux を有効化する dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart # 仮想マシンプラットフォームのオプションコンポーネントを有効化する dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart # WSL の既定(デフォルト)のバージョンを 2 に設定する wsl --set-default-version 2 # マイクロソフト・ストアを開く start ms-windows-store: # マイクロソフト・ストアから ubuntu 20.04 LTS をインストール # WSLのバージョン表示 wsl -l -v
以下は古いのが有効になっている場合の表示例
PS C:\Users\george> wsl -l -v NAME STATE VERSION * Ubuntu-18.04 Stopped 1 Ubuntu-20.04 Running 2 PS C:\Users\george>
# wsl2 Ubuntu-20.04 の方をデフォルトにする wsl --set-default Ubuntu-20.04 wsl -l -v
# Ubuntu側のコマンドの起動 wsl ip a # wslの起動 wsl # スタートメニューからWSL2を起動するのもアリ。
Windows 10 2004 WSL2 Ubuntu 20.04 LTS セットアップ
tag: wsl2, windows10, ubuntu2004
■ wslの起動
# Ubuntu側のコマンドの起動 wsl ip a # wslの起動 wsl # スタートメニューからWSL2を起動するのもアリ。
■ WSL2の中のUbuntu 20.04の設定
sudo bash su - visudo
以下のようにsudoersに記載してユーザーgeorgeをsudo可能にする。
george ALL=(ALL) NOPASSWD: ALL
sudo apt -y install language-pack-ja sudo update-locale LANG=ja_JP.UTF8 sudo apt -y install manpages-ja manpages-ja-dev
sudo apt install -y vim sudo apt install -y zip unzip sudo apt install -y git sudo apt install -y emacs sudo apt install -y xorg sudo apt install -y x11-apps sudo apt install -y firefox
あるポート番号が何のアプリケーションで使用されているか調べる方法
tag: windows10, netstat, ポート番号, tasklist, taskkill
PIDも表示されるnetstat -naoを実行。
netstat -nao
タスクマネージャーを起動し、詳細タブからPIDと名前で特定する。
p.s.
MSYS2のmintty.exeで起動したプログラム(vagrantのRubyとか、npm run startのnodeとか)がCtrl-Cで止まってくれなくて困る。 いやコンソール画面上では止まるんだけど、裏でプロセスは動き続けている...ぬーん....。
p.p.s.
tasklistコマンドでプログラム名とPIDの一覧が表示できる。
taskkill /pid 9999 /f コマンドで、PID指定でプログラムを強制終了させることができる。
近所のイオンでは行列ができていた。やっぱ雨の日は買い物とか行かないのか。
昔は10両編成だったのだが、コロナでJR東が赤字になったからかな?
車内は結構密になってた。京葉線って実は赤字ローカル線なのか。
p.s.
別の電車は普通に10両編成だった謎。オレンジ色じゃない武蔵野線だったのか?
2020年1月発売のZガンダム系のオリジナルサウンドトラックがちょいちょいあるのは良き哉。
Zガンダムの三枝成影さんのモビルスーツ戦 3が無いのは解せないけどな!
iTunesのOSTコーナーはまだまだ往年のツタヤの棚一つにも満たない貧相な品揃えだが、これから拡充して欲しいわ。
そんなに売れるモンじゃないけどw
PowerShell デバッグ用の機能 DebugPreference
tag: powershell
シェル変数 $DebugPreference に値をセットすると以下の動作をする模様。
| 値 | 説明 |
| "Continue" | Write-Debugに指定されたメッセージを出力 |
| "SilentlyContinue" | Write-Debugに指定されたメッセージを出力しない |
| "Stop" | Write-Debugに指定されたメッセージを出力した後、動作を停止 |
| "Inquire" | Write-Debugに指定されたメッセージを出力後、続行するかを確認 |
知らんかった。
PowerShellのコマンド実行時のエラー処理を設定する機能 (-ea)(Error Action)
tag: powershell
コマンドの後ろに -ea SilentlyContinue と書くと、コマンドのエラー時にもメッセージを表示しないとかできる模様。
オプションの -ea は変な名前だが、Error Actionの略らしい。
実行ファイルが存在するかどうか、True / False で確認したい場合は以下とのこと。
# hogeは存在しないコマンドとする Get-Command hoge -ea SilentlyContinue | Out-Null echo $? # False が表示される。