この記事は Willgate Advent Calendar 2018 の21日目の記事です。
前日は okashoi さんの どうして Util / Common クラスはよくないのか? でした!
みなさん、サーバの個人設定ファイルの管理どうしていますか?え、サーバ以降の度に scp している?それはいけませんね。急にサーバ死んだら復旧できませんし、複数サーバに設定ファイル反映するの大変ですよ。
ということで、今回は dotfiles と呼ばれているものを紹介したいと思います。
dotfiles とは
dotfiles と大層な名前をつけていますが、言ってしまえば、 .
から始まる個人設定のファイル群をgitで管理しましょうよ
。というものです。
なので、特別なツールの導入とかはありません。ただ、サーバに反映しやすいように一工夫している人もいたりしますので、そこらへんも少し踏まえて説明させていただきます。
そんなことはいいからお前の dotfiles みせろ
構成
$ tree ./ ./ ├── Makefile ├── README.md ├── bin │ └── Makefile └── etc ├── config ├── cron │ └── crontab └── init └── init.sh
仕組み
README.md に書いていますが、git リポジトリに管理されている /etc/init/init.sh
を実行することでサーバ上の環境設定をしてくれるように設計しています。
ここでやっていることは、
git clone git@github.com:IkezoeMakoto/dotfiles.git make -C dotfiles deploy
が大事な部分です。git 上から clone してくるのと make deploy を実行すること。
make deploy
make deploy が実行されると下記のターゲットが実行されることになります。
deploy: ## Create symlink to home directory @$(foreach val, $(DOTFILES), ln -sfnv $(abspath $(val)) $(HOME)/$(val);) $(MAKE) install $(MAKE) cron/set
ここの $(DOTFILES) は
CANDIDATES := $(wildcard .??*) bin EXCLUSIONS := .DS_Store .git .gitmodules .travis.ym .gitignore DOTFILES := $(filter-out $(EXCLUSIONS), $(CANDIDATES))
で解決された .
で始まるファイルたちが対象になり、シンボリックリンクが貼られホームディレクトリに設置されるようになっております。
このため、変更時にホームディレクトリの .
から始まるファイルを編集したとしても、すぐ git commit && git push できる仕組みになっています。
綺麗にするコマンド
そのサーバから綺麗さっぱり無くしたいという時もあるでしょう(退職時や、サーバを譲渡するときなど)、その際は make clean
というターゲットを使うことで、設定していたシンボリックリンクを綺麗に削除してくれます。
まとめ
時間がなかったので、少し駆け足になってしまいましたが、いかがでしたでしょうか?
自分専用の設定ファイルなどにこだわるひとであれば、このようなバックアップ、設定反映のための手段も一緒に導入しておくと、いろんな環境で作業でき、利便性も上がるので是非設定してみてください。