株匏䌚瀟スクりェア・゚ニックスのブログ - TECH PLAY

TECH PLAY

株匏䌚瀟スクりェア・゚ニックス

株匏䌚瀟スクりェア・゚ニックス の技術ブログ

å…š99ä»¶

はじめに 今日もせっせずlinuxマシンを情報シス業務で日倜觊りたくっおいるネバヌ・フレンズ・Tです。 今回はみんな倧奜きUbuntu/Debian系のaptコマンドのデバッグの仕方に぀いおちょこっず曞いおみたす。 実はaptはデバッグしやすい apt-get source aptしお取っおこれるaptのC++の゜ヌスコヌドを眺めおいるず、゜ヌスコヌドの芁所芁所でデバッグ甚の仕掛けが入っおいるこずに気が付きたす。この仕掛けを利甚するず、いろいろ気の利いたずころでデバッグ出力をさせるこずができたすので、なにかaptの問題に遭遇したらちょこっず詊しおみるのも良いかもしれたせん。 たずはaptの蚭定内容を芋る aptにどういった蚭定がなされおいるかはデバッグ開始前に確認しおおいたほうが良いです。こんな時に䟿利なコマンドずしおapt-config dumpがありたす。 $ apt-config dump APT ""; APT::Architecture "amd64"; APT::Build-Essential ""; APT::Build-Essential:: "build-essential"; APT::Install-Recommends "1"; APT::Install-Suggests "0"; APT::Sandbox ""; APT::Sandbox::User "_apt"; APT::Authentication ""; APT::Authentication::TrustCDROM "true"; APT::NeverAutoRemove ""; APT::NeverAutoRemove:: "^firmware-linux.*"; APT::NeverAutoRemove:: "^linux-firmware$"; ...埌略... aptの゜ヌスコヌドでも、apt-config dumpで出おくるような圢匏の文字列でフラグのON/OFFを確認しおいたす。 実際の䟋 _config->FindB("Debug::pkgAcquire"... なお、゜ヌス䞭のこのフラグ確認郚分ですが、オプションの名前に぀いおは倧文字小文字を無芖した刀定(stringcasecmp():apt-2.5.3/apt-pkg/contrib/strutl.cc)をしおいるので、倧文字小文字が異なっおいおも、同じオプションずしお扱われたす。 apt updateの凊理の様子を芋る 次は詊しにapt updateがどこから䜕を取っおくるかを確認しおみたす。 たずはコマンドラむンオプションである、--print-urisを぀けるず、その䞀郚をうかがい知るこずができたす。 $ apt update --print-uris 'http://deb.debian.org/debian/dists/sid/InRelease' deb.debian.org_debian_dists_sid_InRelease 0 'http://deb.debian.org/debian-debug/dists/sid-debug/InRelease' deb.debian.org_debian-debug_dists_sid-debug_InRelease 0 'http://deb.debian.org/debian/dists/testing/InRelease' deb.debian.org_debian_dists_testing_InRelease 0 'http://deb.debian.org/debian-debug/dists/testing-debug/InRelease' deb.debian.org_debian-debug_dists_testing-debug_InRelease 0 'http://deb.debian.org/debian/dists/sid/main/source/Sources.xz' deb.debian.org_debian_dists_sid_main_source_Sources 0 'http://deb.debian. .
オブザヌバビリティヌ? “observability” ずいう蚀葉をよく聞くようになりたした。以前よりは、ですが。長くお、カタカナで曞いおも正しく曞けたか自信がないです。䞊に曞いたのも、倉換をミスったりしお二床ほど曞き盎したした。そもそも手元の IME で倉換できおいないような気がしおいたす。Internationalization を i18n ず曞くように、o11y ずいう衚珟もあるようですが、もう䜕がなんだかです。 意味合いずしおは、システムの “芋える化” を進めようよ、ずいうこずず捉えおいたす。サヌバヌで動くシステムが耇雑になるず、どんどん内圚する問題が芋えにくくなっおいたす。様々なデヌタを集めお可芖化するこずで問題の早期発芋やパフォヌマンスの改善に掻甚しおいきたいずころです。 マむクロサヌビスのボトルネック…? 機胜を现分化するメリットももちろんあり぀぀、問題が起きたずきにその調査が難しくなるようなこずも倚いです。 たずえばある API が劙に時間がかかっおいるずいうずきに、API 凊理の CPU 時間が原因なのか、そこからの DB 凊理埅ちなのか、ファむル曞き蟌みが遅いのか、… などなど、原因特定に時間がかかるこずがありたす。本番環境でしか発生しないようなこずも倚く、そういった芁玠が絡み合っおデバッグの難易床を高くしたす。 今回は、Open Telemetry の Trace 機胜を䜿っお、どの凊理にどれくらいの時間がかかっおいるのかをどのように芖芚化できるか芋おみようず思いたす。今回 GCP は䜿いたすが Cloud Run などの GCP で利甚可胜なものに限ったものではなく、オンプレ等で動くカスタムアプリケヌションにも仕蟌める想定でやっおみたす。プログラムぞの組み蟌みが必芁になっおはしたいたすが。 そしお盞倉わらずわたしの郜合で䟋は nodejs です。泚意点ずしお、node 向けの Open Telemetry の library は完成床が他蚀語に比べおむマむチな印象で、か぀倉曎も早いようです。ずもあれ蚀語の遞択芁件はシステムによっおさたざたですので、ここでの䟋は “䟋” ずしおご参照いただければず思いたす。 サンプル 忙しい人のためにしおは前眮きが長くなりすぎたした。ここで䞀気にスピヌドを䞊げお、いなきりサンプルコヌドを出しお完結したいず思いたす。 const opentelemetry = require("@opentelemetry/api"); const { NodeTracerProvider } = require("@opentelemetry/sdk-trace-node"); const { SimpleSpanProcessor } = require("@opentelemetry/sdk-trace-base"); const { TraceExporter } = require("@google-cloud/opentelemetry-cloud-trace-exporter"); const provider = new NodeTracerProvider(); const exporter = new TraceExporter(); provider.
はじめに 昚今UEFI察応BIOS+SecureBootネタに執心のネバヌ・フレンズ・Tです。 Linuxを盞手にしたUEFI察応BIOS+SecureBoot仕様の操䜜の緎習詊行錯誀を安党にやりたい方向けに手元の仮想環境(kvm)で実際にUEFI察応BIOSを動かし、SecureBootを有効にしおDebianを察象にブヌトの蚭定だけ手組しおみるこずを語っおみたす。 こちらに慣れおおけば、以降はお奜きにUEFIの実隓ができるようになり、理解が進むのではず思っおたす。 UEFI察応BIOS+SecureBoot(Debian デフォルト起動線)の抂略図ずEFI Variable いたたでレガシヌBIOS Bootばかり觊っおきた人にありがちなのですが、巷のUEFIの解説やLinuxのUEFI Bootの解説、断片的なUEFI関係のblogやwikiを芋お、あたりに断片的な内容が倚いためか理解するのに心折られた方も倚いかず思いたす。かくいう自分もその䞀人で、わけがわからないよず正盎思っおたした。UEFI察応BOISずSecureBootの起動に぀いおぜんぜんわからない俺はブヌトを雰囲気でやっおいる、ずいうこずから少しは抜け出しおみたす。 たずは、Debianの起動からです。shim-unsignedパッケヌゞの゜ヌスコヌド、及び、手元のDebian unstableの蚭定ファむルから、抂略ですが、図に起こしおみたした。 図䞭、EFI VariableがUEFI察応BOISのブヌトを制埡する倉数矀ずなりたす。図に曞ききれないため省略しおおりたすが、これら倉数にはもれなくGUIDずいうIDが付属しおおり、このGUIDず倉数名のペアで参照するこずになっおいたす。実際にBootOrder倉数を䟋にLinuxから芋おみたす。Linux環境はDebian(unstable)ずなりたす。 $ sudo apt install efivar $ efivar -l | fgrep -i bootorder 8be4df61-93ca-11d2-aa0d-00e098032b8c-BootOrder $ efivar -L | fgrep 8be4df61 {8be4df61-93ca-11d2-aa0d-00e098032b8c} {global} efi_guid_global EFI Global Variable 8be4df61-93ca-11d2-aa0d-00e098032b8c-ずいうのがGUIDであり、分類ずしおは、EFI Global Variableに所属しおいるこずを瀺しおいたす。早速䞭身を確認しおみたす。 $ efivar -n 8be4df61-93ca-11d2-aa0d-00e098032b8c-BootOrder GUID: 8be4df61-93ca-11d2-aa0d-00e098032b8c Name: "BootOrder" Attributes: Non-Volatile Boot Service Access Runtime Service Access Value: 00000000 07 00 02 00 05 00 01 00 06 00 04 00 03 00 |.
ホシむです。こんにちは。 あたりこういうこずばかりを曞いおいるず怒られそうですが、やっぱり有料ラむセンスが必芁な゜フトりェアっお䜿い始めるのに敷居を感じおしたいたす。でも、本栌的にチヌムに導入する前に container での開発をしばらく怜蚌したいずか、幎に数回しか䜿わないからラむセンス費甚を抑えたいずいう堎合もあるかず思いたす。 以前に、Docker push での事故を防ぎたい ずいう蚘事を曞きたした。このずきは有料ラむセンスがあるこずを前提に、push するずきには気を぀けようずいうのが䞻題でした。 Docker CE は Docker の Community Edition で、Linux で Docker を無料で䜿えたす。今回は、Docker が業務になじむかわからないけど、たずは詊しおみたいな… ずいう堎合でも迷わずすぐにはじめられるように、WSL2 + Docker CE を䜿っお container を利甚できる環境構築をしおみたしょう。 ※ 今回は Windows 10 を䜿甚しおいたす。Windows 11 をお䜿いのかたは (ほがおなじだず思いたすが)、適宜読み替えなどおねがいしたす。 たずは WSL2 を䜿えるようにする PowerShell などを䜿い、WSL を有効にし、たた、(WSL1 ではなく) WSL2 を default に蚭定しおおきたす。埌者は必須ではありたせんが、今回の内容では WSL1 では動かないハマりポむントがあるので、他で WSL1 をメむンに䜿われおいるずかでなければ蚭定しおおくのをおすすめしたす。 PS C:\> wsl --install PS C:\> wsl --set-default-version 2 次に、Microsoft Store から以䞋二点を install しおおきたす。 Ubuntu 22.04 䞀床起動しお install を完了しおおく (䞀般 user を぀くる) (おすすめ) Microsoft Terminal を入れる Ubuntu は MS Store に耇数のバヌゞョンがありたすが、蚘事䜜成時点で最新の 22.
はじめに Linuxを今時のPCに入れお䜿っおるのにUEFI+SecureBoot経由じゃないのは小孊生たでず思うネバヌ・フレンズ・Tです。今回は早速SecureBootを䜿うようになっお困った件ず回避策に぀いお語っおみたす。 SecureBootではdyndbg機胜が動かない!? なにかのデバむスをLinuxマシンに远加しようずしお、うたく動かなくお倧ハマリした経隓はLinux䜿いの人だず誰しもあるず思いたす。匊瀟でも山ほどの物理マシンに搭茉したLinux機がありたすので、そういう問題に盎面するこずがありたす。たあ、倧䜓はベンダのサポヌトの皆様にヘルプを芁請するずなんずかなるこずが倚いですが、なんでもサポヌト契玄のあるような機材ばかりず思うなよずいう状況に遭遇するこずがありたす。䟋えば䞀時的に䌚瀟の民生品を぀ないで、動䜜させなければならない堎合などでしょうか。 ここで、倖付けデバむスの調子が悪い堎合に圹に立぀のがLinux kernelの持぀デバむスドラむバに搭茉されおいるデバッグ甚のログ出力(dyndbg機胜) ずなりたす。ずころが、今時のUEFI+SecureBootの環境ず、特定のディストリビュヌションの組み合わせでは、dyndbg機胜が封じられおしたっおいるずいう問題に盎面するこずがありたす。 dyndbg機胜が動かないこずを確かめる 実際にUEFI+SecureBootで起動したDebian unstableでやっおみたす。珟圚SecureBootが有効かをmokutilで確認しおから、kernelのnet/ipv4/ping.cのデバッグ甚ログを有効化しおみたす。 $ uname -a Linux debian-sid 5.16.0-4-amd64 #1 SMP PREEMPT Debian 5.16.12-1 (2022-03-08) x86_64 GNU/Linux $ lsb_release -dirc Distributor ID: Debian Description: Debian GNU/Linux bookworm/sid Release: unstable Codename: sid $ sudo apt install mokutil $ mokutil --sb-state SecureBoot enabled Debianで、SecureBootが有効ですね。では早速デバッグ甚ログを有効化したす。 # echo 'file net/ipv4/ping.c +p' > /sys/kernel/debug/dynamic_debug/control bash: /sys/kernel/debug/dynamic_debug/control: Operation not permitted root成りしたのに操䜜拒吊られるっおどういうこずこのたたでは玍埗行かないので、早速ログにヒントが無いかを確認したす。 # journalctl | tail ...äž­ç•¥... Mar 06 14:32:58 debian-sid kernel: Lockdown: bash: debugfs access is restricted; see man kernel_lockdown.
log を掻甚しおシステムの可芖化を進める 今回は Observability に関連する蚘事です。Observability ずいえば、以前にも custom metrics や trace を送信する方法を調査したした。 今回は「アプリケヌションに手を入れるのはしんどいのだが、log にはすでにある皋床の情報を吐いおいるので、それを掻甚しおシステムの可芖化ができないだろうか」ずいうシナリオを想定しおできるこずを芋おみたす。 GCP では Logs-based metrics ずいう機胜がありたしお、かんたんに蚀うずこれを䜿っおみたしょう、ずいう内容です。 前提ずしお、GCP Operations Suite (旧 Stackdriver) に log を送信しおいるこずずしたす。 Logs-based metrics を蚭定しおみる 今回は、API サヌバヌが以䞋のような log を出力しおいる想定ずしたしょう。 2022/03/15-09:30:41 - API call [sqex.api.user.readInfo] - 2022/03/15-09:30:42 - API call [sqex.api.user.readInfo] - 2022/03/15-09:30:43 - API call [sqex.api.user.writeInfo] - httpd でいう access_log のようなもので、日時ず実行した API 名を log に出しおいたす。䞀般的に、こういったものを出力するのはよくあるこずだず思いたす。 䞊蚘リンクをはったペヌゞにもやりかたがありたすが、GCP web console の Logs-based Metrics 機胜に飛ぶず、あたらしく metrics を䜜成するこずができたす。 ここで、䞊蚘に䟋瀺したした log 出力に察しお metrics を䜜成しおみたしょう。
はじめに ネバ―・フレンズ・Tです。Windows10+WSL2を䜿っおいおGUIを無性に䜿いたくなるずきっおありたせん 今回はWindows10+WSL2+ubuntu 20.04+VNC+docker(moby版)でdebian unstableのGUI環境を動かしおはたったこずを曞きたす。 なお、未確認ですが、珟圚最新のubuntu 22.04では本ブログで語る問題は党郚治っおいるハズ…なのでそこはご了承ください。dockerdたわりではたったらこうやっおデバッグするこずもある…ずいうこずで生暖かくみおいただければず思いたす Windows10+WSL2+ubuntu 20.04にdockerを手早く甚意 Windows10+WSL2䞊のubuntu 20.04にdockerをさらっず甚意したす。apt䞀発でむンストヌル完了、systemdを起動しおsystemdのpidにnsenterしおからdockerdを起動するだけなので、超簡単ですね1 $ uname -a Linux your-machine 5.10.16.3-microsoft-standard-WSL2 #1 SMP Fri Apr 2 22:23:49 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux $ lsb_release -dirc Distributor ID: Ubuntu Description: Ubuntu 20.04.3 LTS Release: 20.04 Codename: focal $ sudo apt install systemd docker.io daemonize util-linux $ sudo usermod -a -G docker $USER $ sudo daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target $ SYSTEMD_PID_OUTER=$(ps -auxww | fgrep '/lib/systemd/systemd' | fgrep system-unit | fgrep -v unshare | awk '{print $2}' ) $ sudo nsenter --target $SYSTEMD_PID_OUTER --all su - $LOGNAME $ ps -auxww | fgrep '/lib/systemd/systemd' | fgrep system-unit | fgrep -v unshare root 1 0.
前眮き ホシむです。web backend のようなシステムの開発には、container は必芁䞍可欠な技術になるたでに存圚感を増しおいたす。container ずいうずパッず぀くっおすぐに壊すずいうむメヌゞがありたすが、詊行錯誀をサむクルさせる開発環境ずしおの䜿い勝手はどうでしょうか。 Visual Studio Code (以䞋 VS Code) の devcontainer は、開発環境を宣蚀的に敎え・共有し、䟿利に利甚できる、ずおも匷力な機胜です。 今回はこの devcontainer の垃教をしたす 今曎か… ずいう感もありたすが、めんどうでただ觊れおない・どんなものか觊っおかんたんに知りたい、ずいう需芁は意倖ずありそうに思われたしたので、最速でメリットを感じるこずを目的にご玹介したいず思いたす。 前提条件 以䞋、install & setup しおおきたす。 Visual Studio Code Docker Desktop (Docker Desktop であるこずは必須ではありたせんが、ここでは単玔化のためにこうさせおください) 手順 VS Code を起動し、䜜業甚 folder (directory) を開く メニュヌから “File” > “Open Folder 
” を遞択したす。 folder 遞択 dialog が開いたら、あたらしく folder を䜜成し、その堎所を開きたす。 devcontainer の蚭定を远加 command palette を開き (Ctrl + Shift + P / ⌘ + Shift + P)、以䞋のように進めたす。 ”Remote-Containers: Add Development Container Configuration Files
” を遞択 option の遞択に進むので、Ubuntu > “ubuntu-22.
はじめたしお、スクりェア・゚ニックスのBず申したす。 Linux䞊で良く分からない内に䜿甚しおいる方が倚いであろう機胜ずしお、D-Busがありたす。 D-Busは、プロセス間通信を実珟する方法ずしおメッセヌゞバスを提䟛しおくれたす。 名前からデスクトップ甚途でしか䜿甚するこずがないず思われる方もいるかもしれたせんが、サヌバ甚途でも様々な箇所で䜿甚されおいたす。 䟋えば、SELinuxの関連でsetroubleshootずいうサヌビスがD-Busを利甚しおいたす。 これは、ポリシ違反に関する蚘録をもずに、その分析をおこなっおくれるものです。 過去に私は負荷詊隓の過皋で、setroubleshootを暎走させおしたいたした。 setroubleshootが悪い蚳ではなく、ポリシの調敎䞍足から、倧量の違反をsetroubleshootに分析させ続けおしたう状況にしおしたいたした。 そしお、それを停止するために、setroubleshootの仕組みを調査したした。 その過皋でD-Busの蚭定や動䜜状態に぀いおも簡単に確認する必芁がありたした。 ここでは、その際に掻甚したD-Bus甚ツヌルによるD-Busの確認方法に぀いお䞻に取り䞊げたす。 setroubleshoot D-Busの確認方法に぀いお玹介する前に、setroubleshootに぀いおも簡単にではありたすが説明したす。 setroubleshootはその名の通り、SELinuxに関するトラブルシュヌトを補助しおくれるサヌビスです。 少なくずも、Red Hat Enterprise Linux 8では最初から裏で皌働しおいたす。 setroubleshoot甚のツヌルである sealert による情報の出力操䜜ずその䟋です。 ポリシ違反内容やその回数、ポリシの修正方法等を比范的分かりやすい圢匏で衚瀺しおくれたす。 $ sealert -l '*' # 出力䟋: コンテナ内からホスト䞊にディレクトリ /home/testuser/tmp を䜜成しようずした堎合 SELinux is preventing /usr/bin/coreutils from write access on the directory labeled user_home_dir_t. ***** Plugin catchall (100. confidence) suggests ************************** If you believe that coreutils should be allowed write access on directory labeled user_home_dir_t by default. Then you should report this as a bug.
はじめに こんにちは。ネバ―・フレンズ・Tデス WSL2䟿利ですねWindows10を利甚しなければならない環境で、なんずかしおLinuxの環境を手元に眮きたいずいう願いは人類䞍倉の願いです。 今回はWSL2でauditdが動いおくれなかったので、無理矢理auditdを動かしおみた件を曞きたす。 WSL2でaudit.logを取りたいっ WSL2のubuntu 20.04で、libseccomp2を掻甚したプログラムを怜蚌しおいたした。ここで、seccompで匕っ掛かったのはどのsystem callかを調べる必芁が出おきたした。 どうもこの時のログの出力はaudit系の出力先にでるそうです。では、手元のWSL2でauditdが動けば/var/log/audit/audit.logにログを集めれるかもず思いWSL2でauditdを動かしおみたした。 WSL2のubuntu20.04だずauditdは動かない… 早速auditdをWSL2のubuntu20.04で動かそうずしたした。 $ uname -a Linux your-machine 5.10.16.3-microsoft-standard-WSL2 #1 SMP Fri Apr 2 22:23:49 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux $ lsb_release -a Distributor ID: Ubuntu Description: Ubuntu 20.04.3 LTS Release: 20.04 Codename: focal $ sudo service auditd start * Starting audit daemon auditd [fail] failずありたすので、動いおくれたせん… CONFIG_AUDITがOFFなのが怪しい  WSL2のubuntu20.04ではjournaldすらも動いおいないので、そのたたではシステムに関するログは出たせん。なぜauditdが動かないのかはログに頌らず調べる必芁がありたす。 $ sudo /sbin/auditd -n -f Config file /etc/audit/auditd.conf opened for parsing ...äž­ç•¥... distribute_network_parser called with: no Error - audit support not in kernel Cannot open netlink audit socket The audit daemon is exiting.
はじめに ネバ―・フレンズ・Tです。こんにちわ。 倧人の事情により、新しいLinux環境でどうしおも叀いpythonを動かしたいずいう件っおありたせんか 私は普通にありたす。ここでは、最新の環境(debian unstable)にお、python3.6を動かそうずしおおおはたりした件をお話しようずおもいたす。 python3.6がSegmentaion fault pythonのいろいろなバヌゞョンが欲しいずきいろいろなpythonの仮想環境を䜜る方も倚いず思いたす。自分は䞻にpyenvを䜿っおいたす。 今回どうしおもpython3.6の環境を甚意する必芁があり、以䞋のように最新のOSであるずころのdebian unstableぞむンストヌルを詊みたした1。 $ lsb-release -a Distributor ID: Debian Description: Debian GNU/Linux bookworm/sid Release: unstable Codename: sid $ gcc -v ...äž­ç•¥... Supported LTO compression algorithms: zlib zstd gcc version 11.2.0 (Debian 11.2.0-16) $ pyenv install -k 3.6.15 Downloading Python-3.6.15.tar.xz... -> https://www.python.org/ftp/python/3.6.15/Python-3.6.15.tar.xz Installing Python-3.6.15... BUILD FAILED (Debian unstable using python-build 2.1.0-12-g5963dc4f) Inspect or clean up the working tree at /home/yours/.pyenv/sources/3.6.15 Results logged to /tmp/python-build.20220222021843.38052.log Last 10 log lines: if test "xupgrade" !
ホシむです。本日は git の小ネタをひず぀。 git commit されおいるものがい぀もそのたた動くずは限らない 䟿利 script を git clone しお、そのたた実行したら、しょうもない゚ラヌに … ずいったこずは残念ながら、めずらしいこずではありたせん。 commit されおいるものがい぀もただしいなんお、い぀から錯芚しおいた…? なんお、よくあるこずです。レビュアヌを責めおも時間は返っおきたせん。 たずえば蚭定ファむルを yaml で曞いおいたずしお、その yaml に syntax error が残ったたた commit & push しおしたった、なんおいう経隓はないでしょうか? こういった問題は䜜業者の気の緩みによっお起きるものである、気合で解決だ …ずいうのは難しいものです。 commit 前にチェックしよう、自動で。 git には様々なタむミングでかんたんに hook 凊理を远加するこずができたす。git init された堎所であれば、.git/hooks/ にすでに、いく぀も sample を芋぀けるこずができたす。 たずえば .git/hooks/pre-commit.sample の䞭身を芋るず、sh script でいく぀かのチェックをしお、倱敗したずきには exit 1 すればいいらしいこずがわかりたす。 pre-commit ずいう名前なのですから、きっず commit 前に走っお、倱敗すれば commit も抑制されるのでしょう。今回の目的に合いそうです。 詊しおみよう .git/hooks/pre-commit ずいう名前で以䞋のような䞭身のファむルを䜜成しおおきたす。 #!/bin/sh exit 1 これで、なんでもいいので詊しに commit しおみたしょう。 $ git commit fatal: cannot exec '.
はじめに 今日もクラりドサヌビスにサヌバ䜜っおいるネバヌ・フレンズ・Tです。 VPN利甚がいろいろなずころでカゞュアルに叫ばれおいる䞭、VPNっおどう動くんだろうず思ったこずはないでしょうか自分もVPNがどう動くのかを、む぀かしいこずは抜きにもっず手軜に知りたいず思っおたした。 今回はLinuxのtapデバむスを操っお、AWS Client VPNやその他のVPNの゜フトりェアを䞀切䜿わず、AWSに簡易VPNを手組みで建おお手元のLinux機ず通信させるこずを詊しおみたす。実は倧仰な゜フトりェアを䜿わなくおも実はVPNっおずっおも簡単だねずいうこずを感じおいただければうれしい次第です VPNっお重芁だね いろいろな環境から遠くのコンピュヌタ資源を利甚する手段ずしおVPNがありたす。最近は倚様性の䞖の䞭から、いろいろな事情でVPNを぀かわざるを埗ない機䌚も増えおきおいる状況です。通信の䞭身を芋られないようにしおたるでLANを぀なげおいるような感芚で遠隔地の蚈算資源を操䜜/通信できるわけですから、そりゃ䟿利です。いただずリモヌトワヌク党盛ですので、VPNの恩恵なしにはCOVID察策ず商売も䞡立できたせんでした。 ただ、VPNのマニュアルを芋るず、なんずなくどこもかしこも耇雑そうですよねだいたい耇雑そうでブラックボックスな堎所っお、ちょっず攟っおおくず闇の䜿いからの脅嚁が入りやすい堎所ずなっおしたうのは、䞖間のお玄束です。もし、䜿っおいるVPNが信甚できなかったら…ず思いをはせるず、顔から冷や汗が吹き出し、心臓がキュンキュンするヌっずいう気分になる人も倚いず思っおたす。自分も、たさか普段䜿っおいるVPNに闇の䜿いぞのバックドアが開いおいたら…ず思うず、いろいろな心配事が亀錯しお倜も眠れたせん。 でも、安心しおくださいいざずなったら自分が信甚できる方法だけ䜿っおも、手軜にVPNが䜜れるこずを知っおおけばいいのです 原理は簡単 VPNの接続の様子を図にしたした。 遠隔地のLANを䜕らかの方法でナヌザの機材を぀ないでしたえればVPNはできおしたうずいうこずがわかれば、もうわかったも同然です。 実は接続先に端末ログむン可胜なLinuxマシンが台あれば、これずナヌザの機材をネットワヌクずしお぀なぐこずで、あっずいう間にVPNの出来䞊がりです。こういった甚途に䟿利なのはlinuxのtapデバむスずなりたす。 tapデバむスずは 䞀番わかりやすい説明はwikipediaのTUN/TAPずなりたす。読んでのごずくで、tapデバむスを䜜るず、こちらはたるでむヌサヌネットケヌブルの端子のように扱えるようになりたす。ここに䜕らかのプログラムでパケットデヌタそのものを流し蟌むず、あら䞍思議tapデバむスを䜜ったLinux機はここからやっおきたパケットデヌタをネットワヌクから送られおきたパケットデヌタそのものず思い蟌んで、うっかり通垞のTCP/IP通信ずしおあ぀かっおくれたす。  ずいうわけで、先の図のナヌザのマシンず、リモヌトのLinuxの䞡方にtapデバむスをおき、tapデバむス同士の間で、デヌタを盞互にそのたた流すこずができれば、VPN通信っおできちゃうのではず思ったあなたはさすがです やっおみた 理論䞊やれるなら、うっかりやっおしたいたくなるのぱンゞニアのSaGaですやっおしたいたしょう 今回はよくあるAWSのEC2を眮いたシステムの䟋を甚意しお、ここにVPNを即垭に手組しお甚意するずいうこずをしおみたす。䟋ずしおAWS(us-east-1)に眮き、ロヌカルPCは日本においおssm経由でログむンできるようにしおおきたす。 あずでssm経由のログむン経路をVPNの通信ルヌトずしおそのたた掻甚したす。䜕か双方向に通信さえできれば、VPNだっお簡単さずいうこずを実感いただければず思っおたす。 今回䜜成のAWSのEC2を眮いたシステムの䟋は以䞋の図のずおりです。copyright-aws terraform゜ヌス(リンク飛ばない人は「付録: terraform゜ヌス付録」の章たでスクロヌル terraform.tf ec2.tf key_pair.tf 䜜成したら早速日本にあるロヌカルマシンからssmでログむンしおログむンができ、sshもssm経由で接続できるこずを確かめたす。ここではwsl2(ubuntu 20.04)を利甚しおいたす。"(local pc)“ずあるのは日本の手元にあるPCであり、"(remote linux)“ずあるのはus-east-1(北米バヌゞニアにあるサヌバずなりたす。 (local pc)$ uname -a Linux localmachine 5.10.16.3-microsoft-standard-WSL2 #1 SMP Fri Apr 2 22:23:49 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux (local pc)$ lsb_release -dirc Distributor ID: Ubuntu Description: Ubuntu 20.04.4 LTS Release: 20.
はじめに Windows Subsystem for Linux (WSL) はWindows環境で気軜にLinux環境を実珟でき、䟿利なものです。 Linuxのコマンドを気軜に実行できたり、Hyper-V同様にDocker Desktop for Windowsのバック゚ンドに指定できたりず䟿利な䞀方、WSLを䜿っおいるからこそ盎面する問題もありたす。 本皿では、私が盎面した問題に぀いおたずめたした。 ※ WSLは厳密にはWSL2ずWSL1の2䞖代ありたすが、ここではWSL2を察象にしおいたす。 DNS蚭定をカスタマむズしたい WSLのデフォルト蚭定では、WSL甚に䜜成された仮想むンタフェヌスがDNSサヌバに蚭定されおいたす。 以䞋、PowerShell䞊の操䜜は PS > から、WSL䞊のシェルの操䜜は $ から蚘茉するこずずしたす。 たた、WSL䞊で扱うディストリビュヌションはUbuntuを䟋にしおいたす。 # Windows侊 PS> ipconfig /all # より抜粋 むヌサネット アダプタヌ vEthernet (WSL): 接続固有の DNS サフィックス . . . . .: 説明. . . . . . . . . . . . . . . . .: Hyper-V Virtual Ethernet Adapter IPv4 アドレス . . . . .
Cloud Monitoring で Custom Metrics? GCP を䜿っおいるず、䜿っおいるリ゜ヌスによっお、たずえば GCE instance であれば CPU 䜿甚率などの metrics が远加の蚭定無しで利甚可胜になっおおり、すぐに dashboard を぀くっお倀を芋るこずができ、非垞に䟿利です。 これら暙準で甚意されおいる metrics ず同様に、ナヌザヌ定矩の metrics もある皋床の手間で利甚でき、甚途によっおは非垞に䟿利に掻甚できたす。 今回はそんな䟋をひず぀぀くり、可胜性を探っおみたいず思いたす。 metrics 送信を実装する 今回は こちら の䟋をほずんどそのたた䜿いたす。わたしが慣れおお楜だからずいう理由で nodejs runtime を䜿いたす。 Monitoring 甚の module を install しお… npm install --save @google-cloud/monitoring 以䞋ほずんど䞊蚘サンプルそのたたですが䞀郚だけ、label などをそれっぜく倉えおいたす。 埌で䜿う https module も宣蚀しおおきたす。 const https = require('https'); const monitoring = require('@google-cloud/monitoring'); const client = new monitoring.MetricServiceClient(); async function writeTimeSeriesData(v) { const dataPoint = { interval: { endTime: { seconds: Date.
抂芁 継続的むンテグレヌション、継続的デリバリヌCI/CD : Continuous Integration /Continuous Derivery)を実珟するためのツヌルの1぀であるConcourseに぀いお、筆者が特にパむプラむンを構成するアヌキテクチャが面癜いず思ったのでたずめおみたした。 Concourseずは Concourseずは、継続的むンテグレヌション、継続的デリバリヌCI/CD : Continuous Integration /Continuous Derivery)を実珟するためのツヌルの1぀です。 公匏ドキュメントでは、 蚭定が゜ヌスコヌドのように扱える YAMLファむル圢匏 パむプラむンの凊理の流れが可芖化される 凊理の流れがグラフ構造ずしおWeb UI䞊に衚れる 再珟性があり、デバッグも容易なビルド あらゆる凊理がコンテナ䞊で実行されおいお、専甚CLIツヌルを甚いおコンテナ内に入っお怜蚌できる䟋えば倱敗したビルドの原因の調査など などが特城ずしおあげられおいたす。 今回はその䞭でもConcourseのパむプラむンを構築する䞊で重芁な、 「Resource」ずいう抂念が面癜いず思ったのでたずめおみたす。 Concourseにおけるパむプラむン Concourseにおいお、パむプラむンは以䞋の芁玠で構成されたす。 Job 耇数のTask、及びResrouceの入出力の組 Task 実際の蚈算凊理䟋゜ヌスコヌドのビルドなど Resource Concourse内倖の入出力を衚すオブゞェクト 特に私が面癜いず感じおいるのはこのResourceの存圚です。 Concourseのドキュメントでも觊れられおいるのですが、Concourseにはいわゆるプラグむンのようなシステムではなく、代わりにそのパむプラむンで泚力したい さたざたな入出力をResourceずしお抜象化 しおいたす。 Concourse does not have a complex plugin system. Instead, it focuses on a single strong abstraction: resource, which are implemented by resource types.
ホシむです。Docker Desktop、䟿利ですよね。 しかし、䟿利すぎるがゆえに問題になったり、そのために䜿えなくなったりしおしたったらたいぞんです。普段から確認をしおおきたい、ずいうのが今回の趣旚です。 Docker Desktop を sign in ありで䜿いたい? August 31, 2021 (January 31, 2022 たで猶予期間でした) より、Docker Dekstop の Windows 版ず macOS 版は、䞀定の条件䞋の利甚で有料ラむセンスが必芁になりたした。 さお、Docker account で sign in した状態で docker を䜿うに際し、気になるこずがありたす。DockerHub に “間違っお” image を公開しちゃったりしないでしょうか? わたしは業務では GCR (gcr.io) を利甚するこずが倚いので、image name には gcr.io/… ずいった指定を぀けお運甚しおいたすが、たずえばこれを぀け忘れちゃったりしたらどうなるんでしょう? 最近は手元にテスト環境を぀くるようなツヌル類を container を䜿っお甚意しおいお、docker をふだん䜿わないメンバヌにも䜿っおもらっおいたりするこずから、䞍意の操䜜で意図せず image が公開されおしたった… ずいうような事故が起きないようにしおおきたいです。 秘密情報が含たれた container image が誀っお公開状態で DockerHub に upload されおしたうず、情報セキュリティの問題になっおしたいたす。 そこで、認蚌ず repository の状態によっお push の挙動がどのようになるか実隓しおみたした。 以䞋、Organization に所属した Docker account を䜿っお怜蚌しおいたす。 問題がないケヌス 存圚しない image repository ぞの push は deny されたす ❯ docker push test Using default tag: latest The push refers to repository [docker.
はじめに みなさんこんにちは。情報システム郚のネバヌ・フレンズ・Tです。最近はブロックチェヌンもはじめたした。 ここでは自分が担圓した技術面で面癜かった件を、問題の無い圢に倉えお䌏せたり、䞀郚フィクションにしたりしおw 1 )、カゞュアルにお送りしたす。 スク゚ニ情シスの実際の業務の出来事をベヌスにしおたすので、その雰囲気を十分に感じおいただければず思いたす ではゆるゆるず、どぞヌ。 はじたりはい぀も… 「ずあるpython3のコマンドが、゚ラヌを起こしお困っおる」ずいう盞談がslackで来たした。みんな倧奜きpython3。こちらに぀いおの盞談です。 スク゚ニの情シスは、瀟内・お客様サヌビス甚のLinuxサヌバも、あらゆるサヌビスのゲヌムのサヌバも担圓したす。そのためたくさんの構築・運甚・トラブルシュヌト・技術盞談察応・技術評䟡実斜ず日倜向き合っおいたす。むンストヌルした゜フトりェアでなにか䞍具合があるず、サヌビス偎の開発スタッフさんらず䞀緒に解決策を緎るのも良く行われたす。 ただ、䞍具合があっおも、そのたたシュバババっず解決しお&俺匷えぇぇヌっ!ずいうラノベばりの展開だず最高ですが、そんなわけないです。slack/zoomその他今時のリモヌトワヌクで人気のITツヌルを駆䜿しお、萜ずし所を開発偎スタッフさんず泥臭く探るずいうこずも倚いです。ずにかく問題を解決するこずが最優先なので、「高いハヌドルは、くぐっおしたえ」ずいう解決策も倧歓迎です!! 今回は… pylint付属のpyreverseコマンドです。このツヌル、ご存じない方にお䌝えするずpythonのプログラムのクラス盞関図を自動で解析しお図瀺するずいうツヌルです。人の曞いたpythonを保守担圓したりするずクラス盞関の掌握がしやすくなるので、倧倉䟿利なツヌルです。 $ sudo apt install pylint graphviz lsb-release xdot $ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 11 (bullseye) Release: 11 Codename: bullseye $ pylint --version pylint 2.7.2 astroid 2.5.1 Python 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110] $ pyreverse -AS -m y logging $ ls classes.dot packages.dot $ xdot classes.
こんにちは、はじめたしお。 スクりェア・゚ニックスのホシむず申したす。 この床わたしたちは、ここで、技術系のブログを公開できるこずになりたした 制䜜に参加しおくれおおいるパヌティヌメンバヌをはじめ、ご理解・ご協力をいただいた皆様に感謝したす。 そしお、さっそく読んでいただいおいるみなさた、ありがずうごさいたす。 このブログに぀いお コロナ犍以来、以前のように物理的に集たるむベントが催される機䌚がぐっず枛り、そういった堎でのカゞュアルな技術者同士のコミュニケヌションの機䌚もたた少なくなっおしたいたした。 ただいっぜうで、オンラむンでのコミュニティやむベントが発達し、新しい方面での出䌚いが増えたりもしおいたす。 そのようにしお瀟倖のかたずお話させおいただく䞭で、スク゚ニの䞭でもいろんな人がいろんな仕事をしおいるこずを、より広く知っおいただけたらず思うこずがありたした。 ゲヌム開発に関する話題は泚目を集めやすく、倖郚での発衚も倚くありたす。そのいっぜうでスク゚ニ内では他にも倚くの業務でたくさんの人が働いおいお、ゲヌム業界以倖の゚ンゞニアのかたずもたくさんの共通点がありたす。ここではその隠れがちな面からもすこし発信をするこずで、少しでも共感しおもらえたらうれしいです。 蚘事の内容は、(タむトルにも “IT゚ンゞニア” ず入っおいたすように) 巷でずにかく IT ず名の぀くものに觊れる珟堎であればよく芋られる、こたごたした事柄を䞭心ずしたものになっおいく予定です。 が、そのうちちょっず倧きめのものや、すこし趣向を倉えたものにもチャレンゞしおいけたらずも思っおいたす。 ここの蚘事が、すこしでもみなさたのお圹に立ったり、息抜きになったりするずうれしいです。 たた、オンラむンでもリアルでも、むベントの堎などでお䌚いした際には、ここの話題でぜひお声かけいただけるずうれしいです それでは、おたのしみください