首页>软件资讯>常见问题

常见问题

Ansible 是如何发挥作用的?

发布时间:2024-01-22 09:26:15人气:139

模块 Ansible 会连接到您的节点,并向节点推送这种称为“模块”的小程序。这些模块可用于完成 Ansible 中的自动化任务。这些程序被编写成系统理想状态的资源模型。然后 Ansible 会执行这些模块,并在完成后将其移除。如果没有这些模块,我们就必须靠临时命令和脚本来完成任务。

Ansible 本身就有多个内置模块,我们可以使用那些模块自动执行任务,也可以编写自己的模块。Ansible 模块可用任何能返回 JSON的语言编写,如 Ruby、Python 或 bash。

无代理自动化 Ansible 采用无代理设计,这意味着其所管理的节点不需要安装任何软件。Ansible 会从清单中读取要管理的机器的有关信息。Ansible 有默认的清单文件,但我们也可以自己创建清单文件,并定义想要管理的服务器。 

ansible.png

环境要求

• 控制节点要求(Control Machine)

对于控制节点(运行 ansiable 的计算机),我们可以使用几乎任何安装了 Python 的类 UNIX 的计算机,没有 WSL 的 windows 本身不支持作为控制节点。

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

被控制的节点不需要安装 ansiable,但是需要 Python 的环境,用来运行 ansiable 生成的 Python 代码。受控节点还需要一个可以通过 ssh 使用交互方式。

Ansible安装

在一般的情况下,我们只需在 Control Machine 里安装 Ansible 即可,因为 GNU/Linux 和 macOS 的 Managed node 都早已预载了 Python 2.5 以上的版本,且开通了 SSH 连线的条件。

Ansible 使用 SSH 协议连接至服务器并运行任务。Ansible 默认会使用 ssh-agent 的 SSH 密钥,并用当前的用户名连接到远程机器。无需使用 root 用户名登录。您能以任何用户的身份登录,然后对任何用户使用 su或 sudo 命令。

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 ansiblePS: 在其他的环境安装 ansitable 可以参考官方文档:https://docs.ansible.com/ansible/latest/installation_guide/installation_distros.html#installing-ansible-on-fedora-linux

使用 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 



上一条:ansible是干什么用的

下一条:anaconda和python区别