市田善久(93)38この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。最近またダイエットを始めた市田です。今回は、表題のとおりLinuxサーバの/etcにある各種コンフィグ類を、CodeCommitで管理する方法をご紹介します。前職ではシステム運用にも携わっていて、似たような仕組みを導入していました。リモートリポジトリのサーバがSPOFになっていたり、そのサーバ自体の運用にも工数がかかっていたこと等が課題でした。CodeCommitはAWSのフルマネージドサービスなので、上記のような課題を解消できる他に、各種AWSサービスとの親和性も高いという点から選んでみました。最初にCodeCommitでリポジトリを作成します。適当なレポジトリ名を入力します。etckeeper(git)でリポジトリにアクセスするURLは、作成したリポジトリ右側の「URL」欄のファイルアイコンをクリックすると、SSHとHTTPSの2種類が出てきます。SSHの場合は、上記で「SSH」をクリックするとそのURLを選択することができます。etckeeperのインストールインストールまずは、etckeeperのインストールです。インストール対象はAmazonLinuxにしています。etckeeperはepelリポジトリからインストールします。AmazonLinuxのデフォルトではepelリポジトリは無効化されているので、明示的に参照するようにします。次にリポジトリの初期化をします。init確認してみます。etckeeperを使うので、etckeeperに統一しているだけで、深い理由はありません。次のようにズラズラ出ればOKです。'./cron.monthly'(以下略)CodeCommitへの接続準備IAM設定を行います。今回はSSHで接続します。専用のIAMユーザを作成します。権限は「AWSCodeCommitFullAccess」にしました。次に、SSH公開鍵鍵をIAMに登録するので、サーバ上でSSH鍵を作成します。root@ip-172-31-20-152作成された/root/.ssh/id_rsa.pubの内容をIAMの画面からアップロードします。次に、以下のような内容で~/.ssh/configを作成します。~/.ssh/id_rsa上記のUserには、IAMに登録したSSHキーの「SSH公開キーID」を指定します。今回はサーバ毎に別々のブランチにすることで、複数サーバの/etcを管理します。作業対象のサーバ名を「ap01」とします。これがブランチとしてサーバ毎に作成される形になります。addする時に指定するURLは、リポジトリを作成した際に確認したものを指定します。trackingこの設定は下記のサイトを参考にさせて頂きました。参考:ほげめも他のサーバでも同様に登録します。複数のサーバの登録ができると、CodeCommit上のブランチのプルダウンに、登録したサーバのリストが表示されていると思います。下記の場合だと「web01」と「ap01」の2つのサーバが登録されています。それぞれを選ぶと、各サーバの/etc以下の内容を参照できます。etckeeperとCodeCommitの連携etckeeperでは、yumやaptコマンドでパッケージをインストール、アンインストールした時に自動的にコミットされます。日次でcronによる自動コミットも行われます。この時のコミット内容をCodeCommitに反映させたいと思います。いうことで、次のような内容のフックスクリプト(/etc/etckeeper/commit.d/90push)を作成します。push実行権限をつけておきます。/etc/etckeeper/commit.d/90push変更内容をCodeCommit上で見れるようにしてみた次に、日次のコミット内容について、ファイルの変更内容をCodeCommit上で見れるようにしてみました。autocommit」というコミットメッセージのみがCodeCommitに表示される形になります。それでは面白くないので、変更内容もCodeCommit上で見れるようにしてみました。既存の/etc/cron.daily/etckeeperの内容を次のように修正します。分かりやすくするため、一度etckeeperでcommitしておきます。日次のコミット処理でファイルの変更内容が表示できるかどうかを分かりやすく見る為だけの処理なので、ここはスキップしても構いません。"test"では、おもむろに/etc以下にmyapp.confというファイルを作成します。/etc/myapp.confこの状態で、日次コミットのスクリプトを手動で実行します。/etc/cron.daily/etckeeperCodeCommitの画面を見てみると、myapp.confのファイルが追加されたことが表示されています。次に、myapp.confを編集してみます。/etc/myapp.conf再度実行します。/etc/cron.daily/etckeeperCodeCommitの画面には、先ほど追記した内容が表示されています。実際にcronで処理させてみても同様の動きになりました。変更内容を色分けで見たい現状のCodeCommitでは、ファイルの変更内容を見ることができません。上記の方法で変更内容を見ることができますが、単色のため少し見づらいかなと思います。いう場合は、少し面倒ですが直前のコミットIDをCodeCommit上で確認して、gitで見るのが早いと思います。手順CodeCommitの画面で「Commits」を選択して、「Branch」プルダウンから対象インスタンスを選択します。ここで比較したいコミットIDをコピーします。直前の内容との変更を確認したい場合は、一つ前のコミットIDをコピーします。下記のように、ファイルのアイコンをクリックするだけでコミットIDをコピーできます。この状態でコマンドを実行すれば、カラーリングされた内容で変更内容を見ることができます。diffでも構いません。最後にCodeCommitは、既存のgitホスティングのサービスほど多機能では無いですが、工夫次第で便利に使えるサービスだと思います。他にも面白い使い方があれば、またご紹介したいと思います。939,880AWSと色んなOSSを組み合わせて使うのが好きです。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。カフェ店長のオカノです。今日はオフィスに用があるので、通勤ラッシュを避けて出社しました。この子は新メンバーのさめくんです。在宅勤務が推奨されているのでオフィスが閑散としており、すこしさみしそうです。使いたいときの注意点を書きました。本が出ていたので読んでみたところよかったので紹介させていただきます。