使用Ansible将单个文件从私有github存储库下载到远程主机

时间:2014-02-05 23:30:01

标签: deployment github wget configuration-management ansible

示例场景:某个服务的配置文件保留在私有github存储库的版本控制之下。我想编写一个在远程节点上获取其中一个文件并将其放入所需位置的剧本。

我可以想到几个解决方案:

  1. 在运行ansible(local_action)的计算机上执行结帐,然后使用copy模块
  2. 在远程节点上进行结账(使用git模块),使用command: cp src dest creates=dest将文件复制到所需位置(也许使用处理程序执行此操作 - 仅当repo有更改要撤消时)
  3. 使用游戏手册中的url模块或command: wget https://raw.github.com/repo/.../file creates=file仅下载感兴趣的文件。 command模块实际上是要检查要创建的文件是否与可能已存在的文件不同,或仅检查文件是否存在?
  4. 在运行ansible(local_action)的计算机上使用wget,然后使用复制模块将其推送到远程节点
  5. 这些的优点/缺点是什么?哪些(如果有的话)可以被视为良好做法。对此最好的一般解决方案是什么?

1 个答案:

答案 0 :(得分:5)

我首先要说的是,我们为生产环境选择了第二种解决方案,我保证一件事 - 它只是有效。现在是更长的版本:

解决方案否。 1:

  • 简单而强大 - 只会工作
  • 不会使用不相关的文件(其他配置文件)“污染”生产服务器
  • 不会将带有I / O的生产服务器加载到GitHub(可能忽略不计)

解决方案否。 2:

  • 简单而强大 - 只会工作
  • 为了减少污染,我们将配置存储克隆到/ tmp并在剧本结尾删除它

解决方案否。 3/4:

我的猜测它会起作用,但是在源代码控制中使用你的配置然后并没有真正使用源代码控制功能感觉有点奇怪。 这些解决方案的优点是,您可以“选择”要下载的配置文件,而不是克隆整个存储库。这也减少了对github的I / O,因为克隆随着时间的推移变得越来越重。