在Ubuntu 17.04上将SaltStack与支柱配合使用

SaltStack是用于同时在多个服务器上运行操作的出色工具,但它还支持按主机定义的配置预设,该预设存储在唯一的文件中,该文件又称为“支柱”。在本指南中,我们将编写一个小的SaltStack公式来安装Nginx并使用支柱自动执行虚拟主机的部署。

要求

  • 运行Ubuntu 17.04的Vultr实例(master)
  • 两个运行Ubuntu 17.04的Vultr实例(奴才)

设置主人

如果您只是入门而尚未设置SaltStack主服务器,请查看本文,其中介绍了如何开始使用SaltStack。

我们从为公式创建文件夹开始,该文件夹进一步保存SaltStack在我们的小兵上进行操作所需的文件。

mkdir -p /srv/salt/nginx

创建文件夹后,我们可以继续写init.sls文件,这是每个公式的重要组成部分:

nginx:
  pkg:
    - installed

/etc/nginx/sites-enabled/virtualhosts.conf:
    file.managed:
        - source: salt://nginx/files/virtualhosts.jinja
        - template: jinja
        - user: root
        - group: root
        - mode: 655

  cmd:
    - run
    - names:
        - service nginx restart

您可能已经注意到,SaltStack使用Jinja模板引擎来生成动态配置文件。这在我们的配置模板文件中提供了广泛的可能性,例如访问本地Python代码或设置变量等。下一步包括为我们的virtualhosts.conf文件创建模板,而我们首先需要创建文件夹:

mkdir -p /srv/salt/nginx/files

创建文件夹后,我们可以继续写virtualhosts.jinja文件:

{% for vhost in pillar['vhosts'] %}
server {
    listen {{ vhost['listenPort'] }};
    server_name {{ vhost['serverName'] }};
    root {{ vhost['documentRoot'] }};
    index {%- for index in vhost['indexFiles'] -%}{{ index }}{%- endfor -%};
    location / {
        try_files $uri $uri/ =404;
    }
}
{% endfor %}

创建公式后,我们可以继续设置支柱基础:

mkdir -p /srv/pillar/

匹配特定支柱文件的主机的所有引用都将写入到top.sls我们刚刚创建的目录中的文件中。在我们的示例中,我们假设主机名存在两个奴才nginxwww1nginxwww2而我们将为其分配两个唯一的支柱文件:

base:
  'id:nginxwww1':
    - match: grain
    - nginxwww1
  'id:nginxwww2':
    - match: grain
    - nginxwww2

接下来,我们将继续为其创建一个支柱文件,nginxwww1而我们将为该域创建一个虚拟主机,监听端口81 example.com,文档根为/var/www/example_com/,索引文件为index.shtml

vhosts:
    -
      listenPort: '81'
      serverName: 'example.com'
      documentRoot: '/var/www/example_com'
      indexFiles:
        - index.shtml

我们将继续为其创建一个支柱文件,nginxwww2而我们将创建一个虚拟主机,监听该域的端口82 example2.com,文档根为/var/www/example2_com/,索引文件为index.jsand index.css

vhosts:
    -
      listenPort: '82'
      serverName: 'example2.com'
      documentRoot: '/var/www/example2_com'
      indexFiles:
        - index.js
        - index.css

注意:支柱文件存储在/srv/pillar/

部署中

现在,我们可以通过更新我们的奴才来完成支柱的首次尝试:

salt '*' saltutil.refresh_pillar

然后,我们可以运行SaltStack公式:

salt '*' state.sls nginx

确认中

一旦SaltStack公式已运行并完成没有任何错误,我们应该能够看到nginx端口监听81nginxwww1和端口82nginxwww2的确认。

结论

这个相当轻巧但已经强大的SaltStack公式可以进一步扩展以添加对HTTPS的支持,可能是集成了Let's Encrypt,对CGI或PHP后端的支持以及您可以手动执行的所有操作。本指南应该为您提供用于配置文件部署的SaltStack公式和支柱的基本概念。祝自动化!



Leave a Comment

使用Chef-solo在Ubuntu上配置Django应用

使用Chef-solo在Ubuntu上配置Django应用

有许多方法可以自动化设置和配置盒子的过程。无论出于何种原因,如果此时我们的整个系统仅包含

如何在Ubuntu 18.04上安装Strider CD

如何在Ubuntu 18.04上安装Strider CD

简介Strider CD是一个开源的持续部署平台。该应用程序使用Node.js编写,并使用MongoDB作为存储后端。大步走

如何在Ubuntu 16.04 LTS上安装Foreman

如何在Ubuntu 16.04 LTS上安装Foreman

使用其他系统?Foreman是一个免费的开源工具,可以帮助您配置和管理物理和虚拟服务器。气孔

Ubuntu 17.04上的SaltStack入门

Ubuntu 17.04上的SaltStack入门

SaltStack是基于python的配置管理程序,针对配置文件,部署和其他未定义的自动化进行了优化

如何在CentOS 7上安装Foreman

如何在CentOS 7上安装Foreman

使用其他系统?Foreman是一个免费的开源工具,可以帮助您配置和管理物理和虚拟服务器。气孔

Vultr负载均衡器

Vultr负载均衡器

什么是负载均衡器负载均衡器位于应用程序的前面,可在应用程序的多个实例之间分配传入流量。佛

在Windows上使用Chocolatey Package Manager

在Windows上使用Chocolatey Package Manager

简介Chocolatey将软件包管理引入了Windows,从而使Linux上的软件和依赖项管理变得容易。您可以快速而轻松

如何在Ubuntu 16.04上安装和配置Concourse CI

如何在Ubuntu 16.04上安装和配置Concourse CI

使用其他系统?简介持续集成是一种DevOps软件开发实践,使开发人员能够频繁合并。

如何在Ubuntu 18.04上安装Drone CI

如何在Ubuntu 18.04上安装Drone CI

简介Drone是一个自动化,连续的测试和交付平台,可在您自己的基础架构上运行。无人机支持任何语言,服务或

如何在CentOS 7上安装和配置Concourse CI

如何在CentOS 7上安装和配置Concourse CI

使用其他系统?简介持续集成是一种DevOps软件开发实践,使开发人员能够频繁合并。

如何在Debian 9上安装和配置Ansible以用于Windows Server

如何在Debian 9上安装和配置Ansible以用于Windows Server

使用其他系统?Ansible是用于自动化任务的开源工具。它管理Linux和Windows服务器的配置。这行得通

如何在CentOS 7上安装和配置Ansible以用于Windows Server

如何在CentOS 7上安装和配置Ansible以用于Windows Server

使用其他系统?Ansible是用于自动化任务的开源工具。它管理Linux和Windows服务器的配置。这行得通

如何在CentOS 7上安装SaltStack

如何在CentOS 7上安装SaltStack

SaltStack或Salt是一种流行的开源配置管理解决方案,可用于实施远程执行,配置管理,编码

如何在CentOS 7上安装和配置GoCD

如何在CentOS 7上安装和配置GoCD

使用其他系统?GoCD是一个开源的持续交付和自动化系统。它允许您使用其并行的

使用Packer创建快照

使用Packer创建快照

什么是Packer?Packer是HashiCorp开发的服务器映像工具。服务器映像;或者,不变的基础设施;是一个受欢迎的替代

如何在CentOS 7上安装Jenkins

如何在CentOS 7上安装Jenkins

Jenkins是一种流行的开源CI(连续集成)工具,广泛用于项目开发,部署和自动化。这篇文章将

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息