在Ubuntu 14.04上为配置管理设置Ansible:创建剧本

Ansible中的剧本使Ansible如此方便。剧本允许使用多个模块执行例行任务。我们什么时候应该使用剧本?

让我们看一下例行维护任务:更新服务器。鉴于这只是一个命令,我们将不必使用剧本apt-get update。我们可以只使用一个命令来更新所有服务器上的软件。但是,为了部署Web或数据库服务器之类的东西,需要做更多的工作:不仅仅是一个命令。剧本就是这种情况的完美体现。它们允许您使用多个模块,这些模块是可以在服务器上执行的命令。例如,有一些模块用于复制文件和通过SSH执行Shell命令。

那么我们如何使用剧本呢?让我们开始吧!

步骤1:建立YAML(.yml)档案

Ansible剧本作为.yml文件编写;Ansible无法解释其他格式。Ansible剧本示例如下所示:

---
- hosts: webservers
  vars:
    http_port: 80
    max_clients: 200
  remote_user: root
  tasks:
  - name: ensure apache is at the latest version
    yum: pkg=httpd state=latest
  - name: write the apache config file
    template: src=/srv/httpd.j2 dest=/etc/httpd.conf
    notify:
    - restart apache
  - name: ensure apache is running (and enable it at boot)
    service: name=httpd state=started enabled=yes
  handlers:
    - name: restart apache
      service: name=httpd state=restarted

(摘自Ansible的文档)

步骤2:了解剧本:任务和处理程序

如您所见,该手册中有多个部分。首先,您将看到该hosts:行。这确定了应该在哪个主机上执行剧本。您还可以看到我们定义了几个变量,可以在整个剧本中访问和使用。然后,您将看到许多任务。例如,这些任务可以命名为“ Install Apache”。该示例中的第二个任务将写入Apache配置。然后,您将看到以下内容:

    notify:
    - restart apache

这告诉任务执行某个处理程序。在这种情况下,它指的是handler restart apache,可以在剧本的底部找到:

  handlers:
    - name: restart apache
      service: name=httpd state=restarted

处理程序很方便,因为以该示例为例,您可能需要多次重新启动Apache。在这种情况下,您不必在每次需要重新启动Apache时都重复创建任务,而是每次都可以引用相同的处理程序。

步骤3:执行剧本

假设您要部署Apache服务器。好了,正如您所看到的,我们为此创建了一个剧本。可以通过使用ansible-playbook命令来执行剧本。例如,如果我们要在webservers类别中的所有服务器上执行此剧本(您需要在/etc/ansible/hosts文件中包含此类别),则假定剧本文件的名称为,则可以运行以下命令apache.yml

ansible-playbook -i webservers apache.yml

恭喜你!现在,您已在webservers类别中的所有服务器上执行了一个剧本。现在,您只需要等待部署完成即可,并且您会看到Apache已在这些服务器上成功安装和配置。

留下評論

在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 機器變磚。閱讀這篇文章以了解更多信息