Parallels Desktop 16 for Mac で CentOS 7 を目立たないようにコマンド起動

Macユーザーですが、Windows 10 も顧客のサポートのために必要なことがあるので、 **Parallels Desktop** は導入済みでした。

一方、MacでLinuxのアプリ開発において使うような Docker とか imagemagik だとか、Vue.js とか、もっと言えば rbenv なんかでさえも、 **「Macの環境を汚すのでインストールしたくない！」** という説明しがたい感情がありました。

そこで、Parallels Desktopに、CentOS 7 を導入して、そのVMボリューム（ファイル）の中でこういった「汚い？」ことは完結させることにしました。

Parallels Desktopでの CentOS 7の導入自体の説明は省きますが、それをコマンド起動したり、Parallelsのアプリのウィンドウを表示しなくしたりといった設定を以下にまとめます。※Parallels Desktop 16の現時点です。

ParallelsでCentOS 7 をインストールが終わると、 `Parallels` というユーザーがデフォルトで作られ、GNOME が起動し、`Parallels` パスワードを設定してくださいという画面になりパスワードを決めて入力します。そこまでは、とりあえず終えているとします。

### Macターミナルからのssh接続

Paralells では、CentOSを起動中、Macの```/etc/hosts``` に、自動的に以下が追加されるようです。(``10.XXX.XX.X`` の部分はParalellsが自動で決めたVMのIPアドレスです）

```
10.XXX.XX.X    	centos7.shared centos7 #prl_hostonly shared
```

ですので、Macのターミナルアプリから

```
% ssh paralells@centos7
parallels@centos7's password: 
```
で接続できます。パスワードは、最初に設定したパスワードです。
ParalellsのCentOSを終了すると、``/etc/host`` は自動的に元に戻るようです。

### Dockerなどは root でインストールしたい

parallelsユーザーは、``wheel``を付加されているのでsudoが使えるのですが、いっそ、rootユーザーになってしまった方が楽ちんです。そこで、``root``のパスワードも変えてしまします。
parallelsユーザーで ``sudo`` で ``su -`` して ``root`` になって、``passwd`` します。

```
[parallels@centos7 ~]$ groups $USER
parallels : parallels wheel
[parallels@centos7 ~]$ sudo su -
[sudo] parallels のパスワード:
最終ログイン: 2020/08/17 (月) 15:31:06 JST日時 pts/0
[root@centos7 ~]# passwd
Changing password for user root.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@centos7 ~]#
```
これで、Macのターミナルから、

```
% ssh root@centos7 
root@centos7's password: 
```

でログインできるようになり、
Docker や git、環境に必要なライブラリをrootでインストールできます。

さらに、僕は開発用のユーザーを追加して、普段はこちらでログインして使うことにしています。

```
[root@centos7 ~]# useradd development
```
``/home/development`` ディレクトリを開発専用にします。（ParalellsユーザはGNOMEログインしてしまっているので、Desktop, Documentsといった不要なディレクトリがあるので、GNOMEログインしないユーザとしてdevelopmentを設置）

### VMをコマンド起動したい

Parallelsのアプリをいちいち起動するのではなく、VM毎にコマンド起動するには

```
% prlctl start <VMの名前>
```
で起動できます。CentOS 7のデフォルトのVM名は ``CentOS 7`` なので、起動コマンドを簡単にするために、VMの設定で名前を変更しておきます。例えば ``centos7`` としておけば少し楽です。
![fig.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80250/cdc43668-328e-38e2-cb6a-71b7db48ddd0.png)

これでVM起動等に関する各コマンドは以下のようになります（説明省力）。

```
% prlctl start centos7
% prlctl stop centos7
% prlctl restart centos7
% prlctl pause centos7
% prlctl resume centos7
% prlctl list --all
```

### Parallelsのウィンドウは要らない

CentOSでコマンドしか使わないのであれば、Paralellsのウィンドウも不要です。
表示しない設定がちゃんとありました。

```
% prlctl set centos7 --on-window-close keep-running
```

### まとめ

以上の設定をすれば、
Macのターミナルアプリから、VMの起動から、開発作業、終了まで一連のことがコマンドだけでできるようになります。

```
% prlctl start centos7
Starting the VM...
The VM has been successfully started.
% ssh development@centos7
development@centos7's password: 
Last login: Mon Aug 17 15:30:51 2020 from 10.211.55.2
[development@centos7 ~]$ 
……
…… <CentOS上で開発など> ……
……
[development@centos7 ~]$ exit
ログアウト
Connection to centos7 closed.
% prlctl stop centos7    
Stopping the VM...
The VM has been successfully stopped.
% 
```

Paralellsのウィンドウが表示されることもなく、「静かに？」仕事ができます。

注意点は、startからsshログインできるまでに、当然起動のためのタイムラグが少しあることと（すぐにはsshできない）、 stop することを忘れないこと（使わないならCPUとメモリ資源のムダ）。

なお、Macのファイルは ``/media/psf`` 以下にあります。