正常な人間は OS を何回も再インストールしない。
Introduction
全国の Arch Linux インストール芸人の皆さん、こんにちは。
最近の Arch Linux には archinstall
とかいうクソ便利なツールが組み込まれているのを知ってから Manjaro を触らなくなりましたが、OS のインストール後に行う各種環境のセットアップには毎度苦しめられてしまいます。
具体的には、git 入れたり yay 入れたり zsh 入れたり rclone 入れたり firefox 入れたり chrome 入れたり VSCode 入れたり fcitx 入れたり fonts 入れまくって discord 入れたり slack 入れたり zoom 入れたり steam 入れたり virtualbox 入れたり libvirt 入れたり docker 入れたり gimp obs-studio vlc clamav wireshark unarchiver jsongorntgingoahgnpuoaergneauiolghnerughapughreuhterphftgiufaerhgpoiuerahngliaerg
で、バカほどパッケージ入れた後は clamav のサービス有効化とか docker も libvirt もそうですし group もいじって rclone の設定も作って Xfce の各種設定をいじり倒してfcit異fhrgh直井gホイパghじゃろう家hg;おいあえrh五話園g;おいdファhj技pdsrfんhgpヘアろ言うgへrくぁいお号;絵swrth祇王pレ5hy08qw358hytgh8793hyp9qr5絵3wh8y9gくぁ絵rh90;y8ghr3エアq08wgyhwれ3
みたいな操作を OS 入れ直す度にやらされるのが流石に辛くなってきたので、重い腰をようやく上げて、当エントリにて開発環境を Ansible で構成管理する際の一例を示すことにします。
Puppet V.S. Chef V.S. Ansible V.S. SaltStack
そもそもエージェントレスじゃないとだるくてやってられんみたいなところはある。
Puppet
ギョームで気が狂うほど書いているので Puppet が一番慣れているところですが、初回のセットアップがだるいので、今回のように1台だけしか管理しないケースでは Puppet でなくてもよいでしょう。
Chef
知らん
SaltStack
マジで知らん
Ansible
まあ Ansible になるわな。sudo pacman -S ansible
だけ打っておけば、他に Global の設定をいじる必要など特に無いのでクソ楽です。
Example はよくれ
おらよ https://github.com/voltaxic-rift/archlinux-ansible-example
流れとしては
- Arch Linux をインストール
archinstall
使ってやる等- この段階はどうしても手動に頼らざるを得ない
sudo pacman -S ansible git
- 安全な方法で秘密鍵を持ってくる (optional)
- 対象の repo を Clone する (今回は
archlinux-ansible-example
を使う)git clone git@github.com:voltaxic-rift/archlinux-ansible-example.git
- https でもいい
- Ansible Playbook 適用 (以下 Usage に記載)
Usage
1 | ansible-galaxy collection install -r requirements.yml |
以上!
Package 追加したい
roles/arch_packages/tasks/main.yml
に Package を追記することで、構成管理に含めることができます。
AUR の場合は roles/aur_packages/tasks/main.yml
zsh に変えたり色々やりたい
例えばこういうのを roles/zsh/tasks/main.yml
として作ります
https://github.com/voltaxic-rift/archlinux-ansible-example/blob/66d2537f77af6c4017150699f12f13bdba2443d6/roles/zsh/tasks/main.yml
1 |
|
roles/zsh/files/.zshrc
を作ります (中身はお好みで)
https://github.com/voltaxic-rift/archlinux-ansible-example/blob/66d2537f77af6c4017150699f12f13bdba2443d6/roles/zsh/files/.zshrc
1 | # Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc. |
playbook.yml
に zsh
role を追記します。
https://github.com/voltaxic-rift/archlinux-ansible-example/blob/66d2537f77af6c4017150699f12f13bdba2443d6/playbook.yml
1 | - arch_packages |
最後に playbook 実行で、変更が適用されます。
1 | ansible-playbook -i hosts -K playbook.yml |
例に挙げた .zshrc
の場合、初回起動時に ~/.p10k.zsh
を作成するセットアップウィザードが走ることに注意。
この辺は面倒 (あと zsh まわり詳しくない) なのでよしなにどうぞ。
そのた
他にも、docker, vboxusers group 追加など、ClamAV の導入など、都度 Role を作って適用することで、ある程度は良い感じに管理できるはずです。
ちなみに、Package のインストールは全部 arch_packages
role にブチ込んでいます。
Role 毎に install を分けてもよいですが、入れるだけで完結する Package まで Role を分けたりしていると無駄に複雑になるので、まとめてしまったほうが管理しやすいと考えます。
Package install 以外の設定を入れたくなったときに Role を生やすのが個人的におすすめです (さっきの zsh
のように)
Conclusion
正常な人間は OS を何回も再インストールしない。
あと fcitx とかの設定を構成管理に含めるのはクッッッッッッッッッッッッッッッッッッッッッッソだるいので、妥協を強いられる場面はどうしても発生します。
(Plasma の諸々の設定とかもね)
という具合ですが、少しでも楽したい人はこういうのを作っておくとよいかもしれません。
よい re-install ライフを。