无需互联网访问的 Ansible 配置
Ansible provisioning without internet access
我知道您可以在 Ansible 中设置代理以在公司网络后面进行配置:
https://docs.ansible.com/ansible/latest/user_guide/playbooks_environment.html
像这样:
environment:
http_proxy: http://proxy.example.com:8080
不幸的是,在我的情况下,根本无法从服务器访问互联网。在本地下载角色并将它们放在 /roles 文件夹下似乎解决了角色问题,但角色在使用时仍然从互联网下载包:
package:
name: package-name
state: present
我想没有办法让 dry/pre 运行 所以 Ansible 下载所有的包,然后将其推送到 repo 和 运行 Ansible provision 使用本地下载的包?
这实际上不是关于 Ansible 的问题,因为 Ansible 所做的只是 运行 目标主机上的相关包管理系统(即 yum、dnf 或 apt 或其他)。那么问题来了,具体的包管理工具提供了什么样的解决方案,对于这种情况。
有多种解决方案,例如在 Centos/RHEL 世界中,您可以:
还有另一个 class 工具,通常称为 artefact repository。它们最初是作为存储从代码构建的二进制文件的工具,但添加了一系列功能作为代理和缓存来自各种来源的包(OS 包、PIP、NodeJS、Docker, ETC)。提供有限免费产品的两个示例:
他们当然仍然需要从源头收集这些包,所以在某些时候必须下载这些包以放置在这些系统中。
就像 clockworknet 指出的那样,这与 RHEL 包处理更相关。在封闭网络内部的某处设置本地镜像可以提供这种情况的解决方案。有关 "How to create a local mirror of the latest update for Red Hat Enterprise Linux 5, 6, 7 without using Satellite server?" 的更多信息:https://access.redhat.com/solutions/23016
我的解决方案:
- 安装 Sonatype Nexus 3
- 创建一个或多个 yum 代理存储库
https://help.sonatype.com/repomanager3/formats/yum-repositories
使用 Ansible 通过 yum_repository 添加这些代理
https://docs.ansible.com/ansible/latest/modules/yum_repository_module.html
yum_repository:
name: proxy-repo
description: internal proxy repo
baseurl: https://your-nexus.server/url-to-repo```
注意:对 APT 这样做并且工作正常,期望对 yum 也是如此
我知道您可以在 Ansible 中设置代理以在公司网络后面进行配置: https://docs.ansible.com/ansible/latest/user_guide/playbooks_environment.html
像这样:
environment:
http_proxy: http://proxy.example.com:8080
不幸的是,在我的情况下,根本无法从服务器访问互联网。在本地下载角色并将它们放在 /roles 文件夹下似乎解决了角色问题,但角色在使用时仍然从互联网下载包:
package:
name: package-name
state: present
我想没有办法让 dry/pre 运行 所以 Ansible 下载所有的包,然后将其推送到 repo 和 运行 Ansible provision 使用本地下载的包?
这实际上不是关于 Ansible 的问题,因为 Ansible 所做的只是 运行 目标主机上的相关包管理系统(即 yum、dnf 或 apt 或其他)。那么问题来了,具体的包管理工具提供了什么样的解决方案,对于这种情况。
有多种解决方案,例如在 Centos/RHEL 世界中,您可以:
还有另一个 class 工具,通常称为 artefact repository。它们最初是作为存储从代码构建的二进制文件的工具,但添加了一系列功能作为代理和缓存来自各种来源的包(OS 包、PIP、NodeJS、Docker, ETC)。提供有限免费产品的两个示例:
他们当然仍然需要从源头收集这些包,所以在某些时候必须下载这些包以放置在这些系统中。
就像 clockworknet 指出的那样,这与 RHEL 包处理更相关。在封闭网络内部的某处设置本地镜像可以提供这种情况的解决方案。有关 "How to create a local mirror of the latest update for Red Hat Enterprise Linux 5, 6, 7 without using Satellite server?" 的更多信息:https://access.redhat.com/solutions/23016
我的解决方案:
- 安装 Sonatype Nexus 3
- 创建一个或多个 yum 代理存储库 https://help.sonatype.com/repomanager3/formats/yum-repositories
使用 Ansible 通过 yum_repository 添加这些代理 https://docs.ansible.com/ansible/latest/modules/yum_repository_module.html
yum_repository: name: proxy-repo description: internal proxy repo baseurl: https://your-nexus.server/url-to-repo```
注意:对 APT 这样做并且工作正常,期望对 yum 也是如此