首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ansible remote模板

Ansible remote模板
EN

Stack Overflow用户
提问于 2015-10-16 13:34:00
回答 1查看 10.3K关注 0票数 27

我将配置文件的模板存储在项目的存储库中。我想做的是在从存储库克隆项目之后,使用Ansible的模板模块在远程服务器上使用该模板创建一个配置文件。

查看template模块的文档,您会发现src属性只支持本地文件。

我希望避免将配置模板与我的Ansible剧本一起存储,因为对我来说,将这些特定于项目的模板保存在项目存储库中更有意义。

有没有我可以使用的模板模块的替代方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-16 22:57:38

如果您的模板将位于远程主机上,则这里有两个选项。

首先,在远程主机上克隆存储库之后,您可以使用与copy模块相反的fetch模块来取回模板。

这方面的攻略可能如下所示:

代码语言:javascript
复制
- 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在本地克隆存储库,并直接使用它,如下所示:

代码语言:javascript
复制
- 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 }}
票数 35
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33163204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档