我将配置文件的模板存储在项目的存储库中。我想做的是在从存储库克隆项目之后,使用Ansible的模板模块在远程服务器上使用该模板创建一个配置文件。
查看template模块的文档,您会发现src属性只支持本地文件。
我希望避免将配置模板与我的Ansible剧本一起存储,因为对我来说,将这些特定于项目的模板保存在项目存储库中更有意义。
有没有我可以使用的模板模块的替代方案?
发布于 2015-10-16 22:57:38
如果您的模板将位于远程主机上,则这里有两个选项。
首先,在远程主机上克隆存储库之后,您可以使用与copy模块相反的fetch模块来取回模板。
这方面的攻略可能如下所示:
- name : clone repo on remote hosts
git :
repo : {{ git_repo_src }}
dest : {{ git_repo_dest }}
- name : fetch template from single remote host
run_once : true
fetch :
src : {{ template_path }}/{{ template_file }}
dest : /tmp/{{ template_file }}
flat : yes
fail_on_missing : yes
- name : template remote hosts
template :
src : /tmp/{{ template_file }}
dest : {{ templated_file_dest }}
owner : {{ templated_file_owner }}
group : {{ templated_file_group }}
mode : {{ templated_file_mode }}fetch任务使用run_once来确保它只从运行它的第一个主机复制模板。假设你的游戏中的所有主机都得到了相同的存储库,那么这应该是可以的,但是如果你需要确保它是从一个非常特定的主机复制的,那么你可以将它与delegate_to结合起来。
或者,您可以让Ansible在本地克隆存储库,并直接使用它,如下所示:
- name : clone repo on remote hosts
git :
repo : {{ git_repo_src }}
dest : {{ git_repo_dest }}
- name : clone repo on Ansible host
hosts : localhost
connection : local
git :
repo : {{ git_repo_src }}
dest : {{ git_repo_local_dest }}
- name : template remote hosts
template :
src : {{ template_local_src }}
dest : {{ templated_file_dest }}
owner : {{ templated_file_owner }}
group : {{ templated_file_group }}
mode : {{ templated_file_mode }}https://stackoverflow.com/questions/33163204
复制相似问题