こんにちは。 週(この記事は非常に長い間バックログで漬けられています) 少し前に、通常の構成管理に rcmを使用する方法について話しました。 当社には、ユーザーの個人設定をユーザーがアクセスできるすべてのホストに配布するパペットモジュールがあります。 したがって、次のものが必要です:
- 使用するすべての設定を独自に設定する(vim、zsh、gitなど)
- それらがdotfilesリポジトリで更新されるときに更新します
- このすべて-不要なジェスチャーなし
ツール
必要なものはすべて私がすでに使用しています。
ここで難しいことは何もありません。ホストでtarballの内容を展開して展開します。 特定のリストからのファイルとディレクトリのみが管理され、各展開の各クラウンで完全に摩擦されます。 したがって、tarballが変更された場合、 $HOME
リストのすべてが摩擦されます。 そうでない場合、$ HOMEの内容は変更されません。 個別のスクリプトは、個人ファイルのソースファイルでフォルダーを(再)パックする責任があります;それは非常に簡単です:
新しいコミットボールターボールを作成する方法
$ HOMEにないドットファイルを展開する
さまざまなホストに構成をデプロイするツールがすでにあるため、明らかに自分で使用します。 何かを修正し、 rcm
でファイルを必要な場所にコピーするだけです。 ただし、rcmは常に$ HOMEにドットファイルを設定します;この動作を変更するコマンドライン引数はありません。
いくつかの実験とソースの選択後、$ HOMEを直接変更できることに気付きました。すべてのrcmコマンドのユーティリティの動作は次のように変更されます。ユーティリティlsrc, mkrc, rcdn, rsup
はそれぞれ${HOME}/.rcrc
${HOME}/.dotfiles
デフォルトで${HOME}/.dotfiles
。 したがって、必要なすべてのパラメーターを使用して同じ${HOME}/.rcrc
を作成するだけで十分です。
最も簡単な方法は、ホームフォルダーの「空白」を作成し、各コミットでゼロからそれを埋めることです。 それがどのように見えるかの例はリポジトリで見ることができます 。 このフォルダーは、 個人タグのないすべてのホストで無視されるため、メイン構成に干渉しません。 単一の.rcrcファイルには、ファイルをコピーするロジックのすべてのパラメーターが含まれます。いくつかのコメントのみを行います。
$SYMLINK_DIRS
ないと$SYMLINK_DIRS
rcup
は絶望的に長くなり、コピーするファイルの完全なリストを作成します。 このオプションと$COPY_ALWAYS
ユーティリティは単純にフォルダー全体をcp -r
としてコピーします。- 明らかに、リモートサーバーには多くは必要ありません。これはすべて
$EXCLUDES
リストされています(vimプラグインを除き、 $SYMLINK_DIRS
されているため、フックで削除する$SYMLINK_DIRS
) ${HOME}/.dotfiles
は明らかな理由で動作を停止するため、 $DOTFILES_DIRS
もオーバーライドする必要があります$DOTFILES_DIRS
以上です。 これで、タグパーソナルフォルダーを任意の場所にコピーし、 ${HOME}
時間をオーバーライドして、 rcup
を実行rcup
WORK_DIR="${HOME}/.dotfiles/tag-personal" _OLD_HOME=$HOME HOME="${HOME}/some/long/custom/path" cp -r "${WORK_DIR}" "${HOME}" rcup -v HOME=$_OLD_HOME
わあ! しかし、私は何か他のものが欲しい...
カスタム$ HOMEへの設定の「展開」を自動化します
この「何か」を作成するのは簡単です。この時点でgitはそのフックに役立ちます。 次の内容の実行可能ファイル.git/hooks/post-commit
ます。
これで、ドットファイルでリポジトリにコミットするたびに、このスクリプトが起動します。
それ以降は、個人データを使用してリポジトリにコミット+プッシュを行い、自動化マジックが設定を動作中のホストに渡すまで待機します。
このようなことを複雑にするのはなぜですか?
事実、会社にはホストに個人設定を展開するためのツールがありませんでしたが、そのようなキットは必要ありませんでした。 しかし、機会が生じるとすぐに、食欲はすぐに増大します。 私の同僚の中には、 .vimrc .bashrc .gitconfig
3つのファイルをホストに持ってきたという事実に満足している人もいました。 しかし、私は長い間、さまざまなツールのセット全体を愛情を込めて研ぎ、修正し、磨き続けてきました。 すべてのプラグインをインストールした後の~/.vim
重量は427MBのみです(はい、そのうち218個はYCMであり、サーバーにドラッグしません。クリーニングして梱包した後はすべて3MBになります)。
おそらく、誰かにとっては、これはどういうわけか多すぎて、手で行うことができたように思えます。 おそらく誰もがこれに同意するわけではありません 。
ワークステーションで、ほとんど自宅で快適に感じるために、他の誰かがほとんど身体的に必要であり、ツールが彼を許すことを願っています。 あなたの健康を利用してください。自動化が私たちと共にありますように!