OpenTofuとは
Terraformを管理しているHashiCorpがTerraformを含む一部サービスをBSL(Business Source License)に変更すると2023年に発表がありました。
このライセンスに変更することで本番利用についてはライセンスが必要となる可能性が出ています。
※詳しいことはわからない…。
それに反発した人たちがコミュニティを立ち上げたのがOpenTofuというプロジェクトです。※Linux Foundation
今後Terraformがどこまで無料で使えるかわからないこともあり、新しくできたOpenTofuを勉強してみようと思います。
OpenTofuのインストール
公式サイトの手順通りに実行
まずはOpenTofuをインストールします。
公式サイトにインストール手順があるのでそれに従います。
opentofu.org
自分はWSL2でUbuntu22.04を使用しているので、Ubuntuのインストール手順を利用します。
opentofu.org
$ which snap /usr/bin/snap $ snap install --classic opentofu error: cannot communicate with server: Post http://localhost/v2/snaps/opentofu: dial unix /run/snapd.socket: connect: no such file or directory
早速うまくいきません。
エラーメッセージを見ると、「dial unix /run/snapd.socket: connect: no such file or directory」とあるので、snapdのソケットが見つからないと。
snapdが動いてない?
snapdプロセス確認
ということで、プロセスを確認する。
$ ps -ef | grep snap ***+ 5347 5312 0 17:11 pts/8 00:00:00 grep --color=auto snap $ ps auxwww | grep snap ***+ 5349 0.0 0.0 8168 716 pts/8 S+ 17:11 0:00 grep --color=auto snap
居ない…。
なので、snapdを起動させる必要がありそうです。
Webで調べていると、WSLではsystemdでsnapがdisableになっているようです。
ということで、ちゃちゃっとenableにします。
sudo systemctl start snapd.service System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down
おっふ、systemdが動いてない…。
WSL起動時にsystemdが動くようにする
boot時にsystemdが動くようwsl.confに設定を入れます。
$ sudo vi /etc/wsl.conf $ sudo cat /etc/wsl.conf #[network] #generateResolvConf = false [boot] systemd=true
WSLの再起動が必要になるので、一度Ubuntuから抜けてpowershellを起動、WSLの停止をします。
PS C:\Users\***> wsl --shutdown
コマンド実行後、WSLを起動。Ubuntuにログインしsystemdの起動確認。
$ ps -ef | grep systemd root 53 1 0 17:36 ? 00:00:00 /lib/systemd/systemd-journald root 77 1 0 17:36 ? 00:00:00 /lib/systemd/systemd-udevd systemd+ 107 1 0 17:36 ? 00:00:00 /lib/systemd/systemd-networkd systemd+ 255 1 0 17:36 ? 00:00:00 /lib/systemd/systemd-resolved message+ 259 1 0 17:36 ? 00:00:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only root 268 1 0 17:36 ? 00:00:00 /lib/systemd/systemd-logind ***+ 1045 1 0 17:36 ? 00:00:00 /lib/systemd/systemd --user root 1138 77 0 17:37 ? 00:00:00 /lib/systemd/systemd-udevd root 1139 77 0 17:37 ? 00:00:00 /lib/systemd/systemd-udevd root 1140 77 0 17:37 ? 00:00:00 /lib/systemd/systemd-udevd root 1141 77 0 17:37 ? 00:00:00 /lib/systemd/systemd-udevd
systemdの起動が確認できました。
OpenTofuインストールの再実行
これでもう一度OpenTofuのインストールを実行。
$ snap install --classic opentofu error: access denied (try with sudo)
sudoつけろと怒られたので、sudoつけて実行。
$ sudo snap install --classic opentofu opentofu 1.6.1 from OpenTofu Core Team installed
うまくいきました。
ちょっと時間かかりましたが、ようやくOpenTofuをインストールできました。
OpenTofuを使ってみる
今まではterraform xxxでterraformを実行していましたが、これがtofu xxxに変更になるようです。
opentofu.org
ここのStep2にあるtofu --versionを実行してみます。
$ tofu --version OpenTofu v1.6.1 on linux_amd64
コマンドが通ることが確認できました。
これでtofuを使う準備は完了ですかね。
次回からinitやplan、applyなどを試してみようと思います。