【Mac M1環境】Googleクラウド上のUbuntu仮想インスタンスに対して、ファイル共有をする方法。

３連休明けですが、連休中に日曜大工でハマったので、記載しておきます。

１
Ubuntuサーバを構築する必要があり、Mac M1上でUTMという環境を構築して、Ubuntuを実装しておりました。
尚、Mac M1は、VMWareやOracle Fusionと言ったメジャーな仮想環境に未だ対応しておりません。したがって、UTMと言うマイナーな環境を使うしか方法は無いのです。（開発者は、Mac　M1を使うのは辞めた方が良いと心底、思います。）
この辺の記事はこちら。

https://qiita.com/naiveprince0507/items/c32fea219e5dc0e0a353

しかしながら、このUTMですが色々と問題があります。マイナーなソフトと言うこともあるのでしょうが、ネット上に転がっている情報も少ないし、機能も低レベルなので、複雑な操作が不可能な事が判明しました。
従って、かなり頑張ったが、UTM環境でのUbuntu仮想インスタンス構築を諦めをつけるのに、丸一日が消えた。

2
Ubuntu仮想インスタンスを構築するのに、いくつかの新しいクラウドサービスを試しました。AWSやGoogle Cloud（GCP)は少し飽きたので、別のを使ってみようと色気を出したのが運の尽き。結論から言うと、AWSやGCP以外は、色々と問題がある。
GmailやHotmailみたいなフリーアカウントでは、アカウントが作成できないとかもあったのだが、これらが、マニュアルに記載してないと言うクラウドサービスもあった。（フリーがダメとマニュアルに書いてあれば何の問題もないのだが、未記載なので、かなり試行錯誤した。）
結論として、AWSやGoogle Cloud以外はダメだと言う当たり前の結論に落ち着いた。
従って、これでまた丸一日が消えた。

3
で、結局、３連休の最後の日に、「やはり、Google Cloud(GCP)で行こう！」と決めた。
Ubuntu仮想インスタンスの作成は、GCP上で一瞬でできたのだが、Java環境の構築で戸惑った。
Ubuntuでは、ソフトウェアのダウンロードは、wgetコマンドでやれば普通に行くのだが、下記サイトに記載されている通り、Javaのダウンロードでは、「ライセンスの同意」をチェックしないとDLできない。つまり、wgetコマンドでDLできないと言う状況に陥った。

https://open-groove.net/java/jdk-wget/

＞Oracleのサイトからローカルに落として、サーバに転送して、なんて面倒くさいからサーバから直接取得したいとき。ライセンスの同意か何かの問題で、そのままwgetできない。

そう言う訳なので、結局、Mac PCに一旦、DLして、それをGCP上のUbuntuサーバにアップロードするしかないと言う、いつもの結論になるのだが、これが面倒臭い。
（いつも思うのだが、GCPもAWSもこのホストマシンとのファイル共有をクリック一発とかで出来る様にサービス開発をしてくれないものか？）

4
と言う訳で、ファイル共有用に、Sambaサーバの構築です。
まあ、先にも書いたのですが、「ホストマシンとクラウド上の仮想インスタンス間でのファイル共有でここまでやりたくない。」とは、多分、世界中の人が思うでしょうし、私自身も10年前から思っていたが、やはりこれしかないです。
Sambaの設定としては、下記の通りだと思います。
Sambaのインストールと設定まで。

https://tamnology.com/ubuntu-samba/


Sambaの再起動による設定反映と、常時サービス化について。

https://wnohonoho.hatenablog.com/entry/2020/05/05/183549

Samba Setting （必要な設定は上の２つのファイルに別々に書かれているので、一応、下記に必要設定を纏めた。）
```
testtest0719@ubuntu0721:~$ sudo apt install samba

testtest0719@ubuntu0721:~$ sudo pdbedit -a testtest0719. #Sambaへのアクセスアカウントを作成
new password:
retype new password:

testtest0719@ubuntu0721:~$ 
testtest0719@ubuntu0721:~$ sudo mkdir /home/share
testtest0719@ubuntu0721:~$ 
testtest0719@ubuntu0721:~$ 
testtest0719@ubuntu0721:~$ sudo chmod 777 /home/share
testtest0719@ubuntu0721:~$ 
testtest0719@ubuntu0721:~$ 
testtest0719@ubuntu0721:~$ sudo vi /etc/samba/smb.conf　　

# 下記を追加を、smb.confの一番下部に追記
# [share]
# path = /home/share/
# browsable = yes
# writable = yes
# guest ok = yes
# read only = no

testtest0719@ubuntu0721:~$ sudo systemctl restart smbd nmbd   # sambaを起動

testtest0719@ubuntu0721:~$ sudo systemctl enable smbd　　　#sambaを常駐化
Synchronizing state of smbd.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable smbd
testtest0719@ubuntu0721:~$ 
testtest0719@ubuntu0721:~$ 
```


5
で、ここからが意外と参ったので、補足しておきます。
SambaをGCPの仮想インスタンス（Ubuntu）にインストールした後に、Samba用のポート（TCP１３７〜１３９）をGCPのFirwallで開ける必要があるのだけど、ここの設定にGCP独特の癖がある。（簡単ではいかない。）
普通に考えれば、仮想インスタンス上で、"TCP137-139 allow"と設定すれば良さそうだが、GCPの場合は、「VPCネットワーク」→「ファイアウォール」でポリシー設定(今回は、smb0719と設定）して、そのポリシーを別画面（該当のVMインスタンス画面）で、適用すると言うことをしないといけません。

![0719a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1665829/041d8e09-dadc-5200-9836-cdaf057498dd.png)

![0719b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1665829/84981ee3-87a5-3004-b6a9-135a8e2f9a70.png)

https://eightyfivelife.com/2019/09/google-cloud-platform-firewall-setting/

ここまでやって、やっと、ホストマシンから、GCP上の仮想インスタンス（ubuntu)にアクセスして、ファイル共有ができます。


尚、Mac　PCでWindowsライクなRemote　Desktopを使って、Ubuntuにアクセスする方法はここに記載されております。

https://www.yokoweb.net/2022/05/03/ubuntu-22_04-desktop-rdp-remote/#:~:text=Ubuntu%E3%81%AE%E7%94%BB%E9%9D%A2%E5%85%B1%E6%9C%89%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%E3%80%82,%E5%90%8D%E3%81%A8%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E3%82%92%E8%A8%AD%E5%AE%9A%E3%80%82