如何使用 Ansible 克隆 Git 存储库

使用 Ansible 配置远程服务器时,您可能会遇到需要从 Git 存储库获取文件的情况。 这可能是来自公共存储库的软件包或私有存储库上的配置文件。

要使用 Ansible 远程克隆 git repo,您​​可以将这样的条目添加到您的 Playbook。

---
 - hosts: all
   tasks:
   - name: Clone a github repository
     git:
       repo: https://github.com/sqlite/sqlite.git
       dest: /home/debian/repos/
       clone: yes
       update: yes

不用担心。 我将通过示例教程解释这些参数的含义以及如何操作。

使用 Ansible 克隆 Git 存储库

我想您已经熟悉 Ansible 基础知识,例如清单、剧本等。如果不熟悉,您可以关注我们的 Ansible 教程系列。

先决条件

您必须在本地计算机上安装 Ansible。 这个 Ansible 实例充当所有远程主机的控制节点。 使用控制节点,您可以创建剧本和任务以在指定的远程机器上执行。

如果您选择遵循本教程,请确保您拥有:

  1. 一个控制节点和一个远程主机。
  2. SSH 密钥对。 控制节点的公钥必须在远程主机的 authorized_keys 文件中可用。
  3. 非root用户 sudo 远程主机上的权限。
  4. 对远程主机上的目录的写访问权以存储克隆的 repo 的内容。

设置 Ansible 库存

在继续之前,您需要设置 Ansible 清单。 Ansible 清单是一个文件,其中包含有关您希望使用 Ansible 管理的远程服务器的信息。

默认情况下,文件位于 /etc/ansible/hosts. 如果不退出,请手动创建此文件。

在此文件中添加远程主机的 IP 地址:

vim /etc/ansible/hosts

它可能看起来像这样:

Save 文件。

使用 Ansible playbook 克隆 Git 存储库

现在您已经配置了清单文件和 SSH 密钥以从控制节点访问远程主机,您可以创建 Ansible Playbook。

使用像 Vim 这样的文本编辑器并创建一个 YAML 文件。

vim clone.yaml

编辑文件并添加以下条目。

---
 - hosts: all
   tasks:
   - name: Clone a github repository
     git:
       repo: https://github.com/sqlite/sqlite.git
       dest: /home/debian/repos/
       clone: yes
       update: yes

在上面的剧本中,您首先定义了一个新任务,并将其命名为“克隆 GitHub 存储库”。

接下来,您正在使用 git 模块来指定链接到 SQLite GitHub 存储库.

然后,您继续定义克隆存储库的目标。 这是远程机器中的本地目录。

您将属性 clone 设置为 yes 以克隆存储库并使用 update 属性对其进行更新。

要运行 playbook,请使用以下命令:

ansible-playbook clone.yaml

如果 playbook 由于 SSH 身份验证而失败,您可以使用 -u 标志将用户名指定为:

ansible-playbook -u debian clone.yaml

任务执行后,您应该将存储库克隆到指定目录中。

您可以登录到远程主机以验证存储库是否已正确克隆:

这应该让您对使用 Ansible 克隆 Git 存储库有一个不错的想法。 有了这些信息,您应该能够根据您的要求将 Git 存储库与 Ansible 一起使用。

如果您有任何问题或建议,请在下方发表评论。