首页 > 解决方案 > 是否有 Ansible 的客户端/代理软件?

问题描述

Ansible 的优势之一是无代理架构。Ansible 使用 Python,而且几乎总是预装在任何发行版上。因此,在 Ansible 需要发挥其魔力的机器上不需要客户端或代理。

最近的经验使我们怀疑这在实践中是否正确。

因此,例如,当前 Ansible 提供了用于生成证书的模块,如使用 Ansible 2.4 的加密模块生成自签名 OpenSSL 证书一文中所述。杰夫·格尔林

但是如果你使用这些,你还需要:pip、python-dev。这些依赖项最初会失败,因为您需要为python_version和提供值python_user

现在事情变得一团糟。我们正在目标机器上创建一个 Python 开发环境来创建一个自签名证书。例如,许多其他的东西被拖进来

python,python-dev,python3,python3-dev,make,gcc,python-pip,python3-pip,build-essential,libssl-dev,zlib1g-dev,libbz2-dev,libreadline-dev,libsqlite0-dev,wget, curl,llvm,libncurses5-dev,libncursesw5-dev,xz-utils,tk-dev,git,libffi-dev,libxml2-dev,libxslt1-dev,libyaml-dev

现在请注意,我们正在使用作为 Ansible 的默认部分的模块创建自签名证书。然而,这些模块需要的东西不是 Linux 上任何标准 Python 发行版的一部分。

实际上,要创建自签名证书(通常使用一些 bash 命令完成),我们正在构建一个一次性的自定义 Ansible 客户端。例如,这很可能会失败,并显示如下消息

未能在 myserver 的 Python /usr/bin/python 上导入所需的 Python 库(setuptools)

所以我在这一点上的结论是,Ansible 并不是真正的无代理,实际上确实需要目标机器上的某种客户端/代理。此客户端/代理只是动态下载、编译、链接和配置。

如果我们需要这样做只是为了使用标准的 Ansible 模块,我们已经有效地证明了需要 Ansible 客户端和/或某种类型的代理。

当然,不会出现任何官方的 Ansible 客户端/代理,因为 Ansible 被吹捧为无代理,并且除了 Python 之外不需要任何其他东西。

但也许有人不厌其烦地创建了这样一个客户?是否有某种安装程序可以安装 Ansible 声称支持的模块的所有依赖项?

标签: pythonansibleclientagent

解决方案


问:“Ansible 提供了用于生成证书的模块……但如果你使用这些模块,你还需要:pip、python-dev。这些依赖项最初会失败,因为你需要为 python_version 和 python_user 提供值。现在事情变得一团糟。 ..

我们现在正在使用 Ansible 默认部分的模块创建自签名证书。然而,这些模块需要的东西不是 Linux 上任何标准 Python 发行版的一部分。

A: openssl_certificate模块需要

  • PyOpenSSL >= 0.15 或密码学 >= 1.6(如果使用自签名或 assertonly 提供程序)

  • acme-tiny(如果使用 acme 提供程序)

这就是 Ubuntu 18.04 和 FreeBSD 11.3 和 12.0 所需要的。请参阅证书Ansible Galaxy 角色中的详细信息。

Debian 变量

certificate_packages:
  - python-openssl
  - acme-tiny

FreeBSD 变量

certificate_packages:
  - security/py-openssl
  - security/py-acme-tiny

YMMV。


推荐阅读