Chezmoi - 安全地管理多台机器的Dotfiles

时间:2020-02-23 14:37:49  来源:igfitidea点击:

如何处理我们管理或者支持的多个服务器中的DotFiles?
是.bashrc或者.zshrc,它包含珍贵的别名和其他有用的设置,与其他多数多数的dotfiles,使工作更容易或者值得,我们同意每次移动到新环境时都会立即变得繁琐或者在群集中有新的工作负载(服务器)。
本教程为所有需要采取某些东西的人带来痛苦的人,这引导有良好的新闻。

与Chezmoi一起,我们有机会以良好的订购,可呈现和安全的方式管理多台机器的DotFiles。
我们将能够通过多台计算机管理配置文件,例如个人麦克斯笔记本电脑,工作Ubuntu桌面以及Work Linux笔记本电脑。
我们深入潜入工具的这个奇迹,并确保Dotfiles将不再是我们工作肉体中的刺。
因此,我们将安装并看看Chezmoi如何工作,它已经完成了任务和负担。

Chezmoi的主要功能

Chezmoi获取许多使用以下功能解决的DOT文件问题:

灵活性:我们可以根据需要在机器上分享尽可能多的配置,同时仍然能够控制机器特定的详细信息。
人际和安全性:我们可以使用我们选择的版本控制系统来管理配置,我们可以编写配置文件以我们选择的格式。
Chezmoi可以从1Password,Bitrenden,GoPass,Keepassxc,LastPass,Pass,Vault,keychain,keyring或者任何命令行实用程序检索秘密.Transparency:Chezmoi包括详细和干燥的运行模式,以便我们可以查看它的更改将为主目录进行归档。
它是声明性和强大的:我们声明了真实源和ChezMoi源中的所需的文件,目录和符号链接状态和Chezmoi更新主目录以匹配该状态。
它是快速简便的要使用:Chezmoi在零件的分数中运行,并使大多数日常运行一行命令,包括安装,初始化和保持计算机最新命令

请注意,我们需要在我们喜欢的任何Git系统中获得Git帐户和仓库(Gitlab,Github,Bitbucket等)

在此之前,值得注意的是,可以使用各种方式安装Chezmoi,因为它已在其GitHub页面上记录

在各种Linux发行版上安装Chezmoi

在安装Chezmoi之前,首先更新系统并安装Git是谨慎的。

###Install git on Centos###
sudo yum -y install git
###Install git on Ubuntu###
sudo apt install git -y
###Install git on Arch Linux###
sudo pacman -S git

Chezmoi可以安装在各种Linux发行版中如下。

在Alpine Linux上安装

apk add chezmoi

安装在Arch Linux上

sudo pacman -S chezmoi

安装在Guix Linux上

guix install chezmoi

在Nixos Linux上安装

nix-env -i chezmoi

在void Linux上安装

xbps-install -S chezmoi

在麦斯卡斯上安装Chezmoi

通过如下使用自制的Macos上安装了Chezmoi

brew install chezmoi

使用单行二进制安装Chezmoi

安装Chezmoi的另一个选项是使用单行二进制文件。
这样就可以安装正确的二进制文件和架构./bin使用单个命令。

cd ~
curl -sfL https://git.io/chezmoi | sh
sudo cp -r ~/bin/chezmoi /usr/local/bin

让chezmoi工作

从其文档中,Chezmoi将在目录~/.local/share/chezmoi中存储所需的dotfiles状态。
运行Chezmoi应用时,Chezmoi会计算每个Dotfile的所需内容和权限,然后进行必要的任何更改,以便dotfiles匹配该状态。

要开始使用ChezMoi,我们必须初始化如下:

$chezmoi init
Initialized empty Git repository in /home/tech/.local/share/chezmoi/.git/

这将在~/.local/share/shezmoi中创建一个新的git存储库,其中包含0700的权限0700,其中Chezmoi将存储源状态。
Chezmoi只修改了工作副本中的文件。
我们有责任进行更改。

如果我们已经希望"船上"到Chezmoi,我们可以使用以下Chezmoi命令管理

chezmoi add ~/.zshrc

这样做将复制~/.zshrc到~/.local/share/shezmoi/dot_bashrc。
如果要将整个文件夹添加到Chezmoi,则必须在添加后添加-R参数/交换机。

将文件添加到ChezMoi后,我们可以编辑这样的文件的源状态:

chezmoi edit ~/.zshrc

这将在$编辑中打开~/.local/share/chezmoi/dot_zshrc。
对我来说,它将使用VI编辑器打开文件,因为这是默认编辑器。
我们可以通过编辑$编辑器环境变量点来更改此项。
进行一些更改并保存。

关于Chezmoi的好处是,我们可以看到Chezmoi在保存文件之前所做的更改:

chezmoi diff

一旦我们对编辑满意,我们可以按如下方式应用更改:

chezmoi -v apply

最后,在源目录中打开shell,将更改提交到本地Git存储库并退出。
发出"Chezmoi CD"导航我们到~/.local/share/chezmoi目录。

chezmoi cd
git add dot_zshrc
git commit -m "Add .zshrc"
exit

创建配置文件

"Chezmoi init"可以自动创建配置文件,如果尚未存在。
在存储库中,将一个名为".chezmoi的文件。
<formbers> .tmpl",其中格式是支持的配置文件格式之一(例如,json,toml或者yaml),那么Chezmoi init将执行该模板以生成初始配置文件跟随。
请选择我们喜欢的一种文件格式。

$chezmoi cd
##For toml file format##
touch .chezmoi.toml.tmpl 
##For json file format##
touch .chezmoi.json.tmpl
##For yaml file format##
touch .chezmoi.yaml.tmpl

创建文件后,请运行chezmoi init以创建"~/.config/chezmoi/chezmoi.toml"配置文件。
请注意,扩展将根据我们选择的文件格式而更改。

chezmoi init

在多台机器上使用Chezmoi

要在不同计算机上访问本地DotFiles,我们需要在保留文件的中央处。
Chezmoi与Git合作。
继续克隆~/.local/share/shezmoi中的git repo到托管的git服务,例如github,gitlab或者bitbucket。

chezmoi cd
git init
git commit -m "dotfiles commit"
git branch -M main
git remote add origin https://github.com/JohnKibe/dotfiles.git
git push -u origin main

我们可以调用存储库任何名称,但许多人更喜欢调用他们的dotfiles repos dotfiles。
从那里,在一个单独的计算机中设置了Chezmoi,因为它已被上一步覆盖,然后克隆Git Repo,如下所示:

注意:我们必须创建了一个带有我们选择的名称的存储库,例如Dotfiles。

$chezmoi init https://github.com/JohnKibe/dotfiles.git
Cloning into '/home/tech/.local/share/chezmoi'...
Username for 'https://github.com': <your-username> 
Password for 'https://<your-username>@github.com': 
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.

这将查看repo和任何子模块,并选择为我们创建Chezmoi配置文件。
在运行之前,它不会对主目录进行任何更改:

chezmoi apply

或者,我们可以从存储库中提取最新更改,并查看会更改的内容,而无需实际应用更改:

chezmoi source pull -- --rebase && chezmoi diff

此命令在源目录中运行git pull -rebase,然后shozmoi diff然后显示从源目录和实际状态计算的目标状态之间的差异。

在GIT存储库文件上进行任何更改后,我们可以使用以下命令登录任何计算机,从repo中拉动并应用最新更改:

chezmoi update

因此,它现在很简单,在我们希望拥有它们的任何机器中都有所有的DotFiles。
在我们发现自己的每台新机器中,不再写新的dotfiles。
工作现在应该像执行chezmoi命令一样简单。

使用bitwarden保持秘密

Chezmoi包括使用Bitwarden CLI对Bitwarden的支持将数据视为模板函数。
如果我们没有安装位罩,则可以使用Snapcraft来轻松安装。
此外,我们必须拥有Bitainden帐户,以便能够使用他们的服务。

使用Snap或者NPM安装Bitwarden CLI,如下所示

$sudo snap install bw
##or using npm##
$npm install -g @bitwarden/cli

然后我们可以登录帐户

$bw login                                                                                                    
? Email address: <your-email-address>
? Master password: [hidden]
You are logged in!

解锁位点保险库:

bw unlock

按照指示设置BW_Session环境变量。

###For Linux###SSS
export BW_SESSION="2cvamm4lAfeH+Ztlsdtwerhwrtjwt3qEbTqsdfasgry36ceIuY7/lfC1pVS7esIHDFoITq7DIy3V3xTpFK=="
###For PowerShell###
$env:BW_SESSION="2cvamm4lAfeHd+ZtlqpXnGmF93qEbTqfa3hbQJo8y36ceIuY7/lfC1pVS7esIHDFoITq7DIy3V3xTpFK=="

"BW Get"的结构化数据可用作配置文件中的位点模板函数,例如:

username = {{ (bitwarden "item" "GeeksAdmin").login.username }}
password = {{ (bitwarden "item" "StrongPassword").login.password }}