2023年08月05日(土) - 12:45 | カテゴリ:
Linux
オープンソースのRDBMSと言ったら、MySQLとMariaDBを思い浮かべる人は多いと思う。
筆者も同じタチで、しかも作る物が殆どMySQLかMariaDBを前提にしているのもあり、
動作互換性のチェックの為にも両方の環境を維持する必要があった。
そんな中、”ns-lab BB”バックボーン用Web鯖のApacheをアップグレードしようと、
APR-utilにmakeを打ち込んでみたら「my_boolなんて存在しない」と怒られた。
エラー文のコピーを忘れてしまったが、my_bool型を参照しようとしてエラーになっていた。
………
MySQL 8.0より古いバージョンではmy_boolを使っていたが、
MySQL 8.0以上では廃止されて普通のbool型を使うか、intで数値として取り扱う様に変わった。
APR-util 1.6.3がこの対応が出来ておらずエラーに繋がった。
- MySQL 8.0 C API Developer Guide [PDF]
MariaDBはmy_boolをサポートし続けているので普通にビルドが出来るのだが、
MySQLはサポートを打ち切った影響で今回のエラーが出てしまった形となる。
修正箇所はASF Bugzillaに上がっており、apr_dbd_mysql.cでbool型にtypedefすれば良い。
MySQLのドキュメントでも今後はboolを使う用に記述がある位なので、
typedefで別名つけても普通に動く。
MySQLからMariaDBに切り替えるのも手だが、
筆者の様に必要な環境もあるので、久々にAPR-utilをアップグレードしてくれたら嬉しい限り。
2023年07月21日(金) - 22:27 | カテゴリ:
Linux
“ns-lab BB”のサーバ管理にAnsibleを多用しているのは言うまでもないが、
サーバをメンテナンスするタイミングを逃して実行環境を放置していた。
昨日、メンテナンスの時間を確保出来たので、
KVMホストのメンテと一緒にAnsible実行環境のアップグレードしたのだが、
Ansible 2.14.2へ変わったのがマズかった。
一部のプレイブックでは以前作成した管理用スクリプトをshellモジュール経由で叩く様にしており、
その中で警告メッセージを減らす為にshell:warnの設定を入れていた。
しかし、Ansible 2.14でshell:warnが削除されたのでエラーで失敗する様になった。
Starting in 2.14, shell and command modules will no longer have the option
to warn and suggest modules in lieu of commands.
The warn parameter to these modules is now deprecated and defaults to False.
Similarly, the COMMAND_WARNINGS configuration option is also deprecated and defaults to False.
These will be removed and their presence will become an error in 2.14.
|
コレに気づかず、アップデート後初のAnsible実行でエラーの嵐が発生。
普段動いていた物が動かなくなったので焦ったが、独自に組んでいたログ取得からデバッグを開始。
表題の通り、shell:warnの所で処理が軒並み停止する事がわかった。
Ansibleの更新履歴を追いかけた所、v2.11のDeprecatedリストにそのまま載っていた。
実行時もwarnオプションが存在しないから削除する様にエラーが出ていたので予想はついていたが、
更新履歴はちゃんと読まないとハマる事があると改めて実感した出来事だった。
………
自宅鯖だからこそ読まずにぶっつけ本番をした結果ハマった原因だが、
流石に自宅鯖で全部追いかけるのは大変なのと、
趣味の範疇だからこそぶっつけ本番チャレンジ出来るのがメリットなので、
敢えてやり方は変えず今回の事も備忘録にしておこうと思う。
2023年07月08日(土) - 20:56 | カテゴリ:
Network
筆者の自宅ラボ環境は、複数拠点をVPNで接続しつつBGPによるルーティング交換をしており、
30経路前後が普段流れている。
折角、ルーティングがそれなりに流れているのなら、
ルーティングをWebブラウザで見れるLooking Glassをやってみたいと思っていた。
IXや研究機関で実装されていたりするが、専用のルータに直接SSHしてコマンドを打ち込むか、
Webサーバ上で表示出来るようにしている場合が多い。
自宅ラボでどの様に実装するか迷ったが、
今回はInteropでも利用していたOSSのLooking Glassを使ってWebブラウザで見れる様にした。
当初はLooking GlassからtelnetでCisco IOSに接続してみたのだが、
バグってコマンドを送信する事が出来なかった。
Readmeにもtelnetでの接続はおまけと書いてあるので、
セオリーに倣ってSSHに変更したら無事にコマンドが通った。
接続先がVyOSの場合、OSのバージョン次第で一部のコマンドが通らないので、
Looking Glassのコマンドを生成する処理を改修する必要がある。
コマンドがPHPに直接書いてあるので、エラーを見つつチューニングすれば簡単に修正出来る。

BGPで受信している全てのPATH情報を表示した例がこちら。
Looking Glassで表示したルータはVyOSなので、通常のVyOSと同じ結果が表示される。
Commandにも表示されている通り、内部処理の観点だとvtyshでBGPのコマンドを打ち込んでいる。

BGPのルーティングテーブルのみ表示するとこちらの様になる。
ルータに直接ログインしてコマンドを打ち込んでも同様の結果が出力されるのだが、
Looking Glassを使うとWebブラウザ一つで見れる様になるのが嬉しい所。
自宅ラボのルーティング情報なので今回のLooking Glassを一般公開する予定は無いが、
LANからタブレットやスマホでも簡単にルーティング情報を確認出来るのが役立った。
そもそも、自宅だとPCを起動している事が大半なので不要なのも事実だが、
ルーティングの状況をサクッと確認したい時には良いかもしれない。
« 続きを隠す