LoginSignup
7
3

More than 3 years have passed since last update.

本記事は、サムザップ 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

インストール完了後の起動画面
Screenshot_20191201-125242452.jpg

ここで、ls や df などのコマンドが使えることを確認した。
かなり便利だ。スマホでの作業環境構築が一気に捗った気がする。

(さぁ、移動しなくては。)

python のインストール

package リストに python があるのは確認済みなので何も考えずに実行してみる。

Termux上で実行

apt install python

pip を含めて使えるようになった。
python-pip.png

同じ要領で以下のパッケージもインストール

Termux上で実行

apt install git
apt install openssh

(ここで残り3時間程度。スクリーンショットの共有ができないくらいに空港のWi-Fiが弱い...)

ここまでで、python, pip, ssh, git のコマンドが実行できることは確認した。

さあ、搭乗時間が迫ってきた。anyenv化は将来的に対応するとして、aws-cli はめちゃめちゃ大事だ。これがなければ、何もできない....

Termux上で実行
pip install awscli

Screenshot_20191201-125629560.jpg

意外にさっくりできてしまった!
(搭乗手続きのため、中断。)
(気がつけば残り2時間程度。)

Termux上で実行
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 が使えるようにセッティング

Termux実行
mkdir ~/.ssh
touch ~/.ssh/config
vim ~/.ssh/config

ここで気が付いた... vimが標準インストールされていない...

Termux実行
apt install vim

(残り1時間20分)

Termux実行
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 をセット

Termux実行
vim ~/.bashrc

AWS_SECRET_ACCESS_KEY=****************************************
AWS_DEFAULT_REGION=ap-northeast-1
AWS_ACCESS_KEY_ID=********************
Termux上で実行
ssh leosuke@i-**************

result.png

セッションマネージャのプラグインがインストールされていない!
ということでインストールしようとしたが... 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 経由では接続できなかった。

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3