本記事は、サムザップ Advent Calendar 2019 #2 の初日の記事です。
#前書き
普段は SRE として既存タイトルの保守運用・改善を行いつつ、新規プロジェクトへ向けた標準化、構築運用がメインタスクです。他にもエンジニア採用と育成など、幅広く業務を行なっています!
この記事は出張前の6時間(移動時間含む)を使ってどこまで Android端末に開発環境を整備できるかトライした記事になります。(スクリーンショットは後から取得したものです。)
#やりたいこと
- PCを持ち歩くのが辛いので、普段使いのAndroid端末を開発作業環境にする
- 個人の開発環境は、AWS と python に依存しているので使えるようにする
- ssh (4G回線なので固定IPが使えないので、SSMで代用できないか検証)
- python (できれば anyenv 経由の pyenv でインストールしたい)
- pip で aws-cli を使えるようにする
- bash / zsh のスクリプトが書けること
やったこと
さあ、残り5時間半で頑張っていきます!
Andoird で Terminal が使えるようにする
2019年12月現在、terminal emulator は数多く Goole PlayStore に登録されてる。
Termux を見つけた。
基本的なシステムコマンド or ssh のみ使えるものが多いが、Termux はaptやpkg を用いてパッケージの追加が可能だ。
https://github.com/termux/termux-packages
ここで、ls や df などのコマンドが使えることを確認した。
かなり便利だ。スマホでの作業環境構築が一気に捗った気がする。
(さぁ、移動しなくては。)
python のインストール
package リストに python があるのは確認済みなので何も考えずに実行してみる。
apt install python
同じ要領で以下のパッケージもインストール
apt install git
apt install openssh
(ここで残り3時間程度。スクリーンショットの共有ができないくらいに空港のWi-Fiが弱い...)
ここまでで、python, pip, ssh, git のコマンドが実行できることは確認した。
さあ、搭乗時間が迫ってきた。anyenv化は将来的に対応するとして、aws-cli はめちゃめちゃ大事だ。これがなければ、何もできない....
pip install awscli
意外にさっくりできてしまった!
(搭乗手続きのため、中断。)
(気がつけば残り2時間程度。)
aws s3 ls
2019-02-01 18:20:37 **********************************
2019-01-01 20:13:29 **********************************
2018-12-01 16:31:29 **********************************
2018-11-01 16:36:22 **********************************
2018-10-01 11:06:09 **********************************
実行確認をした。(モザイクが面倒だったので、テキストをコピペしました。)
ssm が使えるようにセッティング
mkdir ~/.ssh
touch ~/.ssh/config
vim ~/.ssh/config
ここで気が付いた... vimが標準インストールされていない...
apt install vim
(残り1時間20分)
vim ~/.ssh/config
Host i-* mi-*
ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
これはインスタンス名を指定した時に、自動で ssm を経由してポート解放せずログインできるようにするおまじない。ただし、対象のEC2にはインスタンスロールなどで、ssmによるログインを許可しておく必要がある。
その辺りは、AWS Systems Manager のセットアップを参照してくだされ。
aws コマンドが使えるように credential をセット
vim ~/.bashrc
AWS_SECRET_ACCESS_KEY=****************************************
AWS_DEFAULT_REGION=ap-northeast-1
AWS_ACCESS_KEY_ID=********************
ssh leosuke@i-**************
セッションマネージャのプラグインがインストールされていない!
ということでインストールしようとしたが... windows用のexe, amd用のrpm と deb しかなく....
alienコマンドで変換してファイル共有してみたが... イントールできなかった。
さらに aws help
を利用しようとしたら、groff がなく... groffもインストールできなかった。
(ここで時間が終了。作業時間は3時間弱くらい。)
まとめ
Android 端末で実現できなかったことがあるものの、割と使える環境が整った!
(記事に書いていない部分の後悔としては、bluetooth キーボード。トラックパッドがないものを買ってしまったのがよくなかった)
改善したい点は、termux で aws session-manager-plugin と groff がインストールできなかった。Groffはアウトプットフォーマッタだが、こんなに影響範囲があるとは思わなかった。session-manager-plugin の rpm や deb ファイルのアーキテクチャを amd64 から aarch64 に変換する方法も検討したが、無理だった。
ひと昔前なら root 化しなくてはできなかったことが、端末スペックの向上とアプリケーションによって割と簡単に導入できるようになった。少ない時間でゴリゴリと進められて良かったので、Termux の disabled-packages を使えるように コミットしていこうと思った。
明日は @hiroki_shimada さんの記事です。
ーーーーーー
後日談
mac の bundle用 Python スクリプトでインストールしてみた。
kex_exchange_identification というエラーが出て結局 ssm 経由では接続できなかった。