Open

Amazon Linux WorkSpaces で個別の作業環境を作り込む

18
sogaoh

稀に自宅を離れて作業をするようなケースに備えて、Amazon WorkSpaces の環境セットアップスクリプトを Ansible (2.9) ベースで整備している。

Python 2・3 と yum の絡みなどで苦戦したが、クリアして軌道に乗ってきた感じなので状況などをこぼしていくことにしてみます。

突然のスポット副業案件など発生したときに利用できたりしそうな気がしているのですがいかがでしょう。

sogaoh

Before Setup Process のあたりが煩雑な感じが否めない。
自分でないと(作るのに躓かないと)使いこなせない感はある。

sogaoh

断念したこと

  • Amazon Linux WorkSpace

    • パスワードなしで sudo(どう visudo で /etc/sudoers 弄っても聞かれる)
  • alw-provisioner

    • リモートクライアントからのセットアップ実行( 諦めて local での実行を前提にした )
    • amazon-linux-extras パートのインストール済みのパッケージをチェックして毎回 changed になるのを避ける
sogaoh

わかったこと

  • yum は python2 を土台に動く(python3 をデフォルトにすると dnf を要求されてコケる)

    • yum を使うところでは↓を入れる
      vars:
        ansible_python_interpreter: /usr/bin/python2
    
  • 同じ tail コマンドでも macOS (BSD?) と Amazon Linux 2 (GNU?) とで微妙に違う

    • 他にも、今後同様の何かがありそう
  • 暗号化したらWorkSpaceのイメージ採取できない

いろいろわかるとたのしい

sogaoh

気になってること

  • SSHだと接続が切れすぎる。tmux セッション張っておけば維持される?(まだ試してない)

refs Linux WorkSpaces の SSH 接続を有効にする - Amazon WorkSpaces

sogaoh

tmux セッション張れば維持される。
ただし、コンソール採取するとき流れちゃったのを取り戻せない。

スクロールバーの設定とかないかなあ・・・iTerm2

sogaoh

今のところこんな感じ。
次の大きな山は、IntelliJ IDEA のセットアップといった感じだろうか。

ところで、デスクトップで GIMP はどう起動するのかな?

sogaoh

Chrome ブラウザのインストール

https://qiita.com/rururu_kenken/items/d65657e5d7e9d19f9f76 に従った

起動は↓から

備考

GIMP は↓から

sogaoh

あとで /etc/yum.repos.d/google.chrome.repo は削除した。
amazon linux 2 判定の妨げになるケースがあったので。。

sogaoh

DevTools を呼び出すときは Command + Shift + i

sogaoh

Chromeブラウザ起動時に「ログインのキーリングのパスワードを入力してください」が出てきてうっとうしいのを解決できてない

sogaoh

docker-compose 起動に苦戦

インストール

  • docker をインストール(amazon-linux-extras 経由で済み)
  • python-pip2 をインストール(python-pip3 は入っていたけど宣言を追加しておいた)
  • pip install docker-compose でインストールは完了

起動できるまで

  • docker-compose up -d -> ダメ。 docker デーモン起動が必要
    • root になって(sudo su -) systemctl start docker でデーモン起動した
    • docker-compose 起動も sudo でやらないと即死する
      • docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
  • sudo docker-compose up -d -> 少し進むがネットワークの問題(名前解決できてない)
    • php_network_getaddresses: getaddrinfo failed
    • sudo docker ps したときの気になったメッセージ
      Domain Controller unreachable, using cached credentials instead. Network resources may be unavailable
      を調べてみた
      • ↓の有益情報を発見し、従った結果起動成功

https://aws.amazon.com/jp/premiumsupport/knowledge-center/dns-resolution-failures-ec2-linux/

sogaoh

IntelliJ IDEA (IDE) のセットアップ

こちらが、神情報
https://www.bonusbits.com/wiki/HowTo:Install_IntelliJ_IDEA_on_Amazon_Linux_Workspace

↑を Ansible Playbook 化して実行2.5発で導入完了

一発目

Makefile の一部(いきなり実行はせず、1回 -C をつけて dry-run )

ij:
	ansible-playbook _intellij-idea.yml -i "localhost," --tags=intellij-idea -K

_intellij-idea.yml


---
- hosts: localhost
  connection: local
  gather_facts: no
  vars:
    ansible_python_interpreter: "/usr/bin/python3"

  roles:
    - { role: intellij-idea, tags: intellij-idea }

roles/intellij-idea/tasks/main.yml


- name: Download IntelliJ IDEA
  shell: "wget https://download.jetbrains.com/idea/ideaIU-{{idea_version}}.tar.gz -P $HOME/Downloads"

- name: Make directory for Applications/idea
  shell: "mkdir -p $HOME/Applications/idea"

- name: Extract downloaded Archive
  shell: "tar -xzf $HOME/Downloads/ideaIU-{{idea_version}}.tar.gz --strip-components 1 -C $HOME/Applications/idea"

roles/intellij-idea/vars/main.yml


idea_version: 2020.2.4

二発目

(.zshrc に追記 : make dot)


+# IntelliJ IDEA
+export PATH="$HOME/Applications/idea/bin:$PATH"

あとはデスクトップに idea.sh の起動ショートカットを作成

何やらワーニング出てたけどいう通りにしたら解消

https://confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+Limit

sogaoh

それと、IDEのターミナルで新規ファイルや中間ファイル出力領域のオーナー・パーミッションを調整して上げないと、ちょいちょい躓くことがわかった。

たとえば、Laravel の storage ディレクトリや bootstrap/cache ディレクトリ
それと、php artisan make:test --unit .... で作成したファイルなど。

sogaoh

あと、これを設定した

sogaoh
  • docker のデーモン化

    • systemctl enable docker で済ませた
    • デーモン化必要なのをまとめてそうするパートをあとで整備したい
  • ホスト名は変えても AutoStop 後の再起動で戻ってしまう

  • Mackerel 解釈によると t3.medium の 2 CPU・4GB Memory なので Always On にしても月額 43 USD

    • 2ヶ月目(2020/12)の 40 時間を超えたらそうしようと思っている

https://aws.amazon.com/jp/workspaces/pricing/

ホスト情報