CoreOSだけでNFSサーバー in EC2
CoreOSだけでNFS。dockerナシでできました。
CoreOSにはrpc-mountdやらnfsdやらが入ってて、いろいろやればできた。
以下、一応動作確認したサーバー側(EC2 1台)とクライアント側(EC2 1台)のyamlの中身です。
サーバー側
#cloud-config hostname: nfs-server write-files: - path: /etc/exports permissions: '0644' content: | /var/data 172.31.0.0/16(rw,async,no_subtree_check,no_root_squash,fsid=0) coreos: units: - name: timezone.service command: start content: | [Unit] Description=timezone [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/ln -sf ../usr/share/zoneinfo/Japan /etc/localtime - name: volume.service command: start content: | [Unit] Description=mkdir -p /var/data [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/mkdir -p /var/data - name: rpc-mountd.service command: start - name: nfsd.service command: start
ポイント(?)
ExecStart=/usr/bin/mkdir -p /var/data
- ディレクトリ作るやり方が分からず、こうなった。もっとスマートに書くやり方教えて欲しい…
クライアント側
サーバー側とは別のEC2インスタンス。
#cloud-config hostname: nfs-client01 write-files: - path: /etc/conf.d/nfs permissions: '0644' content: | OPTS_RPC_MOUNTD="" coreos: units: - name: timezone.service command: start content: | [Unit] Description=timezone [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/ln -sf ../usr/share/zoneinfo/Japan /etc/localtime - name: rpc-statd.service command: start enable: true - name: mnt-data.mount command: start content: | [Mount] What=server.nfs.inner:/var/data Where=/mnt/data Type=nfs - name: chown-core-mnt-data.service command: start content: | [Unit] Description=chown core /mnt/data After=mnt-data.mount [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/chown core /mnt/data
ポイント(?)
What=server.nfs.inner:/var/data
ExecStart=/usr/bin/chown core /mnt/data
- chownしないと実用的じゃない。けどたったこれだけのために10行程度書かないといけないのがイケてない気がする
その他EC2周り設定
セキュリティグループ(サーバーもクライアントも)
こんなノリ
ほんとは2049番だけでもいいかも。試してない。
サーバーの名前設定
こんなノリ
所感
- もちろんnfsdじゃなくて、docker + volumeでもなんか出来そう