AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

Ruby が利用している OpenSSL のバージョン

このへんに記載された通り、 rubygems.org への通信が TLS1.2 以上じゃないとだめになるので、 OpenSSL のバージョンが 1.0.0t あたりじゃないとだめだったきがする! と思い出して、確認をこめて。

 2018-03-15 19:08:20 ⌚  |2.4.1| Users-MacBook-Pro in ~
○ → ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin15]

 2018-03-15 21:36:09 ⌚  |2.4.1| Users-MacBook-Pro in ~
○ → ruby -ropenssl -e "p OpenSSL::OPENSSL_VERSION"
"OpenSSL 1.0.2k  26 Jan 2017"

 2018-03-15 21:36:17 ⌚  |2.4.1| Users-MacBook-Pro in ~
○ → ruby -ropenssl -rfiddle -e 'puts Fiddle::Function.new(Fiddle.dlopen(nil)["SSLeay_version"], [Fiddle::TYPE_INT], Fiddle::TYPE_VOIDP).call(0)'
OpenSSL 1.0.2k  26 Jan 2017

なるほどなーオッケー。

AWS に VM Import して失敗するときは vmdk を利用してみよう

という学びがあった。 そもそもこんなもん早々おきねーよ!という戒めを含めてメモ代わりに記載する。

AWS VM Import

docs.aws.amazon.com

Qiita やら classmethod やら読んだけど、結局公式の解説が一番簡潔だった。 問題は、公式の日本語が理解しにくい書き方であることで、AWS 君ドキュメントはもっとわかりやすく書こうね!というお気持ち。

Unsupported non-ASCII characters found in OVF file path

金曜日夕方にインポートタスク投げておいたの忘れてて、まあ終わってるじゃろ?と思いながら鉄腕 DASH みつつ確認したら "Status": "deleted" などとなっており真顔になる。 失敗時以下のようなログであった。

○ → aws ec2 describe-import-image-tasks --import-task-ids import-ami-XXXXXXXX
{
    "ImportImageTasks": [
        {
            "Status": "deleted",
            "LicenseType": "BYOL",
            "Description": "ANKEN-vmimport",
            "SnapshotDetails": [
                {
                    "UserBucket": {
                        "S3Bucket": "ANKEN-vmimport",
                        "S3Key": "vmimage.ova"
                    },
                    "DiskImageSize": 0.0,
                    "Format": "OVA"
                }
            ],
            "StatusMessage": "ClientError: Disk validation failed [OVF file parsing error: Unsupported non-ASCII characters found in OVF file path.]",
            "ImportTaskId": "import-ami-XXXXXXXX"
        }
    ]
}

あーん?

原因

わからん! ちなみにこの OVA イメージはローカルの VagrantVirtualBox)から採取したもので、一度 ESXi 6.5 にインポートして動作確認しておりました。 何がわるいんじゃー?といった感じでしたが、同じ仮想マシンから採取した vmdk があったので、 "Format": "vmdk" と指定して再度タスクを投げてみました。

○ → aws ec2 describe-import-image-tasks --import-task-ids import-ami-XXXXXXXX
{
    "ImportImageTasks": [
        {
            "Status": "active",
            "LicenseType": "BYOL",
            "Description": "ANKEN-vmimport",
            "Progress": "28",
            "SnapshotDetails": [
                {
                    "UserBucket": {
                        "S3Bucket": "ANKEN-vmimport",
                        "S3Key": "vmimage.vmdk"
                    },
                    "DiskImageSize": 8407928320.0,
                    "Description": "vmimport",
                    "Format": "VMDK"
                }
            ],
            "StatusMessage": "converting",
            "ImportTaskId": "import-ami-XXXXXXXX"
        }
    ]
}

ああん?!動いたやんけェ、どういうこっちゃ!

結論

というわけで出力した形式が違うだけでなんでこんなことに……みたいな感じで頭を抱えております。 が、 AWS VM Import で OVA 形式を利用していてうまくインポートできねーな?みたいな状態になったら vmdk を利用してみてください。

自家製 Ricty から Cica フォントのお引っ越しした

した。

Cicaフォントを使ってVimをオシャンティーにする設定 | tmnm.tech

シャレオツになった。あと自家製 Ricty より滑らかで視認性が上がったの嬉しい。 エディタのフォントは Ricty で満足してたのがはなまるになったね!

Vagrant をアップデートする

WindowsVMUSB2.0 を使いたくてぷらぎん入れようとしたら「新しい VirtualBox あるから入れてね」と言われるなど。 なもんで、 VirtualBox をアップデートした所 Vagrant が「やだ!小生古い VirtualBox じゃないと起動できないからやだ!」と言い出したので、アップデートして新しい VirtualBox に適合するナリ。

ロケ地:macOSX 10.11.6

Vagrant のバージョン

  • before
    • 1.8.1
  • after
    • 2.0.2

どうした

公式サイトから dmg 落としてきてアップデートしたあと、 vagrant up すると以下のメッセージが出て来るので vagrant plugin update する

○ → vagrant up
Vagrant failed to initialize at a very early stage:

The plugins failed to initialize correctly. This may be due to manual
modifications made within the Vagrant home directory. Vagrant can
attempt to automatically correct this issue by running:

  vagrant plugin repair

If Vagrant was recently updated, this error may be due to incompatible
versions of dependencies. To fix this problem please remove and re-install
all plugins. Vagrant can attempt to do this automatically by running:

  vagrant plugin expunge --reinstall

Or you may want to try updating the installed plugins to their latest
versions:

  vagrant plugin update

Error message given during initialization: Unable to resolve dependency: user requested 'vagrant-vbguest (> 0)'

おしまい。

RDS でパブリックアクセスを許可する

RDS を利用していて、グローバルから通信させなければ行けない事案が出てきてクッソー!となりながら、セキュリティグループと grant で指定の IP を利用できるように設定した。 が、通信できない。 (Can’t connect to MySQL server となる)

なんでかなーと考えて show grants など眺めていたけど、なんのことはなく、最初にパブリックアクセスを想定していなかったので、RDS の設定が以下のようになっていた。

  • セキュリティとネットワーク
    • パブリックアクセス可能
      • いいえ

ふんがー! という訳で、「インスタンスの操作」→「変更」→「パブリックアクセス可能」を「はい」にして変更……できない。 VPCDNS がどうとかいうエラーメッセージだった、んん?DNS 変更できない? という訳で RDS が所属する VPC の設定を確認したところ、以下のようになっていた。

  • 「概要」タブ
    • DNS ホスト名
      • いいえ

ははーんこれか。 ダッシュボードから該当の VPC を選択して、「アクション」→「DNS ホスト名の編集」→「はい」とする。

即時反映されるので、RDS のダッシュボードに戻って「インスタンスの操作」→「変更」→「パブリックアクセス可能」を「はい」にして変更を行う。 この時、「メンテナンス」項目に存在する「すぐに適用」にチェックを入れておくと、変更を確定したあとすぐに RDS の状態が変更中になる。 (ちょっと時間がかかるので、運用中のサービスと接続している場合は気をつけた方がよさそう)

クソデカログファイル君をカットする

特定の行から行末までを切り出す

+100 となってる所に開始行数を入れる。

tail -n +100 production.log > production_100kara.log

特定の行〜特定の行を切り出す

-e 開始行,終了行pとする。 終了行に p を付けるのがポイントらしい。

sed -n -e 101000,102000p production.log > production_kiridashi.log