我已经研究了Ansible提供新的服务器,这是很好的工作。我的游戏是安装MySQL,Nginx和所有其他的。现在,我想知道使用它作为配置管理工具的最佳方法是什么。
我们在每个服务器上运行多个网站。对我来说,这意味着在每个服务器上设置一个通用的Nginx,以及每个站点/域所需的特定配置。我想,当我需要时,我可以用Ansible独立地更新一般设置和特定配置(比如新的洞察力或安全性)。
在这种情况下我该怎么办?这需要我保留一个变量来保存所有的站点以及它们在哪个站点上吗?或者,有没有更好的选择?
发布于 2015-10-14 21:14:28
模板的一个特性是它的模板功能,您可以使用它来达到这个目的。
模板模块允许您为每个主机部署一个具有唯一值的文件。当前正在处理的主机的名称保存在inventory_hostname和inventory_hostname_short变量中(后者是主机名的第一个虚线组件)。
可以将主机特定的变量保存在group_vars/all中的字典中。例如:
www_sites: {
host1: "www.mysite1.com",
host2: "www.mysite2.com",
}然后,nginx conf文件的模板可以包括如下内容:
server {
listen 80;
server_name {{ www_sites[inventory_hostname_short] }};
access_log logs/{{ www_sites[inventory_hostname_short] }}.access.log main;Ansible使用的Jinja2模板语言的文档可以找到这里。
发布于 2015-10-14 21:04:26
我用vars对那个有问题的主机做一些具体的事情。我的建议是尽可能多地将主机分组,并使用组变量。请记住,对于git或SVN中的版本控制来说,Ansible剧本是非常棒的,因此您可以跟踪您的更改。
一些可能对您有用的东西是使用vars_prompt,特别是如果您没有在cron上运行您的剧本。
希望这能有所帮助!
https://serverfault.com/questions/729018
复制相似问题