Ansible 是什么?

现代 IT 人必定要知道的 Ansible系列教程:是什么Ansible ?

什么是 Ansiable

Ansiable 是新出现的自动化运维工具,基于 Python 开发,调集了众多运维工具(puppetcheffuncfabric)的优点,实现了批量体系配置、批量程序布置、批量运转指令等功能。   ansible 是基于 paramiko 开发的,而且基于模块化工作,本身没有批量布置的能力。真正具有批量布置的是ansible所运转的模块,ansible仅仅提供一种框架。ansible不需求在长途主机上装置client/agents,由于它们是基于ssh来和长途主机通讯的。

ansible现在已经已经被红帽官方收购,是自动化运维工具中咱们认可度最高的,而且上手容易,学习简单。是每位运维工程师有必要掌握的技术之一。

运用 Ansible 需求具有什么基础知识?

  1. 具有 Linux 服务器 (server) 基础操作和办理经验。
  2. 会运用 ssh 长途连接至 server
  3. 知道根本的规范输入 (stdin) 输出 (stdout) 等观念。
  4. 会装置 Linux 套件。
  5. 知道 指令在做什么,而且会运用它。sudo
  6. 知道什么是档案权限,而且会修正它。
  7. 知道怎么启用和中止体系服务 (Daemon / Service)。
  8. 会编撰简易的脚本(Script)。

Ansible 环境布置

Ansible 是怎么运作的?

Ansible 的世界里,咱们会通过 inventory 文件来界说有哪些 Managed node (被控端),并由 SSHPython 进行沟通。

现代 IT 人必定要知道的 Ansible系列教程:是什么Ansible ?

Control Machine (主控端) 能够用 SSH 连上 Managed node,且被连上的机器里有预载 Python 时,Ansible 就能够运作了!

  • Control Machine 指的是咱们首要会在上面操作 Ansible 的机器。 它可所以咱们平时用的电脑、手机或机房里的某一台机器。
  • Managed node 则是被 Ansible 操纵的机器,能够用被控端来形容它。

Ansible 是怎么发挥作用的?

模块 Ansible 会连接到您的节点,并向节点推送这种称为“模块”的小程序。这些模块可用于完成 Ansible 中的自动化使命。这些程序被编写成体系抱负状况的资源模型。然后 Ansible 会履行这些模块,并在完成后将其移除。假如没有这些模块,咱们就有必要靠临时指令和脚原本完成使命。

Ansible 本身就有多个内置模块,咱们能够运用那些模块自动履行使命,也能够编写自己的模块。Ansible 模块可用任何能返回 JSON 的言语编写,如 RubyPythonbash

无署理自动化 Ansible 选用无署理设计,这意味着其所办理的节点不需求装置任何软件。Ansible 会从清单中读取要办理的机器的有关信息。Ansible 有默许的清单文件,但咱们也能够自己创立清单文件,并界说想要办理的服务器。

环境要求

  • 操控节点要求(Control Machine)

对于操控节点(运转 ansiable 的计算机),咱们能够运用几乎任何装置了 Python 的类 UNIX 的计算机,没有 WSL 的 windows 本身不支持作为操控节点。

  • 被操控节点的要求(Managed node)

被操控的节点不需求装置 ansiable,可是需求 Python 的环境,用来运转 ansiable 生成的 Python 代码。受控节点还需求一个能够通过 ssh 运用交互方式。

Ansible装置

在一般的情况下,咱们只需在 Control Machine 里装置 Ansible 即可,由于 GNU/Linux 和 macOSManaged node 都早已预载了 Python 2.5 以上的版别,且开通了 SSH 连线的条件。

Ansible 运用 SSH 协议连接至服务器并运转使命。Ansible 默许会运用 ssh-agentSSH 密钥,并用当时的用户名连接到长途机器。无需运用 root 用户名登录。您能以任何用户的身份登录,然后对任何用户运用 susudo 指令。

Ansible 一旦连接,就会将咱们的指令或 Playbook 所需的模块传输到长途机器上履行。Ansible 运用人类可读的 YAML 言语模板,因此用户无需学习高级编程言语就能够对重复性使命进行编程以使其自动运转。

在 Fedora Linux 上装置 Ansible

要装置完好的ansible软件包,请运转:

$ sudo dnf install ansible

要装置最小的ansible-core软件包,请运转:

$ sudo dnf install ansible-core

在 OpenSUSE 上装置 Ansible

$ sudo zypper install ansible

在 Ubuntu 上装置 Ansible

Ubuntu 版别可在此处的 PPA 中获取。

要在体系上配置 PPA 并装置 Ansible,请运转以下指令:

sudo apt update
​
sudo apt install software-properties-common
​
sudo add-apt-repository --yes --update ppa:ansible/ansible
​
sudo apt install ansible

PS: 在其他的环境装置 ansitable 能够参考官方文档:docs.ansible.com/ansible/lat…

运用 pipx 装置和晋级 Ansible

在您的环境中运用pipx装置完好的 Ansible 软件包:

$ pipx install --include-deps ansible

要将现有 Ansible 装置晋级到最新发布的版别:

$ pipx upgrade --include-injected ansible

装置可能需求的其他 python 依靠项,以装置 argcomplete python 包为例,如下所述:

$ pipx inject ansible argcomplete

包含 --include-apps 选项以使附加 Python 依靠项中的应用程序在您的 PATH 上可用。这答应您从 shell 履行这些应用程序的指令。

$ pipx inject --include-apps ansible argcomplete

运用 pip 装置和晋级 Ansible

要验证pip是否已装置您首选的 Python:

python -m pip -v
Command 'python' not found, did you mean:
  command 'python3' from deb python3
  command 'python' from deb python-is-python3

假如看到以上这样的错误,那么确定你的环境是没有装置 pip 的。能够自行查找 pip 的装置办法。

装置 Ansible

在您挑选的 Python 环境中运用 pip 为当时用户装置完好的 Ansible 软件包:

$ python3 -m pip install --user ansible

晋级 Ansible

要将此 Python 环境中现有的 Ansible 装置晋级到最新发布的版别,只需将 --upgrade 添加到上面的指令:

$ python3 -m pip install --upgrade --user ansible

能够通过查看版别来测试 Ansible 是否装置正确:

$ ansible --version