如何使用 Ansible 管理多服务器和多网站配置?

如何使用 Ansible 管理多服务器和多网站配置?

我研究过使用 Ansible 来配置新服务器,效果很好。我的游戏安装了 MySQL、Nginx 和所有其他内容。现在我想知道将它用作配置管理工具的最佳方法是什么。

我们在每台服务器上运行多个网站。对我来说,这意味着每台服务器上都有常规的 Nginx 设置,并且每个站点/域都需要特定的配置。我想,当我需要时(比如说新的见解或安全性),我可以使用 Ansible 独立更新常规设置和特定配置。

在这种情况下我需要做什么?这是否需要我保留一个包含所有网站及其所在网站的变量?或者,有更好的选择吗?

答案1

模板的一个特性就是它的模板功能,您可以利用它来实现此目的。

模板模块允许您为每个主机部署一个具有唯一值的文件。当前正在处理的主机的名称保存在 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 模板语言的文档这里

答案2

我使用变量对相关主机执行特定操作。我的建议是尽可能多地将主机分组并使用组变量。请记住,Ansible playbook 非常适合在 git 或 SVN 中进行版本控制,因此您可以跟踪更改。

对您来说可能有用的是使用vars_prompt,特别是当您不运行在 cron 上安排的剧本时。

希望这可以帮助!

相关内容