安裝和設置 Ansible Playbook Apache 在 Ubuntu 上

Ansible 是一個開源的配置管理和應用程序部署工具。 它通過自動部署應用程序和管理 IT 基礎設施來幫助減少管理開銷。

使用 能聽懂的 我們將在 Ubuntu 20.04 中安裝 apache2 Web 服務器。 為此,我們需要在 YAML 語法中創建一個名為的配置 Ansible 劇本.

通常,有一個控制節點和主機節點。 Ansible 安裝在控制節點,將執行 playbook 部署到主機節點。 在本實驗中,我們將在單個節點中安裝和使用它。

在 Ubuntu 上安裝 ansible

首先,更新您的系統。 以下命令獲取最新的包:

$ sudo 適當更新

Ansible 在 Ubuntu 20.04 的基礎存儲庫中可用。 要安裝 ansible,請運行以下命令:

$ sudo apt 安裝 ansible -y

然後,使用命令檢查 ansible 版本,

$ ansible –version

Ansible 版本

主機配置文件存儲在 /etc/ansible/hosts 文件中。 在以下命令的幫助下,將您的本地主機服務器 IP 添加到文件中。 確保你有一個 sudo 用戶。 在我們的例子中,’ubuntu’ 有 sudo 特權。 在這裡,我將我的名字命名為“我的服務器”,您可以使用自己的名字。 另外,請記住用戶 ubuntu 是 sudo 系統中的用戶。

$ echo “myserver ansible_host=127.0.0.1 ansible_user=ubuntu” >> /etc/ansible/host

只需使用命令檢查它,

$ ansible myserver -m ping

您應該得到類似於下面屏幕截圖的 pong 響應。

Ansible 乒乓球 Ansible 乒乓響應

創建劇本

現在,讓我們創建一個名為 apache.yml 的 playbook 來安裝和運行最新的 apache web 服務器。

$ vi apache.yml

將以下內容添加到文件中

---
- hosts: myserver
become: true
vars:
- vars/default.yml
- tasks:
- name: Install latest version of Apache
apt: name=apache2 update_cache=yes state=latest

- name: Create document root for your domain
file:
path: "/var/www/{{ http_host }}"
state: directory
owner: "{{ app_user }}"
mode: '0755'

- name: Copy your index page
template:
src: "files/index.html.j2"
dest: "/var/www/{{ http_host }}/index.html"

- name: Set up virtuahHost
template:
src: "files/apache.conf.j2"
dest: "/etc/apache2/sites-available/{{ http_conf }}"
notify: restart-apache

- name: "UFW firewall allow HTTP on port {{ http_port }}"
ufw:
rule: allow
port: "{{ http_port }}"
proto: tcp

handlers:
- name: restart-apache
service:
name: apache2
state: restarted

這裡,

  • 主持人: 是您在 /etc/ansible/hosts 文件中定義的主機名
  • 變成:真的 是特權升級 sudo
  • 誰的: 用於定義變量
  • 任務: 定義了四個任務。 安裝 apache,複製索引頁面,設置虛擬主機,如果已經啟用,則允許來自 UFW 防火牆的 http。
  • 處理程序: 如果所有其他任務都成功,則重新啟動 apache。

除了 playbook,您還應該定義其他三個文件 vars/default.yml、 files/apache.conf.j2 和 files/index.html.j2 。 讓我們一一創建它們。

變量 / default.yml

default.yml 文件包含域名、配置文件位置和 http 端口。 創建文件並添加以下內容。

http_host: “mydomain.local”
http_conf: “my_domain.conf”
http_port: “80”

文件/apache.conf.j2

apache 配置模板包含虛擬主機的配置。 該變量在 {{ }} 中定義,並從上面定義的 vars 文件中獲得。 創建文件 apache.conf.js 並添加以下內容。

<VirtualHost *:{{ http_port }}>
ServerAdmin webmaster@localhost
ServerName {{ http_host }}
ServerAlias www.{{ http_host }}
DocumentRoot /var/www/{{ http_host }}
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

文件/index.html.j2

另一個模板是您的索引文件。 創建文件並添加以下內容。 您可以根據您的要求進行修改。

<html>
<head>
<title>{{ http_host }}</title>
</head>
<body>
<h1>Welcome to {{ http_host }}</h1>
</body>
</html>

現在您可以使用以下命令執行 ansible-playbook。

$ ansible-playbook apache.yml –ask-become-pass

您將被提示輸入密碼 sudo 用戶。 狀態應該沒問題,如下圖。

劇本輸出劇本輸出

這也將在默認端口 80 上運行 apache,您可以在您喜歡的瀏覽器中驗證瀏覽本地主機。

索引頁

結論

Ansible 是一個有用的工具,因為它是無代理的,並且很容易編寫配置。 您可以從 ansible 官方文檔。 如果您在 ansible 上編寫劇本時遇到任何問題,請發表評論。