如何在项目中结合Python和Ansible

时间:2019-03-17 20:23:55

标签: python ansible gitlab ansible-galaxy

我正在尝试打包项目中存在的Python和Ansible代码,以便人们可以将其重新用于未来的需求。

上下文

在我们的团队中,我们最近开始自动执行与网络监视环境相关的流。因此,我对整个开发思路还是陌生的。

我正在使用以下工具: -Gitlab -Nexus,用于保留源二进制文件和程序包

目前,我正在为需要自动化的每个新流程创建一个新的存储库(例如,客户入职,常绿的应用程序等)。我也在Python和Ansible中构建代码。我主要使用Python来提取必须升级,部署的服务器,客户等的特定列表,然后将该列表作为Extra-vars推送到ansible-playbook命令。所以我的项目结构看起来像这样: Evergreen_repo -ansible /     -evergreen_role /         -task.yml         等等 -python /     -初始化 .py     -some_module.py     等

我最初的项目是Customer Onboarding,为了触发它,我使用了gitlab-ci,它将:     -产生一个Docker实例     -git克隆我的项目和其他项目,在其中保存包含与客户相关信息的数据文件     -然后,我告诉它运行一个Python脚本,该脚本将提取客户并运行一个无障碍的剧本。很多相关的命令,例如去两个文件夹,运行它,然后执行该操作,等等。

在我的第二个项目中,我想摆脱git clonning和相关内容,并从Nexus等回购管理器中正确安装所需的python / ansible模块/角色。显然,这将允许其他人例如通过将来导入他们的项目来重用我的python代码。

问题

因此出现了有关如何打包代码的问题。 对于Python,我已经找到了如何进行版本控制,打包代码并将其推送到Nexus,然后在另一个项目中重复使用的方法。 不过对于Ansible来说,似乎在ansible-galaxy cli中我无法直接从http://somegitlab/evergreen/ansible/evergreen_role下载角色,仅当我所有角色内容都直接位于evergreen_repo根目录下时,我才能下载该角色,包括meta文件夹(以便ansible-galaxy可以将其识别为角色)。我显然可以做到这一点,但我认为从视觉上看,我的仓库会变得凌乱,并且会破坏我最初的目的,即根据我开发的工具将文件夹组织为仓库的仓库代码。 Ansible,Python,谁知道我将来还会使用什么。同样,如果我这样做了,“ ansible-galaxy install”还将复制不需要的python /文件夹,因为我已经打包了Python。

问题

所以我目前有两个问题:

  1. 如何打包Ansible角色并轻松重用它们?
  2. 以上选择的路径在组织项目然后打包时是否是一个好的途径?有更好的方法吗?您是否有类似的环境,您的经历是什么?

0 个答案:

没有答案