etckeeper で commit されたら GitLab に push する
手順 (各ホスト)
以下の手順を自動化したスクリプトはこちら(実際のものとは多少異なります)。
etckeeper-setup-host.sh · GitHub
1. SSH鍵を生成
# ssh-keygen -t rsa -C "$(hostname)@gitlab-root.url" -N '' -f /root/.ssh/gitlab-$(hostname)
2. /root/.ssh/config に以下を追記
Host gitlab-root.url User (ホスト名) IdentityFile /root/.ssh/gitlab-(ホスト名)
3. gitlab-root.url
の SSH 鍵を /root/.ssh/known_hosts
に登録する
※ 自動化されたスクリプトでは ssh-keyscan
コマンドを使っている(関連:非対話的に ~/.ssh/known_hosts を更新 - Humanity)。
# ssh gitlab-root.url
4. リポジトリの初期化
# etckeeper init
5. GitLab の remote URL を追加
# etckeeper vcs remote add gitlab git@gitlab-root.url:etckeeper/etckeeper-$(hostname).git
6. 設定ファイルの PUSH_REMOTE
に gitlab
を追加
# vim /etc/etckeeper/etckeeper.conf # To push each commit to a remote, put the name of the remote here. # (eg, "origin" for git). Space-separated lists of multiple remotes # also work (eg, "origin gitlab github" for git). PUSH_REMOTE="gitlab"
手順 (GitLab の Web GUI から)
こっちの手順も自動化したい。 たくさんコマンドラインツールがあるみたいだけどあんまり調べてない。そのうちやるかも。
- 各ホストのユーザを作成
- ログアウトした状態のトップページでアカウントを作成すれば、パスワードも一緒に設定できる
- Admin Area からだとメール記載の URL から設定する必要がある
- ユーザのSSH鍵を追加 (各ホストごとの手順で作成)
- 各ホストのリポジトリを作成
- 各ホストのユーザを etckeeper/{ユーザ名} のプロジェクトに Master として追加
以上
これで /etc/cron.daily/etckeeper が実行されるたびに git push される。