SSH接続で使用するauthorized_keysファイルをGitで管理する!

SSH接続で使用するauthorized_keysファイルは、鍵認証でログインするマシンに配布する必要があります。作成済みのauthorized_keyファイルをAnsibleで配布できるようにGitで管理します。管理を確実にするために、システム管理用に構築したGitLabにも登録しておきます。

authorized_keysファイルを作成する!

以下の記事で作成したauthorized_keysファイルを管理します。

 

authorized_keysファイルを配置する!

authorized_keysファイルをAnsibleのコントロールノードに配置します。

$ ls -l
total 4
-rw-r--r--. 1 usradmin usradmin 104 Dec  8 07:40 authorized_keys

ローカルのGitリポジトリを構成する!

Git環境の初期設定を行っていない場合は、最初にユーザの情報の設定を行います。

$ git config --global user.email "lab4ict@gmail.com"
$ git config --global user.name "Lab4ict Webmaster"

ローカルのGitリポジトリを作成し、hostsファイルを登録します。

$ git init
$ git add authorized_keys
$ git commit -m "First Version"
 1 file changed, 1 insertion(+)
 create mode 100644 authorized_keys
$ git ls-files
authorized_keys

GitLab上にプロジェクトを作成する!

GitLab上にプロジェクトを作成します。今回は、Configuration Managementグループ配下に、「authorized_keys」というプロジェクトを作成しました。「Settings」→「Repository」→「Protected branches」の項目で、リストされている「main」ブランチの「Allowed to force push」の項目を有効にして「Unproted」ボタンをクリックして、pushを許可しておきます。

GitLab上のプロジェクトにHostsファイルを登録する!

GitLabのRepository画面に表示されているコマンドで、Hostsファイルを登録します。

$ git remote add origin http://gitlab.lab4ict.local/configuration-management/authorized_keys.git
$ git branch -M main
$ git push -uf origin main
Username for 'http://gitlab.lab4ict.local': root
Password for 'http://root@gitlab.lab4ict.local': 
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 2 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 325 bytes | 325.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To http://gitlab.lab4ict.local/configuration-management/authorized_keys.git
 + d319b38...7ec22d8 main -> main (forced update)
Branch 'main' set up to track remote branch 'main' from 'origin'.

おわりに

authorized_keysは基本的に全マシンに配布するファイルなので、Gitで管理し、Ansibleで配布可能な管理方法にしてみました。