From 6d52ac58567810bb5e7a8e598b510bd3a39e7b15 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 22 Feb 2021 12:48:46 +0800 Subject: [PATCH 1/2] PRF @MjSeven --- ...on, Configuration and Quick Start Guide.md | 150 ++++++++---------- 1 file changed, 70 insertions(+), 80 deletions(-) diff --git a/translated/tech/20200121 Ansible Automation Tool Installation, Configuration and Quick Start Guide.md b/translated/tech/20200121 Ansible Automation Tool Installation, Configuration and Quick Start Guide.md index f0d6e06259..2dac351cec 100644 --- a/translated/tech/20200121 Ansible Automation Tool Installation, Configuration and Quick Start Guide.md +++ b/translated/tech/20200121 Ansible Automation Tool Installation, Configuration and Quick Start Guide.md @@ -1,6 +1,6 @@ [#]: collector: "lujun9972" [#]: translator: "MjSeven" -[#]: reviewer: " " +[#]: reviewer: "wxy" [#]: publisher: " " [#]: url: " " [#]: subject: "Ansible Automation Tool Installation, Configuration and Quick Start Guide" @@ -10,31 +10,25 @@ Ansible 自动化工具安装、配置和快速入门指南 ====== -市场上有很多自动化工具。 +![](https://img.linux.net.cn/data/attachment/album/202102/22/124803cgryrgxqezjllfqg.jpg) -我可以举几个例子,例如 Puppet、Chef、CFEngine、Foreman、Katello、Saltstock、Space Walk,它们被许多组织广泛使用。 +市面上有很多自动化工具。我可以举几个例子,例如 Puppet、Chef、CFEngine、Foreman、Katello、Saltstock、Space Walk,它们被许多组织广泛使用。 ### 自动化工具可以做什么? -自动化工具可以自动执行例行任务,无需人工干预,从而使 Linux 管理员的工作变得更加轻松。 +自动化工具可以自动执行例行任务,无需人工干预,从而使 Linux 管理员的工作变得更加轻松。这些工具允许用户执行配置管理,应用程序部署和资源调配。 -这些工具允许用户执行配置管理,应用程序部署和资源调配。 +### 为什么喜欢 Ansible? -### 为什么喜欢 Ansible? +Ansible 是一种无代理的自动化工具,使用 SSH 执行所有任务,但其它工具需要在客户端节点上安装代理。 -Ansible 是一种无代理的自动化工具,使用 SSH 执行所有任务,但其它工具需要客户端节点上的代理。 - -### 什么是 Ansible? +### 什么是 Ansible? Ansible 是一个开源、易于使用的功能强大的 IT 自动化工具,通过 SSH 在客户端节点上执行任务。 -它是用 Python 构建的,是当今世界上最流行、最强大的编程语言之一。 +它是用 Python 构建的,这是当今世界上最流行、最强大的编程语言之一。两端都需要使用 Python 才能执行所有模块。 -两端都需要使用 Python 才能执行所有模块。 - -它可以配置系统、部署软件和安排高级 IT 任务,例如连续部署或零停机滚动更新。 - -你可以通过 Ansible 轻松执行任何类型的自动化任务,包括简单和复杂的任务。 +它可以配置系统、部署软件和安排高级 IT 任务,例如连续部署或零停机滚动更新。你可以通过 Ansible 轻松执行任何类型的自动化任务,包括简单和复杂的任务。 在开始之前,你需要了解一些 Ansible 术语,这些术语可以帮助你更好的创建任务。 @@ -48,54 +42,50 @@ Ansible 通过 SSH 运行这些模块,并在完成后将其删除。 ![][1] -控制节点,用于控制剧本的全部功能,包括客户端节点(主机)。 +*控制节点,用于控制剧本的全部功能,包括客户端节点(主机)。* - * **控制节点:** 使用 Ansible 在受控节点上执行任务的主机。你可以有多个控制节点,但不能使用 Windows 系统主机当作控制节点。 - * **受控节点:** 控制节点配置的主机列表。 - * **Inventory:** 控制节点管理的一个主机列表,这些节点在 **"/etc/ansible/hosts"** 文件中配置。它包含每个节点的信息,比如 IP 地址或其主机名,还可以根据需要对这些节点进行分组。 - * **模块:** 每个模块用于执行特定任务,目前有 3387 个模块。 - * **ad-hoc:** 它允许你一次运行一个任务,它使用 **/usr/bin/ansible** 二进制文件。 - * **任务:** 每个剧本都有一个任务列表。任务按顺序执行,在受控节点中一次执行一个任务。 - * **剧本:** 你可以使用剧本同时执行多个任务,而使用 ad-hoc 只能执行一个任务。剧本使用 YAML 编写,易于阅读。将来,我们将会写一篇有关剧本的文章,你可以用它来执行复杂的任务。 + * 控制节点Control node:使用 Ansible 在受控节点上执行任务的主机。你可以有多个控制节点,但不能使用 Windows 系统主机当作控制节点。 + * 受控节点Managed node:控制节点配置的主机列表。 + * 清单Inventory:控制节点管理的一个主机列表,这些节点在 `/etc/ansible/hosts` 文件中配置。它包含每个节点的信息,比如 IP 地址或其主机名,还可以根据需要对这些节点进行分组。 + * 模块Module:每个模块用于执行特定任务,目前有 3387 个模块。 + * 点对点ad-hoc:它允许你一次性运行一个任务,它使用 `/usr/bin/ansible` 二进制文件。 + * 任务Task:每个动作Play都有一个任务列表。任务按顺序执行,在受控节点中一次执行一个任务。 + * 剧本Playbook:你可以使用剧本同时执行多个任务,而使用点对点只能执行一个任务。剧本使用 YAML 编写,易于阅读。将来,我们将会写一篇有关剧本的文章,你可以用它来执行复杂的任务。 -### 测试环境: +### 测试环境 -此环境包含一个控制节点(**server.2g.lab**)和三个受控节点(**node1.2g.lab, node2.2g.lab, node3.2g.lab**),它们均在虚拟环境中运行,操作系统分别为: +此环境包含一个控制节点(`server.2g.lab`)和三个受控节点(`node1.2g.lab`、`node2.2g.lab`、`node3.2g.lab`),它们均在虚拟环境中运行,操作系统分别为: -```bash -+---------------------- +---------------+------------- +---------------+ -| System Purpose | Hostname | IP Address | OS | -+---------------------- +---------------+------------- +---------------+ -|Ansible Control Node | server.2g.lab | 192.168.1.7 | Manjaro 18 | -|Managed Node1 | node1.2g.lab | 192.168.1.6 | CentOS7 | -|Managed Node2 | node2.2g.lab | 192.168.1.5 | CentOS8 | -|Managed Node3 | node3.2g.lab | 192.168.1.9 | Ubuntu 18.04 | -|User: daygeek | -+--------------------------------------------------------------------+ -``` +| System Purpose | Hostname | IP Address | OS | +|----------------------|---------------|-------------|---------------| +| Ansible Control Node | server.2g.lab | 192.168.1.7 | Manjaro 18 | +| Managed Node1 | node1.2g.lab | 192.168.1.6 | CentOS7 | +| Managed Node2 | node2.2g.lab | 192.168.1.5 | CentOS8 | +| Managed Node3 | node3.2g.lab | 192.168.1.9 | Ubuntu 18.04 | +| User: daygeek | -### 前置条件: +### 前置条件 * 在 Ansible 控制节点和受控节点之间启用无密码身份验证。 - * 控制节点必须是 Python 2(2.7 版本) 或 Python 3(3.5 或更高版本)。 - * 受控节点必须是 Python 2(2.6 或更高版本) 或 Python 3(3.5 或更高版本)。 - * 如果在远程节点上启用了 SELinux,则在 Ansible 中使用任何与复制、文件、模板相关的功能之前,还需要在它们上安装 **libselinux-python**。 + * 控制节点必须是 Python 2(2.7 版本) 或 Python 3(3.5 或更高版本)。 + * 受控节点必须是 Python 2(2.6 或更高版本) 或 Python 3(3.5 或更高版本)。 + * 如果在远程节点上启用了 SELinux,则在 Ansible 中使用任何与复制、文件、模板相关的功能之前,还需要在它们上安装 `libselinux-python`。 ### 如何在控制节点上安装 Ansible -对于 **"Fedora/RHEL 8/CentOS 8"** 系统,使用 **[DNF 命令][2]** 来安装 ansible。 +对于 Fedora/RHEL 8/CentOS 8 系统,使用 [DNF 命令][2] 来安装 Ansible。 -注意:你需要在 RHEL/CentOS 系统上启用 **[EPEL 仓库][3]**,因为 Ansible 软件包在发行版官方仓库中不可用。 +注意:你需要在 RHEL/CentOS 系统上启用 [EPEL 仓库][3],因为 Ansible 软件包在发行版官方仓库中不可用。 -```bash +``` $ sudo dnf install ansible ``` -对于**“Debian/Ubuntu”**系统,使用 **[APT-GET 命令][4]** 或 **[APT 命令][5]** 来安装 ansible。 +对于 Debian/Ubuntu 系统,使用 [APT-GET 命令][4] 或 [APT 命令][5] 来安装 Ansible。 -配置下面的 PPA 以便在 Ubuntu 上安装最新稳定版本的 ansible。 +配置下面的 PPA 以便在 Ubuntu 上安装最新稳定版本的 Ansible。 -```bash +``` $ sudo apt update $ sudo apt install software-properties-common $ sudo apt-add-repository --yes --update ppa:ansible/ansible @@ -104,34 +94,34 @@ $ sudo apt install ansible 对于 Debian 系统,配置以下源列表: -```bash +``` $ echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main" | sudo tee -a /etc/apt/sources.list.d/ansible.list $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 $ sudo apt update $ sudo apt install ansible ``` -对于**“Arch Linux”**系统,使用 **[Pacman 命令][6]** 来安装 ansible: +对于 Arch Linux 系统,使用 [Pacman 命令][6] 来安装 Ansible: -```bash +``` $ sudo pacman -S ansible ``` -对于**“RHEL/CentOS”**系统, 使用 **[YUM 命令][7]** 来安装 ansible: +对于 RHEL/CentOS 系统,使用 [YUM 命令][7] 来安装 Ansible: -```bash +``` $ sudo yum install ansible ``` -对于**“openSUSE”**系统,使用 **[Zypper 命令][8]** 来安装 ansible: +对于 openSUSE 系统,使用 [Zypper 命令][8] 来安装 Ansible: -```bash +``` $ sudo zypper install ansible ``` -或者,你可以使用 **[Python PIP 包管理工具][9]** 来安装: +或者,你可以使用 [Python PIP 包管理工具][9] 来安装: -```bash +``` $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py $ sudo python get-pip.py $ sudo pip install ansible @@ -139,7 +129,7 @@ $ sudo pip install ansible 在控制节点上检查安装的 Ansible 版本: -```bash +``` $ ansible --version ansible 2.9.2 @@ -154,7 +144,7 @@ ansible 2.9.2 使用以下命令在受控节点上安装 python: -```bash +``` $ sudo yum install -y python $ sudo dnf install -y python $ sudo zypper install -y python @@ -166,20 +156,20 @@ $ sudo apt install -y python 使用以下命令创建 ssh 密钥,然后将其复制到远程计算机。 -```bash +``` $ ssh-keygen -$ ssh-copy-id [email protected] -$ ssh-copy-id [email protected] -$ ssh-copy-id [email protected] +$ ssh-copy-id daygeek@node1.2g.lab +$ ssh-copy-id daygeek@node2.2g.lab +$ ssh-copy-id daygeek@node3.2g.lab ``` -具体参考这篇文章 **[在 Linux 上设置 SSH 密钥身份验证(无密码身份验证)][10]** +具体参考这篇文章《[在 Linux 上设置 SSH 密钥身份验证(无密码身份验证)][10]》。 ### 如何创建 Ansible 主机清单 -在 **"/etc/ansible/hosts"** 文件中添加要管理的节点列表。如果找不到文件,则可以创建一个新文件。以下是我的测试环境的主机清单文件。 +在 `/etc/ansible/hosts` 文件中添加要管理的节点列表。如果没有该文件,则可以创建一个新文件。以下是我的测试环境的主机清单文件: -```bash +``` $ sudo vi /etc/ansible/hosts [web] @@ -192,7 +182,7 @@ node3.2g.lab 让我们看看是否可以使用以下命令查找所有主机。 -```bash +``` $ ansible all --list-hosts hosts (3): @@ -203,7 +193,7 @@ $ ansible all --list-hosts 对单个组运行以下命令: -```bash +``` $ ansible web --list-hosts hosts (2): @@ -211,13 +201,13 @@ $ ansible web --list-hosts node2.2g.lab ``` -### 如何使用 ad-hoc 命令执行任务 +### 如何使用点对点命令执行任务 一旦完成主机清单验证检查后,你就可以上路了。干的漂亮! -**语法:** +**语法:** -```bash +``` ansible [pattern] -m [module] -a "[module options]" Details: @@ -230,7 +220,7 @@ pattern: Enter the entire inventory or a specific group 使用 Ping 模块对主机清单中的所有节点执行 ping 操作: -```bash +``` $ ansible all -m ping node3.2g.lab | SUCCESS => { @@ -260,20 +250,20 @@ node2.2g.lab | SUCCESS => { 你可以使用以下命令获取可用模块的列表。 -```bash +``` $ ansible-doc -l ``` 当前有 3387 个内置模块,它们会随着 Ansible 版本的递增而增加: -```bash +``` $ ansible-doc -l | wc -l 3387 ``` 使用 command 模块对主机清单中的所有节点执行命令: -```bash +``` $ ansible all -m command -a "uptime" node3.2g.lab | CHANGED | rc=0 >> @@ -286,9 +276,9 @@ node2.2g.lab | CHANGED | rc=0 >> 对指定组执行 command 模块。 -检查**“app”**组主机的内存使用情况: +检查 app 组主机的内存使用情况: -```bash +``` $ ansible app -m command -a "free -m" node3.2g.lab | CHANGED | rc=0 >> @@ -297,9 +287,9 @@ Mem: 1993 1065 91 6 836 748 Swap: 1425 0 1424 ``` -要对 **"web"** 组运行 hostnamectl 命令,使用以下格式: +要对 web 组运行 `hostnamectl` 命令,使用以下格式: -```bash +``` $ ansible web -m command -a "hostnamectl" node1.2g.lab | CHANGED | rc=0 >> @@ -326,7 +316,7 @@ node2.2g.lab | CHANGED | rc=0 >> Architecture: x86-64 ``` -**参考:** [Ansible 文档][11] +参考:[Ansible 文档][11]。 -------------------------------------------------------------------------------- @@ -335,13 +325,13 @@ via: https://www.2daygeek.com/install-configure-ansible-automation-tool-linux-qu 作者:[Magesh Maruthamuthu][a] 选题:[lujun9972][b] 译者:[MjSeven](https://github.com/MjSeven) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 [a]: https://www.2daygeek.com/author/magesh/ [b]: https://github.com/lujun9972 -[1]: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7 +[1]: https://www.2daygeek.com/wp-content/uploads/2020/01/ansible-architecture-2daygeek.png [2]: https://www.2daygeek.com/linux-dnf-command-examples-manage-packages-fedora-centos-rhel-systems/ [3]: https://www.2daygeek.com/install-enable-epel-repository-on-rhel-centos-oracle-linux/ [4]: https://www.2daygeek.com/apt-get-apt-cache-command-examples-manage-packages-debian-ubuntu-systems/ From e981b0fafcf846abef144822e035627356fe7ab0 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 22 Feb 2021 12:49:23 +0800 Subject: [PATCH 2/2] PUB @MjSeven https://linux.cn/article-13142-1.html --- ... Tool Installation, Configuration and Quick Start Guide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200121 Ansible Automation Tool Installation, Configuration and Quick Start Guide.md (99%) diff --git a/translated/tech/20200121 Ansible Automation Tool Installation, Configuration and Quick Start Guide.md b/published/20200121 Ansible Automation Tool Installation, Configuration and Quick Start Guide.md similarity index 99% rename from translated/tech/20200121 Ansible Automation Tool Installation, Configuration and Quick Start Guide.md rename to published/20200121 Ansible Automation Tool Installation, Configuration and Quick Start Guide.md index 2dac351cec..600a37c4cd 100644 --- a/translated/tech/20200121 Ansible Automation Tool Installation, Configuration and Quick Start Guide.md +++ b/published/20200121 Ansible Automation Tool Installation, Configuration and Quick Start Guide.md @@ -1,8 +1,8 @@ [#]: collector: "lujun9972" [#]: translator: "MjSeven" [#]: reviewer: "wxy" -[#]: publisher: " " -[#]: url: " " +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-13142-1.html" [#]: subject: "Ansible Automation Tool Installation, Configuration and Quick Start Guide" [#]: via: "https://www.2daygeek.com/install-configure-ansible-automation-tool-linux-quick-start-guide/" [#]: author: "Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/"