複数のマシンに同時に同じコマンドを送る - pdsh

複数のリモートマシンに同時に同じコマンドを送るツールpdshについて。 hadoop系はsshコマンドを使用してリモートマシンでコマンドを実行することが多く、pdshもよく出てくるので、ここでまとめておく。 ここでは、以下の通り、driverノードからworker1ノード, worker2ノードの2台に同じコマンドを送る例を見ていく。 worker1 ┌─────► 192.168.64.4 driver node │ 192.168.64.3 ───┤ │ worker2 └─────► 192.168.64.5 Installation 基本的にapt, yum, brewなどのパッケージャで対応している。 $ sudo apt install pdsh $ pdsh Usage: pdsh [-options] command ... -S return largest of remote command return values -h output usage menu and quit -V output version information and quit -q list the option settings and quit -b disable ^C status feature (batch mode) -d enable extra debug information from ^C status -l user execute remote commands as user -t seconds set connect timeout (default is 10 sec) -u seconds set command timeout (no default) -f n use fanout of n nodes -w host,host,....

January 1, 2023

公開鍵認証でsshにパスワードレスでログインする

公開鍵を登録して、SSHにパスワードレスでログインする方法を書いていく。ついでに、 その際に使う.ssh/authorized_keyファイルのオプションについても簡単にまとめておく。 ┌─────────────┐ ┌─────────────┐ │ 192.168.1.1 │ │ 192.168.1.2 │ │ │ ssh │ │ │ host_A ├──────────►│ host_B │ │ (client) │ w/o passwd│ (server) │ └─────────────┘ └─────────────┘ ssh_id ssh_id.pub [private key] [public key] クライアントホスト上で鍵を生成する 秘密鍵と公開鍵のペアを生成する ### host_A上 $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa デフォルトでは.ssh/配下に秘密鍵(id_rsa)と公開鍵(id_rsa.pub)が生成される。 ### host_A上 $ ls -l .ssh/ total 20 -rw------- 1 ubuntu ubuntu 2602 Dec 31 12:39 id_rsa -rw-r--r-- 1 ubuntu ubuntu 571 Dec 31 12:39 id_rsa....

December 31, 2022

Docker Mailserverのメールアカウント管理

Docker Mailserverを構築した後は、メールアドレスの追加・削除が非常にシンプルにできる。 基本的には、Docker Mailserverに含まれるsetup.shコマンドで管理可能になっている。 メールアカウントの追加・削除・管理 ### 追加 $ ./setup.sh email add [email protected] [パスワードの入力] ### パスワード変更 $ ./setup.sh email update [email protected] [新しいパスワードの入力] ### リスト $ ./setup.sh email list [email protected] * [email protected] ( 572K / ~ ) [0%] ### 削除 $ ./setup.sh email del [email protected] メールアカウントの追加後はdockerコンテナの再起動せずに変更が適用される。 エイリアスの追加・削除・管理 メールアドレス・アカウントを作るのではなく、複数のメールアカウントの受信を一つのメールアカウントで対応したい場合は、エイリアスを使う。 ### [email protected]宛のメール => [email protected]で受ける ./setup.sh alias add [email protected] [email protected] ### 確認 ./setup.sh alias list [email protected] [email protected] ./setup.sh email list * [email protected] ( 572K / ~ ) [0%] [ aliases -> desk@m....

January 31, 2022

Docker MailserverでEmailサーバーを10分で立てる

何かしらサービスを申し込む際にはメールアドレスが必要になる。 Docker Mailserverを使って、Docker環境でさくっと立てる方法を書いていく。 今日日、どのISPでもクラウドでも、スパム対策でデフォルトでOutboundのport:25が開いていない。ので、何も考えずにサーバーを立てると、Emailの送信ができない。けど、受信だけできれば十分な場合が多いので問題ない。 送信できるEmail環境構築については、この記事で解説しています。 要件 基本的にdockerおよびdocker-composeの環境があればよい。 docker docker-compose 0. 今回想定する環境設定の値 項目 値 メールサーバ OS Ubuntu Linux メールサーバ Public IP 11.22.33.44 作業ディレクトリ /home/ubuntu/docker-mailserver メールサーバのホスト名 mailserver.example.com メールアドレスのドメイン @m.example.com メールアドレス [email protected] 1. Linuxホストを用意する PublicからアクセスできるLinuxマシンを用意する。ここではAWSのEC2にUbuntu環境を想定する。 LinuxホストのPublic IP: 11.22.33.44 2. LinuxホストのNWポートを開ける 以下のポートの受信を許可する。 Inbound port: 25, 80, 143, 587, 993 EC2の場合はセキュリティグループの設定をする。 port:80はSSL証明書(Let’s Encrypt)の取得・更新のために開けておく。...

January 29, 2022

MultipassでM1 MacでもVagrant的にLinux仮想マシンをサクッと立ち上げる

Linuxの仮想環境 on M1(Apple Silicon) Apple SiliconのCPUを搭載したMac(通称"M1 Mac")を購入して、ファンレスでこのパフォーマンス、しかも熱くならない、バッテリー持ちがすごい、何に安い!、などなど、いい意味で衝撃を受けています。 一方で、エンジニア目線で気になるのは、ちゃんと開発ツールが動くのか、だと思います。 特に、LinuxのVM環境は必須で、作っては壊し、壊しては作る(Build & Scrap!)をカジュアルにできないと何かと困ります。これまではVagrant+VirtualBoxでその環境を整えてきたのですが、M1 Macではこれができません。 Multipass そうこうしているうちに、Ubuntuでお馴染みのCanonicalからMultipassというツールが出てきました。これは、Ubuntuに限られるのですが、Vagrant的にLinux VMを作って・壊すというのがすぐにでき、かつ、M1 Macにも対応しているので、Vagrantのワークフローと同様のことがM1 Mac上でできてしまします。 以下、Multipassの簡単な使い方を見ていきます。 Multipassのインストール Multipassの公式ページもしくはgithub Releaseからバイナリ(パッケージ)をダウンロードできます。通常通り、ダブルクリックでインストールできます。 インストール後はターミナルからコマンドを実行して確認できます。 % multipass version multipass 1.8.1+mac multipassd 1.8.1+mac 基本的な使い方 起動・shellログイン・停止・削除など一通りやってみます。 起動 まず、利用可能なUbuntuのversionをリストします。 % multipass find Image Aliases Version Description 18.04 bionic 20220104 Ubuntu 18.04 LTS 20.04 focal,lts 20220118 Ubuntu 20.04 LTS 21.10 impish 20220118 Ubuntu 21.10 LTS(Long Term Support)版と最新のversionは利用可能になっています。 Ubuntuのversionを指定してVMを起動します。指定しない場合は一番新しいLTSが使われるようです。 ## デフォルトのUbuntu LTSで立ち上げる % multipass launch -n my-ubuntu-123 ## Ubuntu focalで立ち上げる % multipass launch -n my-ubuntu-123 focal ## CPU=2コア, RAM=2GB, Disk=10GBで立ち上げる % multipass launch -n my-ubuntu-123 -c 2 -m 2g -d 10g Shellにログインする % multipass shell my-ubuntu-123 ubuntu@my-ubuntu-123:~$ pwd /home/ubuntu ....

January 25, 2022

Redashをarm64系で動かす

最近M1 macを買ったり、Raspberry PIで遊んだり、AWSのGraviton2の無償インスタンスを試したり(2021年末で終了)、Oracle CloudのAmpere A1 Computeをゲットしたりと、気づくとARM64系の環境に囲い込まれてしまいました。Intel系は仕事で使っているMacbook Proくらいですかね。 いざ、RedashをARM上で動かそうとしたら、公式のDocker imageはamd64のみの対応で、そのままでは動かすことできないことがわかりました。 手元にあるARM64環境でDocker Imageをbuildしました。コードは以下のgithubレポにあります。 github: redash_for_arm64 すでにBuildしたImageはgithubのcotainer registry上においたので、そこからpullできます。

January 9, 2022

lftpでファイル転送系をまとめる

lftpについて 概要 次の3点: ファイル転送系のCUIでいろいろ使える(FTP, SFTP, FTPSなどファイル転送系のプロトコルはだいたいサポートされている mirrorコマンドでリモート/ローカルでファイル・ディレクトリを丸ごと同期することができる(rsync) 並列転送をサポートしているので,LONG FAT PIPEな環境でも高速にファイルが転送できる. インストール だいたいのプラットフォームでパッケージが用意されている. macOSだとbrewで,ubuntuだとapt-getで瞬時に導入できる.おそらくCentOSのyumでもパッケージが提供されているはず. macOS$ brew install lftp ubuntu$ sudo apt-get install lftp Hellow World! 1. FTP系のコマンド FTPコマンドがカバーされている. get put mput lcd !pwd その他もろもろ ということで,FTP意外のプロトコルを使う場合でも,基本的にコマンド操作を統一化できる.webホスティングサービスによっては,ファイル転送で許可されているプロトコルが異なるのだが,lftpを使っておけばそこら辺を吸収することができる.引越しが楽になる. あとは,SFTPがサポートされているので,サーバ側にsshd(+sftpの許可設定)を立てておけば,セキュアにファイル転送が可能になるのがうれしい.tab補完も効いているので,shellでインタラクティブに作業するときには助かる. 例えばsshdが立っているリモートのサーバ(remote.site.com)からhtmlファイルをダウンロードする(mgetする)には,以下のような感じになる. $ lftp -u user123 sftp://remote.site.com Password: <= パスワード入力 lftp [email protected]:~> ls drwxr-xr-x 4 user123 user123 4096 Mar 21 13:56 . -rw------- 1 user123 user123 9296 May 31 12:54 .bash_history -rw-r--r-- 1 user123 user123 220 Jan 5 00:03 ....

May 31, 2017