Ngày đăng: July 17, 2025
Tự động hóa máy chủ hiện đóng vai trò thiết yếu trong quản trị hệ thống, do tính chất dùng một lần của các môi trường ứng dụng hiện đại. Công cụ quản lý cấu hình như Ansible thường được sử dụng để đơn giản hóa quy trình tự động thiết lập máy chủ mới, đồng thời giảm thiểu lỗi do thao tác thủ công.
Ansible cung cấp kiến trúc đơn giản không yêu cầu phải cài đặt phần mềm đặc biệt trên các nút. Nó cũng cung cấp bộ tính năng mạnh mẽ cùng các module tích hợp giúp việc viết các script tự động hóa trở nên dễ dàng.
Hướng dẫn này giải thích cách sử dụng Ansible để tự động hóa các bước trong hướng dẫn "Cách cài đặt WordPress với LAMP trên Ubuntu 18.04". WordPress là hệ quản trị nội dung phổ biến nhất trên Internet, cho phép người dùng thiết lập các blog và trang web linh hoạt dựa trên MySQL và xử lý PHP. Sau khi thiết lập, hầu hết việc quản trị có thể được thực hiện qua giao diện web.
Để thực thi việc tự động thiết lập bằng playbook trong hướng dẫn này, bạn cần:
Trước khi tiếp tục, bạn cần chắc chắn node điều khiển Ansible có thể kết nối và thực thi lệnh trên các máy chủ Ansible. Để kiểm tra kết nối, xem bước 3 trong hướng dẫn "Cách cài đặt và cấu hình Ansible trên Ubuntu 18.04".
Playbook Ansible này cung cấp phương pháp thay thế cho việc thực hiện thủ công các bước trong hướng dẫn "Cách cài đặt WordPress với LAMP trên Ubuntu 18.04".
Khi chạy, playbook sẽ thực hiện các hành động sau trên các máy chủ Ansible:
aptitude
, được Ansible ưu tiên so với apt
.VirtualHost
mới cho trang WordPress.mod_rewrite
).root
của MySQL.wp-config.php
sử dụng mẫu có sẵn.Sau khi playbook chạy xong, bạn sẽ có một cài đặt WordPress chạy trên môi trường LAMP dựa trên các tuỳ chọn bạn đã định nghĩa trong biến cấu hình.
Đầu tiên, bạn cần lấy playbook WordPress trên LAMP và các phụ thuộc từ kho do-community/ansible-playbooks
. Hãy clone kho này vào thư mục local trên node điều khiển Ansible.
Nếu bạn đã clone kho này khi làm theo một hướng dẫn khác, vào thư mục ansible-playbooks
hiện có và chạy lệnh git pull
để cập nhật nội dung:
$ cd ~/ansible-playbooks
$ git pull
Nếu bạn lần đầu sử dụng, hãy clone kho vào thư mục home:
$ cd ~
$ git clone https://github.com/do-community/ansible-playbooks.git
$ cd ansible-playbooks
Các tệp của playbook nằm trong thư mục wordpress-lamp_ubuntu1804
với cấu trúc:
wordpress-lamp_ubuntu1804
├── files
│ ├── apache.conf.j2
│ └── wp-config.php.j2
├── vars
│ └── default.yml
├── playbook.yml
└── readme.md
Ý nghĩa từng tệp:
files/apache.conf.j2
: Mẫu cấu hình Apache VirtualHost.files/wp-config.php.j2
: Mẫu tập tin cấu hình WordPress.vars/default.yml
: Tệp biến để tùy chỉnh các tuỳ chọn playbook.playbook.yml
: Tệp playbook định nghĩa các nhiệm vụ thực thi trên máy chủ từ xa.readme.md
: Tệp thông tin về playbook.Bạn sẽ chỉnh sửa tệp biến vars/default.yml
để tùy chỉnh.
Truy cập thư mục wordpress-lamp_ubuntu1804
và mở tệp vars/default.yml
bằng trình soạn thảo dòng lệnh bạn thích:
$ cd wordpress-lamp_ubuntu1804
$ nano vars/default.yml
Tệp này chứa vài biến cần chú ý:
---
#System Settings
php_modules: ['php-curl', 'php-gd', 'php-mbstring', 'php-xml', 'php-xmlrpc', 'php-soap', 'php-intl', 'php-zip']
#MySQL Settings
mysql_root_password: "mysql_root_password"
mysql_db: "wordpress"
mysql_user: "sammy"
mysql_password: "password"
#HTTP Settings
http_host: "your_domain"
http_conf: "your_domain.conf"
http_port: "80"
Ý nghĩa biến:
php_modules
: Mảng các tiện ích mở rộng PHP cần cài để hỗ trợ WordPress. Bạn có thể thêm nếu cần.mysql_root_password
: Mật khẩu cho tài khoản root của MySQL.mysql_db
: Tên cơ sở dữ liệu MySQL sẽ dùng cho WordPress.mysql_user
: Tên user MySQL mới cho WordPress.mysql_password
: Mật khẩu cho user MySQL mới.http_host
: Tên miền của bạn.http_conf
: Tên file cấu hình sẽ tạo trong Apache.http_port
: Cổng HTTP của virtual host (mặc định 80).Sau khi chỉnh sửa xong nhớ lưu và thoát file.
Để chạy playbook trên một hoặc nhiều máy chủ, mặc định nó chạy trên toàn bộ máy trong inventory. Bạn có thể dùng cờ -l
để chỉ chạy trên máy chủ cụ thể, và cờ -u
để chỉ định user kết nối.
Ví dụ, để chạy trên server1
với user sammy
:
$ ansible-playbook playbook.yml -l server1 -u sammy
Dưới đây là ví dụ giao diện đầu ra:
PLAY [all] *****************************************************************************************************************************
TASK [Gathering Facts] *****************************************************************************************************************
ok: [server1]
TASK [Install prerequisites] ***********************************************************************************************************
ok: [server1]
…
TASK [Download and unpack latest WordPress] ********************************************************************************************
changed: [server1]
TASK [Set ownership] *******************************************************************************************************************
changed: [server1]
TASK [Set permissions for directories] *************************************************************************************************
changed: [server1]
TASK [Set permissions for files] *******************************************************************************************************
changed: [server1]
TASK [Set up wp-config] ****************************************************************************************************************
changed: [server1]
RUNNING HANDLER [Reload Apache] ********************************************************************************************************
changed: [server1]
RUNNING HANDLER [Restart Apache] *******************************************************************************************************
changed: [server1]
PLAY RECAP *****************************************************************************************************************************
server1 : ok=22 changed=18 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Lưu ý: Để biết thêm cách chạy Ansible playbook, xem Hướng dẫn Mẹo Ansible.
Khi playbook hoàn thành, bạn có thể truy cập trình duyệt và tới tên miền hoặc địa chỉ IP công cộng của máy chủ:
http://server_host_or_IP
Bạn sẽ thấy giao diện chọn ngôn ngữ của WordPress, sau đó là bước cuối cùng để tạo user và mật khẩu đăng nhập bảng điều khiển.
vars/default.yml
định nghĩa các biến cấu hình như database và tên miền.files/apache.conf.j2
là template Jinja 2 cấu hình Apache VirtualHost.files/wp-config.php.j2
là template cấu hình WordPress với các key bảo mật.playbook.yml
định nghĩa tất cả nhiệm vụ trong quá trình thiết lập.Playbook playbook.yml
có cấu trúc chính:
all
.vars/default.yml
.Bạn có thể chỉnh sửa các tập tin này để phù hợp nhu cầu của mình.
Trong hướng dẫn này, chúng ta đã sử dụng Ansible để tự động hóa quy trình cài đặt và thiết lập trang WordPress với môi trường LAMP trên máy chủ Ubuntu 18.04.
Nếu bạn muốn bổ sung thêm các nhiệm vụ để tùy chỉnh máy chủ, vui lòng tham khảo hướng dẫn giành cho người mới về Ansible: "Quản lý cấu hình 101: Viết Ansible Playbooks".