ギャバンITサービス
お菓子の家が作れるシステムエンジニアです

mac+Rancherを使ったdocker環境

x86でkubernetes維持はできるようになったけど、arm64でもやってみたい。 docker使える環境をM4macの中で作り、ビルドできるようにできたらarm64のkubernetesに持っていける。 今回はdocker環境でのビルドが目的なので、手っ取り早くrancher desktop使ってみる。 自分はlinuxのコマンドライン利用がdockerの入り口やったけど、普通はwindowsでwsl動かしといてその中でlinux稼働させて覚えてくんやろな。 前にdocker desktopが有償になって苦労してはったと思うけど、rancherに引っ越してる人も多いんかもな。 作成イメージ ⭐️印の箇所を作る。全体図デカなったな。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 <----------- M4 mac -------dev-> <--------------------- Windows11 pro VMware ----------------stg--> <-------- Google cloud ---prd--> +-macmini sequoia--------------+ +-local ubuntu24 linux -------+ +-local ubuntu24 linux--------+ +-GCE ubuntu24 linux----------+ | +-utm----------------------+ | | +-microk8s-------+ +-vmdk-+ | | +-docker---------+ +-vmdk-+ | | +-docker---------+ +--pv--+ | | | +-sequoia-------------+ | | | | +-Pod-------+ | | data | | | | +-container-+ | | data | | | | +-container-+ | | data | | | | | vscode/cyberduck | | | | | | Django | | | d1 | | | | | Django | | | d1 | | | | | Django | | | d1 | | | | | office/brew/rdp | | | | | +-----------+ | +------+ | | | +-----------+ | +------+ | | | +-----------+ | +------+ | | | +---------------------+ | | | | +-Pod-------+ | | | | | | +-container-+ | | | | | | +-container-+ | | | | | | +-ubuntu24 x86 (準備中)+ | | | | | mariadb | | | d2 | | | | | mariadb | | | d2 | | | | | mariadb | | | d2 | | | | | ctr microk8s | | | | | +-----------+ | +------+ | | | +-----------+ | +------+ | | | +-----------+ | +------+ | | | |+-container-+ | | | | | +-Pod-------+ | | | | | | +-container-+ | | | | | | +-container-+ | | | | | | ||kubernetes | | | | <- | | | xrdp-ubu24| | | d3 | | <- | | | xrdp-ubu24| | | d3 | | <- | | | xrdp-ubu24| | | d3 | | | | |+-----------+ | | | <- | | +-----------+ | +------+ | <- | | +-----------+ | +------+ | <- | | +-----------+ | +------+ | | | |+-container-+ +/data+| | | <- | | | | <- | | | | <- | | +-container-+ | | | | ||Django | | d1 || | | | | | | | | | | | | | gitlab | | | | | |+-----------+ +-----+| | | | | | | | | | | | | +-----------+ | | | | |+-container-+ | || | | | | +-Pod-------+ | +------+ | | | +-container-+ | +------+ | | | +-container-+ | +------+ | | | ||mariadb | | d2 || | | | | | https | | | d4 | | | | | https | | | d4 | | | | | https | | | d4 | | | | |+-----------+ +-----+| | | | | +-----------+ | +------+ | | | +-----------+ | +------+ | | | +-----------+ | +------+ | | | |+-container-+ | || | | | +----------------+ | | +----------------+ | | +----------------+ | | | ||xrdp-ubu24 | | d3 || | | +-----------------------------+ +-----------------------------+ +-----------------------------+ | | |+-----------+ +-----+| | | ||| | | |+-container-+ +-----+| | | +--smb share -----------------+ ||| | | ||https | | d4 || | | | windows smb share | ||| | | |+-----------+ +-----+| | | +-----------------------------+ ||| | | +---------------------+ | | ||| | +--------------------------+ | ||| | | ||| | +-rancher desktop ⭐️-------+ | ||| | | docker on lima | | ||| | | +-container-+ +------+ | | ||| | | | Django | | d1 | | | ||| | | +-----------+ +------+ | | ||| | | +-container-+ | | | | <-----------------------------------------------+|| | | | mariadb | | d2 | | | <------------------------------------------------+| | | +-----------+ +------+ | | <-------------------------------------------------+ | | +-container-+ | | | | | | | xrdp-ubu24| | d3 | | | | | +-----------+ +------+ | | | | +-container-+ +------+ | | | | | https | | d4 | | | | | +-----------+ +------+ | | | +--------------------------+ | | | | +-music----------+ | | | 8400(37GB) | | | +----------------+ | +------------------------------+ rancher desktopセットアップ 入れ方はこのへんで確認。 ...

macでteratermマクロのようなこと(妄想)

ローカルのlinuxへの接続やgoogle cloudへの接続では、windowsからはtera termのマクロを書いておいて、それを使って接続している。 macはunixなのでtera termが動くわけじゃない。 でもログインしたときに慣用句みたいに打つ内容があるから、自動ログインした後で打鍵もやらせたい。 dfの結果とか、自前スクリプトによるプロセス稼働確認とか。 今回はmac側でやったことの記録。 結論 macで.terminalのファイルをクリックすると、tera termでttlファイル書いておいたときのように、linuxに接続してコマンドラインを自動入力して動いてくれるようにしてる。 ローカルlinuxの場合、黄色い画面色で開いてログインし接続後にonlchkってやって自前スクリプトを呼び出し、システム状態を表示させてる。 色合いとか調整した設定を.terminalって種類のファイルとして書き出し、それをクリックすることで自動接続&打鍵のスクリプトを呼び出している。 このスクリプトは大昔に作ったんやけど、当時に参考にさせてもらったサイトがどこなのかわからん。もう存在しないのかなぁ。探し方悪いだけかもしれん。 用意してるのは3種類のファイル。 当初はlinuxの種類に応じて色を変えたいだけだったけど、欲張って自動ログインとシステム状態確認をやらせたくなった。 .terminalの設定ファイル autologinってログインのための入力内容 呼び出しのスクリプト .terminalの設定ファイル 設定ファイルは、ダブルクリックすると設定した色合いやサイズ、シェルが起動する。 tera termでいう/Fで指定するウィンドウの色とか指定するときのファイルみたいなもんか。 このファイルは、ターミナルの環境設定を開いたとき「プロファイル」の画面が開くとこから作る。 テキストの色とかウィンドウサイズを設定し、「コマンドを実行」ってとこで起動時に呼び出すシェルを指定する。 自分の場合は、赤がgoogle cloud、黄色をローカルlinux、dockerコンテナを青か緑にしてtera termの色設定しているので、それに寄せて設定を作っている。 エコーバックに対する文字列送信のスクリプト tera termでいうttlファイルみたいなもの。 autologin-xxx.shってのをいくつか用意して、ローカルlinux用とgoogle cloud用とか使い分けてる。 実際は.terminalで設定した起動時の呼び出しスクリプトから最初にインクルードさせて使う。 autologinで始まるシェルに引数を受け取りつつ、打鍵内容を書いておく。 パラメータは、接続先ホスト、利用osユーザ、パスワード、ポート番号。 コマンドラインのエコーバックに来た文字列をexpectに書いておき、それに対する送信文字列をsendさせる。 最初のほうにある「Are you sure~」のあたりは初めてログインするときの確認エコーバック。 長らくこのエコーバック見てないけど、大文字小文字も厳密に書かないといけない。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #!/bin/sh auto_ssh() { host=$1 id=$2 pass=$3 ptNum=$4 ptTime=10 expect -c " set timeout ${ptTime} spawn ssh ${id}@${host} -p ${ptNum} expect \"Are you sure you want to continue connecting (yes/no)?\" { send \"yes\n\" expect \"${id}@${host}'s password:\" send \"${pass}\n\" } \"${id}@${host}'s password:\" { send \"${pass}\n\" expect \"nari\" send \"onlchk\n\" expect \"nari\" send \"df -h\n\" } interact " } montereyになった今ではnari@gvisMac ~ %って感じで「利用ユーザ@ホスト名 ホームディレクトリ」がコマンドライン待ちに来るけど、ユーザ名のみをexpectさせてonlchkとdf -hって打たせたいので書いてる。 ...

utmの中で動くmac(sequoia)でbrew doctorの警告回避

去年にsequoiaが動くmac m4を使い始めて、vmwareの代わりに utm入れてさらにsequoiaを稼働 させるようにした。 utmの中のsequoiaは前に使ってたintel macからデータ引越してるんやけど、ずっと放置してた警告No Cask quarantine support available: unknown reasonを回避してみた。 utmをホストしてるmac miniではこの問題発生せんかったし、intelからm4に引っ越してbrew使い続けたときだけ出るエラーなんとちゃうかなぁ。 警告の内容 こんなん出てた。 1 2 3 4 5 6 7 nari@gvis-mac script % brew doctor Please note that these warnings are just used to help the Homebrew maintainers with debugging if you file an issue. If everything you use Homebrew for is working fine: please don't worry or file an issue; just ignore this. Thanks! Warning: No Cask quarantine support available: unknown reason. ⭐️何だチミは nari@gvis-mac script % brewの状態はこんな感じ。brewはrubyで実装やったな。 ...

 ⭐️

macでwinmergeみたいなこと

djangoのソースいじったり、linux/mac/windowsのスクリプトを維持したり、この文章もgoogle cloudで動かしてるgitlabのコンテナに入れてる。 更新差分を確認するのは、ずっとwinmerge使ってるんやけど、macでも同じようなことできるんとちゃうか。 探してみたらあった。 DiffMergeってのがあるそうな 総本山はここ。 SourceGear | DiffMerge www.sourcegear.com 本来はプログラムをマージしてくのが目的なんやけど、自分は直近1年ぐらいの変遷がわかったらええ。 ファイルのありなしと、書いてる内容の差分が見えたらいったんOKやねんけどね。 macで書いてから、gitlabに登録してgit cloneしたあとに、内容が維持できてるかが見れるのが自分としての目的。 入れてみましょ。 ダウンロードするdmgファイルの名前にintel stableってあるけど、macやからm4でもうまいことやってくれるはず。 Extrasって書いてあるフォルダには実行には関係なさそうなファイルが入ってるから放置。 Applicationsのフォルダのエイリアスあるから、ドラッグして起動させてみたら動くやん。 brewでもインストールできるで。こっちのほうがバージョンアップ維持しやすいかも。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 nari@gvis-mac ~ % brew install --cask diffmerge ==> Downloading https://formulae.brew.sh/api/cask.jws.json ==> Caveats diffmerge is built for Intel macOS and so requires Rosetta 2 to be installed. You can install Rosetta 2 with: softwareupdate --install-rosetta --agree-to-license Note that it is very difficult to remove Rosetta 2 once it is installed. ==> Downloading https://download.sourcegear.com/DiffMerge/4.2.1/DiffMerge.4.2.1.1013.intel.stable.dm ############################################################################################# 100.0% ==> Installing Cask diffmerge ==> Moving App 'DiffMerge.app' to '/Applications/DiffMerge.app' ==> Linking Binary 'diffmerge.sh' to '/opt/homebrew/bin/diffmerge' ==> Linking Manpage 'diffmerge.1' to '/opt/homebrew/share/man/man1/diffmerge.1' 🍺 diffmerge was successfully installed! nari@gvis-mac ~ % エンコードとか初期設定 インストーラがあるアプリケーションやったら言語で日本語選べることもあるけど、macのソフトウェアは日本語でストレートに動きだすことは少ない。 ...

 ⭐️

macOS-Sonomaへ引っ越し

venturaに切り替えたときの方法 からまたもや1年。昨日にmacOS14のsonomaが公開されてた。 今年も勉強しましょ。 windows11pro上のVMware Player 17にmacOS 14 Sonomaをインストールしてく。 前は16やったけど、いつやったか17に上げてunlockerも入れてた。 appleの公開情報 にはまだSonomaのインストーラのことは書いてへん。 少しググるとyoutubeで sonomaのインストール やってる人の動画があった。 去年ventura入れるのに使ったコマンドラインを少し読み替えたら、やっぱできるんやな。作者さんありがとう。 ホンマはonyxが使えるようになるの待ってるんやけど、やっとこ。 今年からkubernetes使ってるから、そこがすぐには使えへんかもなぁ。 macos14の確認 毎年10月末になったら更新が通知されてたけど、今年は9月末。 今年は猛暑でシャインマスカット安くておいしくなってたな。sonomaの導入はシャインマスカットほど甘くないかも。 おーし、アップデート通知来てるやん。 ここではアップグレードせず、app store起動してダウンロードする。 クリーンアップに使うonyxはsonomaのリリース日の10〜15日後に出てくるはずなので、使いながら待つ。 isoファイルの準備 別ホスト作ってインストールするから、isoイメージを準備。 まずはapp storeでダウンロードすると、10分もかからずすぐに終わる。 インストーラが起動するけど、そのままは使わない。アップデートしたかったらやったらええ。 いったんインストーラは終了。 今年のインストールメディアの作り方 さっきのyoutubeの動画の下に、コマンドラインがあったので参考にして使わせてもらった。 去年とその前はvmdkを作ってやってたけど、/tmpの下に.dmg作って.cdrファイル作ってから.isoにリネームしてる。 ダウンロード待ちながらコマンドラインを準備した。 本質的には毎年変わらん。 旧macos(macos13)で新macos(macos14)のインストールメディア作って、vmwareの中で新ホストにマウントしてインストールするって流れ。 空ディスクを作る(去年は14GB、今年は16GB)。 hdiutil create -o /tmp/Sonoma -size 16G -volname Sonoma -layout SPUD -fs HFS+J 作ったディスクをマウントする hdiutil attach /tmp/Sonoma.dmg -noverify -mountpoint /Volumes/Sonoma インストール用iso作成 sudo /Applications/Install\ macOS\ Sonoma.app/Contents/Resources/createinstallmedia --volume /Volumes/Sonoma --nointeraction 空ボリュームをアンマウントする hdiutil eject -force "/Volumes/Install macOS Sonoma" CDRを作ってisoイメージに変換する 1 2 hdiutil convert /tmp/Sonoma.dmg -format UDTO -o ~/Desktop/Sonoma mv -v ~/Desktop/Sonoma.cdr ~/Desktop/Sonoma.iso 実際にやったらこんな感じ。 ...

 ⭐️