サーバーの設定ファイル (/etc) の中を git 管理してくれる、etckeeper が便利すぎて仕方ないので、自分が管理しているサーバーは全部入れています。
サーバー admin な人も config ファイルを編集すると、***.conf.20220103 とかコピーファイルを作成している人を見かけますが、etckeeper で git 管理しましょう。
インストール
root でログイン
sudo su -
epel レポジトリをインストール
amazon-linux-extras enable epel
インストール
yum install etckeeper
あとは、git とほぼ同じです。
etckeeper を init
etckeeper init
最初のコミットを行う
etckeeper commit -m "initial commit"
これであとは、1日に1回、自動的に差分をコミットしてくれます。
使い方
初期インストールで、1日に1回 daily commit をしてくれるので、基本的に放っておいてOKです。
他の管理者の人が設定を変更しても翌日深夜にコミットしてくれるので、どういう変更をしたのか、その変更前はなんなのかなどがわかります。
yum コマンドにも hook してくれるので、yum コマンド前と後の config の変更も残してくれるので、すごく便利。
基本何もしなくてもサーバーの設定変更履歴を残してくれます!
何か git コメントを残しておきたい場合
何か特別な設定変更をして、git の履歴にコメントを残しておきたいのみ、日時自動コミットの前に git commit します。
sudo etckeeper commit -m "なんかメッセージ"
tar で etc や .git ディレクトリを保存して DL してみる
僕が一番使っているのがこの手です。
ホームディレクトりに sudo な tar コマンドを打って、/etc
ディレクトリと `/.*/`ディレクトリの中を圧縮 & DL し、 SourceTree などの git 閲覧ソフトで確認します。
cd
sudo tar -cvzpf etc_$(date +%Y%m%d%H%M%S).tar.gz -C /etc/ ./
# home フォルダにtar ファイルが保存されます。
# 作成した tar をローカルに DL して確認
リモートに push
サーバーにログインするのが面倒な人は プライベートレポジトリ にレポジトリを push することも可能です。
サーバーキーなども含まれるため、絶対にプライベートレポジトリにプッシュしましょう。
root ユーザーの公開鍵を生成
sudo su -
ssh-keygen -t rsa -b 4096 -C root@mexample.com
cat cat /root/.ssh/id_rsa.pub
# 公開鍵をコピーして、プライベートレポジトリの SSH 鍵として登録
リモートレポジトリ origin を追加
コンプライアンスの関係で、デフォルトのブランチ名が、master
から main
にかわりつつあるので、git のバージョンでどちらになっているかを確認して行いましょう。
プライベートレポジトリ URL は git@examplecom:/example-git
とします。
# origin のリモートレポジトリを追加
git remote add origin main git@examplecom:/example-git
# リモートレポジトリに最初のコミットを追加
git push origin master
etckeeper の config を編集
さきほどは origin
というリモートレポジトリを追加しました。
違う名前で追加したのなら変えてください。
etckeeper の config の PUSH_REMOTE 設定にリモートの名前を追加することで、etckeeper commit するときに自動的にリモートに push してくれるようになります。
vi /etc/etckeeper/etckeeper.conf
PUSH_REMOTE=""
を
PUSH_REMOTE="origin"
失敗しないコツ
1. セキュリティに気をつけよう
何度も繰り返しますが、サーバーの設定が入っているので、プライベートレポジトリのみに push しましょう。
2. git reset しない
絶対に git reset などはしない。
あくまでも変更履歴を記録するために行います。
間違って git reset しちゃって、SSHD の設定を変更したりしたら大変な目に遭ってしまいます。
3. 複数台管理をしない or するんだったらめっちゃ気をつけよう
あまりおすすめしないですが冗長化構成のサーバーの config を記録するのであれば、かなり気をつけましょう。間違えてサーバー署名を書き換えたりするとダメになります。