ヒスねこTechBlog

日々の気になる技術をまとめてます。

PythonでDocker操作お試し

Docker SDK for PythonでDockerを操作してみたメモです。 環境構築 今回の環境はUbuntu20.04です。インストールはDocker公式ページを参照します。 docs.docker.com また、ユーザをグループに属させることでsudoなしでdockerを実行するようにします。 # 以下…

Flask小技メモ

この記事は随時更新していきます。 WTFormsで動的なSelectField 例えば下記のようなクラスになっていて、データベース上にあるresourceのidとnameを取得してきて、idをフォームの値とし、nameを選択肢として出したい。 from flask_wtf import FlaskForm from…

KVMとOVSでネットワーク接続

N番煎じ感がありますが、OVS(Open vSwitch)とKVMの組み合わせを試してみます。 環境はUbuntu 20.04(x86_64)です。 ブリッジの作成と接続 まずはOVSのパッケージをインストールしておきます。 $ sudo apt install openvswitch-common openvswitch-switch 早速…

仮想ネットワーク周りのipコマンドメモ

あんまりネットワークをガチガチにやってこなかったのもあって、ipコマンドで色々試したことを備忘録として残します。 以下、権限によってsudo付加が必要。また、リブートすると設定は解除される。永続化したい場合は静的ルーティングを設定してあげなければ…

Pythonで仮想マシン管理いろいろ

Ubuntuの自動インストールはできたので、Python使ってvirshの代わりになるような基本操作をやってみました。 techblog.hys-neko-lab.com VMの起動 virsh startと同じ操作です。libvirtのAPI一覧で「start」とかでページ内検索してもドンピシャのものがないな…

Ubuntu autoinstallでsshをセットアップ

cloud-initを使用したUbuntuのautoinstallで、sshを自動セットアップする方法です。前回長めの記事になってしまったので、今回は短めにまとめようと思います。 techblog.hys-neko-lab.com 下準備 クライアント側で、ssh-keygenによるキーペア生成をしておき…

cloud-initとlibvirtでVMに自動OSインストール

Ansibleほど大規模にVMを構築する気はないけど、OSのインストールは対話的にでなく自動で行いたい、という場合はcloud-initが選択肢に入るらしい。ちょっと試してみましょう。 セットアップ 今回はUbuntu20.04(x86_64)でやってみました。 $ sudo apt install…

gRPCをラズパイ3+Pythonで試す

gRPCを試してみました。 準備 gRPC試したいだけなら環境は正味なんでもよいと思いますが、今回はラズパイ3でPython製サーバを立ててみます。 まずはPythonの開発環境を整えます。Raspberry Pi OSは標準でPythonが入っていましたが、pipは入っていませんでし…

Raspberry Pi 3にQEMUを入れたりlibvirtを試したり

ARMv8から仮想化支援機能が実装されているので、Raspberry Pi 3(Cortex-A53コア)以降はKVMが使用可能とのこと。前々から気になっていたlibvirtのお試しもかねて導入してみました。 HW準備 ラズパイは4まで出ていることはもちろん知っているんですが、昨今の…

tarを展開する(おためし)

よく発作的に、何かのファイルフォーマットだとかプロトコルの中身が気になったりします。きっと持病なんだと思います。 Dockerイメージの話の絡みで、tarってどうなっているんだろうと考え始めてしまいました。 アーカイブとしてファイルをまとめただけです…

DockerイメージをOverlayFSでマウントする

前回記事で、Dockerイメージ内に含まれるmanifest.jsonがレイヤ構成を教えてくれることがわかりました。 このレイヤ構成の情報を使用して、OverlayFSでマウントしてみます。 techblog.hys-neko-lab.com 今回やることの概要 OverlayFSでDockerイメージをマウ…

Dockerイメージの観察

Dockerイメージの中身を簡単に見てみました。 イメージのビルド 調査用であまり複雑なイメージを使いたくなかったので、scratchからビルドすることにしました。 まず適当なファイル(hello.txt)を用意します。 Hello, world! 次にDockerfileを作成。 FROM scr…