我知道您可以在Ansible中设置代理以在公司网络后面进行配置: https://docs.ansible.com/ansible/latest/user_guide/playbooks_environment.html
像这样:
environment:
http_proxy: http://proxy.example.com:8080
不幸的是,对于我来说,根本无法从服务器访问Internet。在本地下载角色并将它们放在/ roles文件夹下似乎可以解决角色问题,但是使用以下命令时,角色仍会从Internet下载包:
package:
name: package-name
state: present
我想没有办法进行空运行/预运行,因此Ansible下载所有软件包,然后将其推送到存储库中并使用本地下载的软件包运行Ansible Provisioning?
答案 0 :(得分:1)
这实际上不是有关Ansible的问题,因为Ansible所做的一切都是在目标主机(即yum,dnf或apt或其他)上运行相关的软件包管理系统。因此,对于这种情况,具体的软件包管理工具提供了什么解决方案是一个问题。
有多种解决方案,例如在Centos / RHEL世界中,您可以:
还有另一类工具,通常称为工件存储库。这些工具最初是用作存储由代码构建的二进制文件的工具,但是增加了许多功能来充当代理和缓存来自各种来源(OS软件包,PIP,NodeJS,Docker等)的软件包。免费产品数量有限的两个示例:
他们当然仍然需要从源中收集这些软件包,因此在某些时候,必须将它们下载到这些系统中。
答案 1 :(得分:1)
我的解决方案:
使用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来说也希望如此
答案 2 :(得分:0)
就像Clockworknet指出的那样,这与RHEL软件包的处理更为相关。在这种情况下,在封闭网络内部的某个地方设置本地镜像可以提供解决方案。有关“如何在不使用Satellite服务器的情况下为Red Hat Enterprise Linux 5、6、7创建最新更新的本地镜像的更多信息?”:https://access.redhat.com/solutions/23016