分类 技术 下的文章

WINE 是一个开源项目,它可以协助很多 Windows 应用程序在 Linux 上运行,就好像它们是原生程序一样。

 title=

在 2021 年,有很多比以往更喜欢 Linux 的原因。在这系列中,我将分享使用 Linux 的 21 种原因。这里是如何使用 WINE 来实现从 Windows 到 Linux 的无缝切换。

你有只能在 Windows 上运行的应用程序吗?那一个应用程序阻碍你切换到 Linux 的唯一因素吗?如果是这样的话,你将会很高兴知道 WINE,这是一个开源项目,它几乎重新发明了关键的 Windows 库,使为 Windows 编译的应用程序可以在 Linux 上运行。

WINE 代表着“Wine Is Not an Emulator” ,它指的是驱动这项技术的代码。开源开发者从 1993 年就开始致力将应用程序的任何传入 Windows API 调用翻译为 POSIX 调用。

这是一个令人十分惊讶的编程壮举,尤其是考虑到这个项目是独立运行的,没有来自微软的帮助(至少可以这样说),但是也有局限性。一个应用程序偏离 Windows API 的 “内核” 越远,WINE 就越不能预期应用程序的请求。有一些供应商可以弥补这一点,尤其是 CodeweaversValve Software。在需要翻译应用程序的制作者和翻译的人们及公司之间没有协调配合,因此,比如说一个更新的软件作品和从 WINE 总部 获得完美适配状态之间可能会有一些时间上的滞后。

然而,如果你想在 Linux 上运行一个著名的 Windows 应用程序,WINE 可能已经为它准备好了可能性。

安装 WINE

你可以从你的 Linux 发行版的软件包存储库中安装 WINE 。在 Fedora、CentOS Stream 或 RHEL 系统上:

$ sudo dnf install wine

在 Debian、Linux Mint、Elementary 及相似的系统上:

$ sudo apt install wine

WINE 不是一个你自己启动的应用程序。当启动一个 Windows 应用程序时,它是一个被调用的后端。你与 WINE 的第一次交互很可能就发生在你启动一个 Windows 应用程序的安装程序时。

安装一个应用程序

TinyCAD 是一个极好的用于设计电路的开源应用程序,但是它仅在 Windows 上可用。虽然它是一个小型的应用程序,但是它确实包含一些 .NET 组件,因此应该能对 WINE 进行一些压力测试。

首先,下载 TinyCAD 的安装程序。Windows 安装程序通常都是这样,它是一个 .exe 文件。在下载后,双击文件来启动它。

WINE TinyCAD 安装向导

TinyCAD 的 WINE 安装向导

像你在 Windows 上一样逐步完成安装程序。通常最好接受默认选项,尤其是与 WINE 有关的地方。WINE 环境基本上是独立的,隐藏在你的硬盘驱动器上的一个 drive_c 目录中,作为 Windows 应用程序使用的一个文件系统的仿真根目录。

WINE TinyCAD 安装和目标驱动器

WINE TinyCAD 目标驱动器

安装完成后,应用程序通常会为你提供启动机会。如果你正准备测试一下它的话,启动应用程序。

启动 Windows 应用程序

除了在安装后的第一次启动外,在正常情况下,你启动一个 WINE 应用程序的方式与你启动一个本地 Linux 应用程序相同。不管你使用应用程序菜单、活动屏幕或者只是在运行器中输入应用程序的名称,在 WINE 中运行的桌面 Windows 应用程序都会被视为在 Linux 上的本地应用程序。

TinyCAD 使用 WINE 运行

通过 WINE 的支持来运行 TinyCAD

当 WINE 失败时

我在 WINE 中的大多数应用程序,包括 TinyCAD ,都能如期运行。不过,也会有例外。在这些情况下,你可以等几个月来查看 WINE 开发者 (或者,如果是一款游戏,就等候 Valve Software)是否进行追加修补,或者你可以联系一个像 Codeweavers 这样的供应商来查看他们是否出售对你所需要的应用程序的服务支持。

WINE 是种欺骗,但它用于正道

一些 Linux 用户觉得:如果你使用 WINE 的话,你就是在“欺骗” Linux。它可能会让人有这种感觉,但是 WINE 是一个开源项目,它使用户能够切换到 Linux ,并且仍然能够运行工作或爱好所需的应用程序。如果 WINE 解决了你的问题,让你使用 Linux,那就使用它,并拥抱 Linux 的灵活性。


via: https://opensource.com/article/21/2/linux-wine

作者:Seth Kenlon 选题:lujun9972 译者:robsean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Erlang 是一种用于构建大规模可扩展实时系统的函数式编程语言。Erlang 最初是由 爱立信 创建的专有软件,后来被开源。

Erlang 在 Ubuntu 的 Universe 仓库 中可用。启用该仓库后,你可以使用下面的命令轻松安装它:

sudo apt install erlang

但是,Ubuntu 仓库提供的 Erlang 版本可能不是最新的

如果你想要 Ubuntu 上最新的 Erlang 版本,你可以添加 Erlang Solutions 提供的仓库。它们为各种 Linux 发行版、Windows 和 macOS 提供了预编译的二进制文件。

如果你之前安装了一个名为 erlang 的包,那么它将会被升级到由添加的仓库提供的较新版本。

在 Ubuntu 上安装最新版本的 Erlang

你需要在 Linux 终端下载密钥文件。你可以使用 wget 工具,所以请确保你已经安装了它:

sudo apt install wget

接下来,使用 wget 下载 Erlang Solution 仓库的 GPG 密钥,并将其添加到你的 apt 打包系统中。添加了密钥后,你的系统就会信任来自该仓库的包。

wget -O- https://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc | sudo apt-key add -

现在,你应该在你的 APT sources.list.d 目录下为 Erlang 添加一个文件,这个文件将包含有关仓库的信息,APT 包管理器将使用它来获取包和未来的更新。

对于 Ubuntu 20.04(和 Ubuntu 20.10),使用以下命令:

echo "deb https://packages.erlang-solutions.com/ubuntu focal contrib" | sudo tee /etc/apt/sources.list.d/erlang-solution.list

我知道上面的命令提到了 Ubuntu 20.04 focal,但它也适用于 Ubuntu 20.10 groovy。

对于 Ubuntu 18.04,使用以下命令:

echo "deb https://packages.erlang-solutions.com/ubuntu bionic contrib" | sudo tee /etc/apt/sources.list.d/erlang-solution.list

你必须更新本地的包缓存,以通知它关于新添加的仓库的包。

sudo apt update

你会注意到,它建议你进行一些升级。如果你列出了可用的升级,你会在那里找到 erlang 包。要更新现有的 erlang 版本或重新安装,使用这个命令:

sudo apt install erlang

安装好后,你可以测试一下。

要退出 Erlang shell,使用 Ctrl+g,然后输入 q,由于我从来没有用过 Erlang,所以我只好尝试了一些按键,然后发现了操作方法。

删除 erlang

要删除该程序,请使用以下命令:

sudo apt remove erlang

还会有一些依赖关系。你可以用下面的命令删除它们:

sudo apt autoremove

如果你愿意,你也可以删除添加的仓库文件。

sudo rm /etc/apt/sources.list.d/erlang-solution.list

就是这样。享受在 Ubuntu Linux 上使用 Erlang 学习和编码的乐趣。


via: https://itsfoss.com/install-erlang-ubuntu/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

终端仿真器(或简称终端)是任何 Linux 发行版中不可或缺的一部分。

当你改变发行版的主题时,往往终端也会自动得到改造。但这并不意味着你不能进一步定制终端。

事实上,很多读者都问过我们,为什么我们截图或视频中的终端看起来那么酷,我们用的是什么字体等等。

为了回答这个经常被问到的问题,我将向你展示一些简单或复杂的调整来改变终端的外观。你可以在下图中对比一下视觉上的差异:

自定义 Linux 终端

本教程利用 Pop!\_OS 上的 GNOME 终端来定制和调整终端的外观。但是,大多数建议也应该适用于其他终端。

对于大多数元素,如颜色、透明度和字体,你可以利用 GUI 来调整它,而不需要输入任何特殊的命令。

打开你的终端。在右上角寻找汉堡菜单。在这里,点击 “偏好设置”,如下图所示:

在这里你可以找到改变终端外观的所有设置。

技巧 0:使用独立的终端配置文件进行定制

我建议你建立一个新的配置文件用于你的定制。为什么要这样做?因为这样一来,你的改变就不会影响到终端的主配置文件。假设你做了一些奇怪的改变,却想不起默认值?配置文件有助于分离你的定制。

如你所见,我有个单独的配置文件,用于截图和制作视频。

终端配置文件

你可以轻松地更改终端配置文件,并使用新的配置文件打开一个新的终端窗口。

更改终端配置文件

这就是我想首先提出的建议。现在,让我们看看这些调整。

技巧 1:使用深色/浅色终端主题

你可以改变系统主题,终端主题也会随之改变。除此之外,如果你不想改变系统主题。你也可以切换终端的深色主题或浅色主题,

一旦你进入“偏好设置”,你会注意到在“常规”选项中可以改变主题和其他设置。

技巧 2:改变字体和大小

选择你要自定义的配置文件。现在你可以选择自定义文本外观、字体大小、字体样式、间距、光标形状,还可以切换终端铃声。

对于字体,你只能改成你系统上可用的字体。如果你想要不同的字体,请先在你的 Linux 系统上下载并安装字体。

还有一点! 要使用等宽字体,否则字体可能会重叠,文字可能无法清晰阅读。如果你想要一些建议,可以选择 Share Tech Mono(开源)或 Larabiefont(不开源)。

在“文本”选项卡下,选择“自定义字体”,然后更改字体及其大小(如果需要)。

技巧 3:改变调色板和透明度

除了文字和间距,你还可以进入“颜色”选项,改变终端的文字和背景的颜色。你还可以调整透明度,让它看起来更酷。

正如你所注意到的那样,你可以从一组预先配置的选项中选择调色板,也可以自己调整。

如果你想和我一样启用透明,点击“使用透明背景”选项。

如果你想要和你的系统主题类似的颜色设置,你也可以选择使用系统主题的颜色。

技巧 4:调整 bash 提示符变量

通常当你启动终端时,无需任何修改你就会看到你的用户名和主机名(你的发行版名称)作为 bash 提示符。

例如,在我的例子中,它会是 “ankushdas@pop-os:~$”。然而,我把 主机名永久地改成了 “itsfoss”,所以现在看起来像这样:

要改变主机名,你可以键入:

hostname 定制名称

然而,这只适用于当前会话。因此,当你重新启动时,它将恢复到默认值。要永久地更改主机名,你需要输入:

sudo hostnamectl set-hostname 定制名称

同样,你也可以改变你的用户名,但它需要一些额外的配置,包括杀死所有与活动用户名相关联的当前进程,所以我们会跳过用它来改变终端的外观/感觉。

技巧 5:不推荐:改变 bash 提示符的字体和颜色(面向高级用户)

然而,你可以使用命令调整 bash 提示符的字体和颜色。

你需要利用 PS1 环境变量来控制提示符的显示内容。你可以在 手册页 中了解更多关于它的信息。

例如,当你键入:

echo $PS1

在我这里输出:

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$

我们需要关注的是该输出的第一部分:

\[\e]0;\u@\h: \w\a\]$

在这里,你需要知道以下几点:

  • \e 是一个特殊的字符,表示一个颜色序列的开始。
  • \u 表示用户名,后面可以跟着 @ 符号。
  • \h 表示系统的主机名。
  • \w 表示基本目录。
  • \a 表示活动目录。
  • $ 表示非 root 用户。

在你的情况下输出可能不一样,但变量是一样的,所以你需要根据你的输出来试验下面提到的命令。

在你这样做之前,请记住这些:

  • 文本格式代码:0 代表正常文本,1 代表粗体,3 代表斜体,4 代表下划线文本。
  • 背景色的颜色范围:40 - 47
  • 文本颜色的颜色范围:30 - 37

你只需要键入以下内容来改变颜色和字体:

PS1="\e[41;3;32m[\u@\h:\w\a\$]"

这是输入该命令后 bash 提示符的样子:

如果你注意到这个命令,就像上面提到的,\e 可以帮助我们分配一个颜色序列。

在上面的命令中,我先分配了一个背景色,然后是文字样式,接着是字体颜色,然后是 m。这里,m 表示颜色序列的结束。

所以,你要做的就是,调整这部分:

41;3;32

命令其余部分应该是不变的,你只需要分配不同的数字来改变背景色、文字样式和文字颜色。

要注意的是,这并没有特定的顺序,你可以先指定文字样式,再指定背景色,最后指定文字颜色,如 3;41;32,这里的命令就变成了:

PS1="\e[3;41;32m[\u@\h:\w\a\$]"

正如你所注意到的,无论顺序如何,颜色的定制都是一样的。所以,只要记住自定义的代码,并在你确定你想把它作为一个永久的变化之前,试试它。

上面我提到的命令会临时定制当前会话的 bash 提示符。如果你关闭了会话,你将失去这个自定义设置。

所以,要想把它变成一个永久的改变,你需要把它添加到 .bashrc 文件中(这是一个配置文件,每次加载会话时都会加载)。

简单键入如下命令来访问该文件:

nano ~/.bashrc

除非你明确知道你在做什么,否则不要改变任何东西。而且,为了可以恢复设置,你应该把 PS1 环境变量的备份(默认情况下复制粘贴其中的内容)保存到一个文本文件中。

所以,即使你需要默认的字体和颜色,你也可以再次编辑 .bashrc 文件并粘贴 PS1 环境变量。

附赠技巧:根据你的墙纸改变终端的调色板

如果你想改变终端的背景和文字颜色,但又不知道该选哪种颜色,你可以使用一个基于 Python 的工具 Pywal,它可以 根据你的壁纸 或你提供的图片自动改变终端的颜色。

如果你有兴趣使用这个工具,我之前已经详细介绍过了。

总结

当然,使用 GUI 定制很容易,同时也可以更好地控制你可以改变的东西。但是,需要知道命令也是必要的,万一你开始 使用 WSL 或者使用 SSH 访问远程服务器,无论如何都可以定制你的体验。

你是如何定制 Linux 终端的?在评论中与我们分享你的秘方。


via: https://itsfoss.com/customize-linux-terminal/

作者:Ankush Das 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

虚拟环境是安全地使用不同版本的 Python 和软件包组合的关键。

 title=

Python 对管理虚拟环境的支持,已经提供了一段时间了。Python 3.3 甚至增加了内置的 venv 模块,用于创建没有第三方库的环境。Python 程序员可以使用几种不同的工具来管理他们的环境,我使用的工具叫做 virtualenvwrapper

虚拟环境是将你的 Python 项目及其依赖关系与你的系统安装的 Python 分离的一种方式。如果你使用的是基于 macOS 或 Linux 的操作系统,它很可能在安装中附带了一个 Python 版本,事实上,它很可能依赖于那个特定版本的 Python 才能正常运行。但这是你的计算机,你可能想用它来达到自己的目的。你可能需要安装另一个版本的 Python,而不是操作系统提供的版本。你可能还需要安装一些额外的库。尽管你可以升级你的系统 Python,但不推荐这样做。你也可以安装其他库,但你必须注意不要干扰系统所依赖的任何东西。

虚拟环境是创建隔离的关键,你需要安全地修改不同版本的 Python 和不同组合的包。它们还允许你为不同的项目安装同一库的不同版本,这解决了在相同环境满足所有项目需求这个不可能的问题。

为什么选择 virtualenvwrapper 而不是其他工具?简而言之:

  • venv 需要在项目目录内或旁边有一个 venv 目录不同,virtualenvwrapper 将所有环境保存在一个地方:默认在 ~/.virtualenvs 中。
  • 它提供了用于创建和激活环境的命令,而且激活环境不依赖于找到正确的 activate 脚本。它只需要(从任何地方)workon projectname而不需要 source ~/Projects/flashylights-env/bin/activate

开始使用

首先,花点时间了解一下你的系统 Python 是如何配置的,以及 pip 工具是如何工作的。

以树莓派系统为例,该系统同时安装了 Python 2.7 和 3.7。它还提供了单独的 pip 实例,每个版本一个:

  • 命令 python 运行 Python 2.7,位于 /usr/bin/python
  • 命令 python3 运行 Python 3.7,位于 /usr/bin/python3
  • 命令 pip 安装 Python 2.7 的软件包,位于 /usr/bin/pip
  • 命令 pip3 安装 Python 3.7 的包,位于 /usr/bin/pip3

 title=

在开始使用虚拟环境之前,验证一下使用 pythonpip 命令的状态是很有用的。关于你的 pip 实例的更多信息可以通过运行 pip debugpip3 debug 命令找到。

在我运行 Ubuntu Linux 的电脑上几乎是相同的信息(除了它是 Python 3.8)。在我的 Macbook 上也很相似,除了唯一的系统 Python 是 2.6,而我用 brew 安装 Python 3.8,所以它位于 /usr/local/bin/python3(和 pip3 一起)。

安装 virtualenvwrapper

你需要使用系统 Python 3 的 pip 安装 virtualenvwrapper

sudo pip3 install virtualenvwrapper

下一步是配置你的 shell 来加载 virtualenvwrapper 命令。你可以通过编辑 shell 的 RC 文件(例如 .bashrc.bash_profile.zshrc)并添加以下几行:

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh

 title=

如果你的 Python 3 位于其他地方,请根据你的设置修改第一行。

关闭你的终端,然后重新打开它,这样才能生效。第一次打开终端时,你应该看到 virtualenvwrapper 的一些输出。这只会发生一次,因为一些目录是作为设置的一部分被创建的。

现在你应该可以输入 mkvirtualenv --version 命令来验证 virtualenvwrapper 是否已经安装。

创建一个新的虚拟环境

假设你正在进行一个名为 flashylights 的项目。要用这个名字创建一个虚拟环境,请运行该命令:

mkvirtualenv flashylights

环境已经创建并激活,所以你会看到 (flashlylights) 出现在你的提示前:

 title=

现在环境被激活了,事情发生了变化。python 现在指向一个与你之前在系统中识别的 Python 实例完全不同的 Python 实例。它为你的环境创建了一个目录,并在其中放置了 Python 3 二进制文件、pip 命令等的副本。输入 which pythonwhich pip 来查看它们的位置。

 title=

如果你现在运行一个 Python 程序,你可以用 python 代替 python3 来运行,你可以用 pip 代替 pip3。你使用 pip安装的任何包都将只安装在这个环境中,它们不会干扰你的其他项目、其他环境或系统安装。

要停用这个环境,运行 deactivate 命令。要重新启用它,运行 workon flashylights

你可以用 workon 或使用 lsvirtualenv 列出所有可用的环境。你可以用 rmvirtualenv flashylights 删除一个环境。

在你的开发流程中添加虚拟环境是一件明智的事情。根据我的经验,它可以防止我在系统范围内安装我正在试验的库,这可能会导致问题。我发现 virtualenvwrapper 是最简单的可以让我进入流程的方法,并无忧无虑地管理我的项目环境,而不需要考虑太多,也不需要记住太多命令。

高级特性

  • 你可以在你的系统上安装多个 Python 版本(例如,在 Ubuntu 上使用 deadsnakes PPA),并使用该版本创建一个虚拟环境,例如,mkvirtualenv -p /usr/bin/python3.9 myproject
  • 可以在进入和离开目录时自动激活、停用。
  • 你可以使用 postmkvirtualenv 钩子在每次创建新环境时安装常用工具。

更多提示请参见文档

本文基于 Ben Nuttall 在 Tooling Tuesday 上关于 virtualenvwrapper 的帖子,经许可后重用。


via: https://opensource.com/article/21/2/python-virtualenvwrapper

作者:Ben Nuttall 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

云上运维,那就是和云上资源和产品打交道,无疑会涉及到一系列的资源部署。比如简单地使用一台云服务器,就需要运维人员依次创建 VPC、VSwitch、安全组和云服务器实例,如果想创建一个集群,那还要进一步创建负载均衡、数据库和多个云服务器实例。

随着业务规模的不断扩大,IT系统和环境日益复杂,人工一个一个创建资源的方式显然不可取,许多人正在转向自动化资源部署和配置的工具。

本文将基于基础设施即代码 IaC 理念,分享如何借助自动化编排工具实现自动化部署,使得运上运维工作更为高效。

手动/半手动云上运维的五大痛点

对于云上资源的部署,如果你的云上运维还处于手动或是半手动运维阶段,那么大部分工作是通过控制台选择特定资源规格参数进行创建,还有一部分是使用 CLI(如 aliyun-cli)或者 SDK 直接调用接口来创建资源。但随着企业的云上业务规模不断扩大,不论是哪种方式,或多或少都会遇到下述五个问题:

  • 部署效率低。手动创建对于创建少量种类的资源来说倒是种很直观的方式,但一旦涉及到大量不同资源时,尤其是资源之间还有依赖关系,这时候会发现需要在不同的产品控制台之间来回切换,还要时刻关注创建进度,才能再去创建下一个依赖它的资源,整个过程所耗费的时间和精力可想而知,相信不少人有深有体会。
  • 可复制性差。当手动创建好了一系列的资源后,如果需要针对不同的环境(如预发、测试和生产)或不同的地域(如北京和上海)创建完全相同的资源,则又需要花费很多时间一步步地进行操作,无法直接复制、做到一键部署。
  • 一致性差。手动创建还有一个非常大的问题,那就是非常容易出现配置错误,很难保证两套环境中各个资源配置是完全相同的。
  • 管理困难。资源的创建只是开始,可能还需要针对这批资源做扩缩容、更新特定资源的规格等操作。但手动运维的方式就导致没有统一管理这批资源的入口,仍需要分别到各产品控制台上操作。随着资源数越来越多,资源管理就愈发难以维护。
  • 难以 DevOps。每次开发、测试或部署软件应用程序时都可能需要手动部署基础设施,既无法对基础设施进行版本控制,也无法对其变动进行评审,更无法做到敏捷部署。

其实,我们都知道这些问题的背后是因为资源的部署还未做到自动化。但这些问题也不断促使着我们思考应该通过什么样的方式来解决这些痛点,才能让整个资源部署过程自动化。

引入基础设施即代码 IaC 理念,实现云上资源自动化部署

在真正做到自动化部署之前,不妨回头看看所需要创建的云服务资源(如 VPC、VSwitch、ECS 实例等),它们相对于Web服务等应用程序来说都是云上的基础设施,如果把这些基础设施想象成一段“代码”,在“代码”中定义产品、规格、数量等信息,那么是不是就可以通过这段“代码”来管理整个基础设施了呢?

这就是 基础设施即代码 Infrastructure as Code (IaC)的理念,将基础设施配置视为软件编程。Kief Morris 在《Infarftruce as Code》一书中对基础设施即代码是这么定义的:

“基础设施即代码是一种使用新的技术来构建和管理动态基础设施的方式。它把基础设施、工具和服务以及对基础设施的管理本身作为一个软件系统,采纳软件工程实践以结构化的安全的方式来管理对系统的变更。”

引入 IaC 的理念,运维人员可以将基础设施的部署和管理过程变得敏捷:

  • 在模板(宽泛意义上的代码)中定义基础设施,即各类云资源及其规格、数量等属性、云资源之间的依赖;
  • 使用版本控制(如 Git)管理模板,并提交评审;
  • 通过评审后由自动化部署工具使用模板来创建/更新基础设施;

基础设施的部署和管理变得便捷后,上述提到的手动运维/半手动运维的痛点问题就可以得到很好的解决:

  • 提升部署效率。使用自动化部署工具进行部署,相对于人工部署的效率将大大提升。
  • 标准化和一致性。将基础设施的内容通过模板的形式保存,对基础设施的变更由对模板的变更来实现,实现了基础设施管理的标准化。此外,使用相同的模板在不同地域部署,也能够保证资源的一致性。
  • 易于管理。对基础设施的管理不再分散于各个产品控制台,而统一到单个模板,使得管理成本大大降低。
  • 敏捷化工作流程。通过基础设施管理流程的规范化和标准化,资源部署的整个过程就变得敏捷。
  • 审计和回滚。对模板进行版本管理,使得对基础设施变动的审计和回退到某个特定版本成为了可能。

四个常见的 IaC 自动化配置与编排工具

当前,有很多 IaC 自动化部署工具,有第三方资源编排工具,也有云服务商提供的云原生的资源编排工具,这里介绍四个自动化配置与编排工具:

  1. 阿里云资源编排服务 ROS(Resource Orchestration Service),这是云原生编排工具,通过编写 JSON/YAML 格式的模板,在模板中定义所需的ECS实例、数据库实例等云服务资源以及资源依赖关系等,然后再根据模板在 ROS 中创建资源栈,ROS 服务端将根据模板自动完成所有资源的创建和配置,实现自动化部署及运维。而资源栈则管理着模板中定义的所有资源,并可通过新模板来更新资源栈,包括资源的新增、更新或删除等操作。
  2. AWS CloudFormation,也是云原生的编排工具,运维人员也是通过 JSON/YAML 格式的模板定义云服务资源,通过资源栈管理这些资源。
  3. HashiCorp Terraform,这是一个开源的自动化编排工具。以配置文件为驱动,可以在文件中定义所要管理的组件,即基础设施资源,以此生成一个可执行的计划,通过执行这个计划来完成所定义组件的创建,增量式的变更和持续的管理。如果不可执行,会提示报错。Terraform 不仅可以管理 IaaS 层的资源,如计算实例、网络实例和存储实例等,也可以管理更上层的服务,如DNS 域名和解析记录、SaaS 应用的功能等。
  4. Pulumi,与 Terraform 一样也是开源项目,但它与 Terraform 的重要区别在于:可以用熟悉的编程语言来编写声明式配置,而不需要额外学习云服务商特定的模板语言来写配置。

对于自动化配置与编排工具的选择,笔者的建议是:

  1. 如果你的业务部署在单一云平台,就选择云平台提供的资源编排工具,在阿里云平台就用 ROS、在 AWS 平台就用 CloudFormation,原因很简单:云平台提供的工具是云原生,是免费的托管服务,在服务端就可以执行自动化部署;同时,它还实现了云原生的访问控制、编排资源与实际资源差异检测等功能,用起来比较省心。
  2. 如果你的业务是部署在多个云平台,建议使用第三方的 Terraform 和 Pulumi,因为它不仅可以进行多云资源的部署和管理,还能管理除云以外的其他资源,如 Kubernetes。

如何利用编排工具进行自动化部署和管理?

对于运维人员来说,使用 IaC 理念的自动化部署工具的门槛其实不高,使用步骤也非常简单,主要来说就是编写模板和使用模板。这里谈谈编写模板和使用模板有哪些注意事项,如何才能更好地利用工具、更好地提升运维效率。

1、编写模板的三个注意事项

确认好自动化部署工具,就可以根据不同工具的模板语言来编写对应的模板文件。如果你选择云服务商提供的云原生的编排工具, 编写模板这里,有三点注意事项想重点提醒一下:

  1. 注意资源的依赖关系。不恰当的依赖或少了依赖都会导致资源创建出错。
  2. 注意使用通用属性作为参数。比如实例规格等就是比较通用的属性,建议使用同一份模板,指定不同的参数来达到部署不同规格实例的目的。
  3. 使用有价值的属性作为输出。比如实例 ID、连接地址等内容就是有价值的属性,它们都是在资源创建完成后才能获取到,把这些属性作为整个模板的输出,可以方便后续的查看和管理。

2、自动解析依赖关系,自动化部署基础设施

编写完模板后,就可以通过对应的自动化部署工具将模板转化为真正的资源。上述提到的编排工具都能解析资源的依赖关系,并能先后创建这些资源。同时,对于互不依赖的资源也能够并行创建。

  • 对于阿里云 ROS 和 AWS CloudFormation 来说,可使用模板来创建一个资源栈。一个资源栈即一组云上资源,也就是在模板中定义的基础设施。后续当需要增/删/改一些资源时,也是通过使用模板来更新资源栈来达到目的。
  • 对于 Terraform 来说,可使用配置文件生成一个可执行的计划,通过执行这个计划来完成所定义资源/组件的创建,增量式的变更和持续的管理。
  • 对于 Pulumi 来说,则是直接执行代码来进行部署。

这样的部署方式既能使得资源能按照合理的顺序创建出来,又能够提升部署效率,在遇到异常情况时也会进行一定程度的重试,真正让整个自动化部署过程变得稳定和高效。

以基础设施代码化为基础,进一步高效运维

当运维工作完成整个基础设施模板化后,DevOps 就变得更加容易。我们可以使用版本管理工具(如 Git)管理描述当前基础设施的模板,使用阿里云云效/AWS CodePipline/Jenkins 创建一个从代码提交触发到人工卡点再到资源栈部署的流水线,这样整个基础设施的管理就会变得更加敏捷和自动化。

图1: 基础设施变更的流程图

  1. 在每次变更模板后,将本地仓库的分支内容推送到远程仓库,并发起评审;
  2. 若评审不通过,则修改模板后重新发起评审;若评审通过,则自动触发流水线;
  3. 流水线触发人工卡点,通知上级管理员检查此次变更。若不同意,则终止;若同意,则进入下一个步骤;
  4. 若是首次提交模板,则创建资源栈(即创建基础设施);反之,则更新资源栈(即更新基础设施)。

基础设施变更及预览

IT 基础设施并非一成不变,随着业务的变化,我们可能面临扩缩容场景,也可能面临整个架构的变化。好在基于 IaC 的理念,我们只需要描述基础设施最新配置,而不用担心如何进行变更。但即使如此,我们需要在变更前知道究竟会发生哪些变化。阿里云ROS 和 AWS CloudFormation 的更改集功能,Terraform 的执行计划均能让我们提前了解到变更内容。

例如,由于业务变化,在基于图1的架构基础上,在阿里云平台上新增一台 ECS 实例,并使用 SLB 实例为两台 ECS 实例做负载均衡。在编写好新的模板后,就可以使用更改集功能来感知变化,下图是 阿里云ROS 的一个变更示例:

在确认无误后,便可以执行变更。随后,自动化编排工具便会对整个基础设施进行更新,根据模板发生的变化来决定新增、更改或删除哪些资源。

基础设施偏差检测和纠正

尽管使用了自动化编排工具部署资源,仍可能有部分人员会通过非标准化的方式(比如通过控制台或 API)修改了基础设施中部分资源的属性,使得资源实际情况和模板中定义的资源产生了差异。好的自动化编排工具不仅具备检测基础设施实际属性和模板中定义的属性之间差异的能力;还能基于差异结果纠正模板或实际资源,使得模板和基础设施保持一致。

当前,通过 阿里云 ROS 和 AWS CloudFormation 的偏差检测能力,就可以轻松地发现实际资源和模板中定义的资源之间的差异,并可通过偏差纠正功能使模板内容和实际资源保持一致。

总结

在 IT 基础设施全面上云的趋势下,云上手工运维的方式已难以为继,出现了部署效率低、可复制性差、一致性差、管理困难、难以 DevOps 等痛点。阿里云 ROS/AWS CloudFormation/Terraform/Pulumi 等自动化编排工具都是基于基础设施即代码(IaC)的理念,可以通过模板来定义基础设施,同时标准化和自动化整个部署过程,配合更改集、偏差检测等能力,再结合流水线,真正实现了 IT 基础设施管理的 DevOps。建议运维人员可以重点关注和巧用工具,将帮助你更好的提升运维效率,解放生产力。


作者介绍:

王斌鑫,从事阿里云弹性计算资源编排工具的研发工作,热爱开源和写作。阿里云凌云时刻出品人、PyCon China出品人。

KDE Plasma 桌面 无疑是定制化的巅峰,因为你几乎可以改变任何你想要的东西。你甚至可以让它充当 平铺窗口管理器

KDE Plasma 提供的定制化程度会让初学者感到困惑。用户会迷失在层层深入的选项之中。

为了解决这个问题,我将向你展示你应该注意的 KDE Plasma 定制的关键点。这里有 11 种方法可以改变你的 KDE 桌面的外观和感觉。

定制 KDE Plasma

我在本教程中使用了 KDE Neon,但你可以在任何使用 KDE Plasma 桌面的发行版中遵循这些方法。

1、Plasma 桌面小工具

桌面小工具可以增加用户体验的便利性,因为你可以立即访问桌面上的重要项目。

现在学生和专业人士使用电脑的时候越来越多,其中一个有用的小部件是便签。

右键点击桌面,选择“ 添加小工具 Add Widgets ”。

选择你喜欢的小部件,然后简单地将其拖放到桌面上。

2、桌面壁纸

不用说,更换壁纸可以改变桌面的外观。

在“ 壁纸 Wallpaper ”选项卡中,你可以改变的不仅仅是壁纸。从“ 布局 Layout ”下拉菜单中,你还可以选择桌面是否放置图标。

文件夹视图 Folder View ”布局的命名来自于主目录中的传统桌面文件夹,你可以在那里访问你的桌面文件。因此,“ 文件夹视图 Folder View ”选项将保留桌面上的图标。

如果你选择“ 桌面 Desktop ”布局,它会使你的桌面图标保持自由而普通。当然,你仍然可以访问主目录下的桌面文件夹。

在“ 壁纸类型 Wallpaper Type ”中,你可以选择是否要壁纸,是静止的还是变化的,最后在“ 位置 Positioning ”中,选择它在屏幕上的样子。

3、鼠标动作

每一个鼠标按键都可以配置为以下动作之一:

  • 切换窗口 Switch Window
  • 切换桌面 Switch Desktop
  • 粘贴 Paste
  • 标准菜单 Standard Menu
  • 应用程序启动器 Application Launcher
  • 切换活动区 Switch Activity

右键默认设置为 标准菜单 Standard Menu ,也就是在桌面上点击右键时的菜单。点击旁边的设置图标可以更改动作。

4、桌面内容的位置

只有在壁纸选项卡中选择“文件夹视图”时,该选项才可用。默认情况下,桌面上显示的内容是你在主目录下的“ 桌面 Desktop ”文件夹中的内容。这个位置选项卡让你可以选择不同的文件夹来改变桌面上的内容。

5、桌面图标

在这里,你可以选择图标的排列方式(水平或垂直)、左右对齐、排序标准及其大小。如果这些还不够,你还可以探索其他的美学功能。

6、桌面过滤器

让我们坦然面对自己吧! 相信每个用户最后都会在某些时候出现桌面凌乱的情况。如果你的桌面变得乱七八糟,找不到文件,你可以按名称或类型应用过滤器,找到你需要的文件。虽然,最好是养成一个良好的文件管理习惯!

7、应用仪表盘

如果你喜欢 GNOME 3 的应用程序启动器,那么你可以试试 KDE 应用程序仪表板。你所要做的就是右击菜单图标 > “ 显示替代品 Show Alternatives ”。

点击“ 应用仪表盘 Application Dashboard ”。

8、窗口管理器主题

就像你在 Xfce 自定义教程 中看到的那样,你也可以在 KDE 中独立改变窗口管理器的主题。这样你就可以为面板选择一种主题,为窗口管理器选择另外一种主题。如果预装的主题不够用,你可以下载更多的主题。

不过受 MX Linux Xfce 版的启发,我还是忍不住选择了我最喜欢的 “Arc Dark”。

导航到“ 设置 Settings ” > “ 应用风格 Application Style ” > “ 窗口装饰 Window decorations ” > “ 主题 Theme ”。

9、全局主题

如上所述,KDE Plasma 面板的外观和感觉可以从“ 设置 Settings ” > “ 全局主题 Global theme ”选项卡中进行配置。预装的主题数量并不多,但你可以下载一个适合自己口味的主题。不过默认的 “Breeze Dark” 是一款养眼的主题。

10、系统图标

系统图标样式对桌面的外观有很大的影响。无论你选择哪一种,如果你的全局主题是深色的,你应该选择深色图标版本。唯一的区别在于图标文字对比度上,图标文字对比度应该与面板颜色反色,使其具有可读性。你可以在系统设置中轻松访问“ 图标 Icons ”标签。

11、系统字体

系统字体并不是定制的重点,但如果你每天有一半的时间都在屏幕前,它可能是眼睛疲劳的因素之一。有阅读障碍的用户会喜欢 OpenDyslexic 字体。我个人选择的是 Ubuntu 字体,不仅我觉得美观,而且是在屏幕前度过一天的好字体。

当然,你也可以通过下载外部资源来 在 Linux 系统上安装更多的字体

总结

KDE Plasma 是 Linux 社区最灵活和可定制的桌面之一。无论你是否是一个修理工,KDE Plasma 都是一个不断发展的桌面环境,具有惊人的现代功能。更好的是,它也可以在性能中等的系统配置上进行管理。

现在,我试图让本指南对初学者友好。当然,可以有更多的高级定制,比如那个 窗口切换动画。如果你知道一些别的技巧,为什么不在评论区与我们分享呢?


via: https://itsfoss.com/kde-customization/

作者:Dimitrios Savvopoulos 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出