Ansible là gì?
Ansible là một công cụ cung cấp phần mềm mã nguồn mở tự động hóa việc triển khai ứng dụng và cơ sở hạ tầng CNTT. Nó nhẹ và không có tác nhân, nghĩa là không cần cài đặt phần mềm máy khách hoặc máy chủ. Ansible sử dụng SSH và Python để thực hiện các tác vụ tự động hóa cực kỳ hữu ích của nó.
Trong hướng dẫn này bạn:
- Triển khai và cấu hình năm Linode. Một là nút điều khiển Ansible và những nút còn lại là nút worker.
- Cấu hình và chạy playbook Ansible để cấu hình các nút làm việc.
- Kiểm tra máy chủ web và máy chủ nhật ký đang chạy của bạn.
- Quan trọngCác hướng dẫn mẫu trong hướng dẫn này tạo ra năm Linode 1GB . Chúng thêm các tài nguyên có thể thanh toán vào tài khoản Linode của bạn. Nếu bạn không muốn tiếp tục sử dụng các Linode đã tạo, hãy xóa chúng sau khi hoàn tất hướng dẫn này.Nếu sau đó bạn xóa các tài nguyên này, bạn sẽ chỉ bị tính phí cho thời gian các tài nguyên đó có trong tài khoản của bạn.
Điều kiện tiên quyết
- Hiểu biết ở mức trung bình về Bash shell và các tiện ích của nó.
- Cài đặt Linode CLI hoặc bạn có thể sử dụng Linode Cloud Manager .
- Sử dụng CLI cho phép bạn tiết kiệm thời gian tạo, dán nhãn và gắn thẻ Linode.
- Tạo một thư mục mới để làm việc. Ví dụ, bạn có thể đặt tên là “Ansible_Infra” .
Ghi chú: Các bước trong hướng dẫn này được viết cho người dùng không phải root. Các lệnh yêu cầu quyền nâng cao được thêm tiền tố sudo
. Nếu bạn không quen với sudo
lệnh này, hãy xem hướng dẫn Người dùng và Nhóm .
Tạo một nút điều khiển Ansible và bốn nút được quản lý
Ghi chúPhần này yêu cầu bạn phải cài đặt và cấu hình
Linode CLI trên máy tính của mình.
Trên máy cục bộ của bạn, hãy thiết lập một biến môi trường để lưu trữ tạm thời mật khẩu. Biến môi trường này sẽ được sử dụng trong các bước sau trong một for
vòng lặp để tạo năm Linode. Thay thế yourrootpassword
cho mật khẩu an toàn vì mật khẩu này được sử dụng làm mật khẩu gốc cho tất cả các Linode mới tạo của bạn.
pass=yourrootpassword
Kiểm tra xem mật khẩu này có hoạt động không bằng cách chạy echo $pass
. Bạn sẽ thấy mật khẩu mới tạo của mình là đầu ra.
echo $pass
yourrootpassword
Chạy lệnh bên dưới để tạo năm Linode.
for i in {1..5}; do linode-cli linodes create --root_pass $pass; done
Đầu ra của bạn sẽ giống như ví dụ sau:
┌──────────┬────────────────┬─────────┬─────────────┬────────────────────┬──────────────┬────────────────┐
│ id │ label │ region │ type │ image │ status │ ipv4 │
├──────────┼────────────────┼─────────┼─────────────┼────────────────────┼──────────────┼────────────────┤
│ 31202535 │ linode31202535 │ us-east │ g6-nanode-1 │ linode/ubuntu20.04 │ provisioning │ 192.0.2.0 │
└──────────┴────────────────┴─────────┴─────────────┴────────────────────┴──────────────┴────────────────┘
┌──────────┬────────────────┬─────────┬─────────────┬────────────────────┬──────────────┬────────────────┐
│ id │ label │ region │ type │ image │ status │ ipv4 │
├──────────┼────────────────┼─────────┼─────────────┼────────────────────┼──────────────┼────────────────┤
│ 31202548 │ linode31202548 │ us-east │ g6-nanode-1 │ linode/ubuntu20.04 │ provisioning │ 192.0.2.1 │
└──────────┴────────────────┴─────────┴─────────────┴────────────────────┴──────────────┴────────────────┘
┌──────────┬────────────────┬─────────┬─────────────┬────────────────────┬──────────────┬─────────────────┐
│ id │ label │ region │ type │ image │ status │ ipv4 │
├──────────┼────────────────┼─────────┼─────────────┼────────────────────┼──────────────┼─────────────────┤
│ 31202559 │ linode31202559 │ us-east │ g6-nanode-1 │ linode/ubuntu20.04 │ provisioning │ 192.0.2.2 │
└──────────┴────────────────┴─────────┴─────────────┴────────────────────┴──────────────┴─────────────────┘
┌──────────┬────────────────┬─────────┬─────────────┬────────────────────┬──────────────┬─────────────────┐
│ id │ label │ region │ type │ image │ status │ ipv4 │
├──────────┼────────────────┼─────────┼─────────────┼────────────────────┼──────────────┼─────────────────┤
│ 31202570 │ linode31202570 │ us-east │ g6-nanode-1 │ linode/ubuntu20.04 │ provisioning │ 192.0.2.3 │
└──────────┴────────────────┴─────────┴─────────────┴────────────────────┴──────────────┴─────────────────┘
┌──────────┬────────────────┬─────────┬─────────────┬────────────────────┬──────────────┬─────────────────┐
│ id │ label │ region │ type │ image │ status │ ipv4 │
├──────────┼────────────────┼─────────┼─────────────┼────────────────────┼──────────────┼─────────────────┤
│ 31202576 │ linode31202576 │ us-east │ g6-nanode-1 │ linode/ubuntu20.04 │ provisioning │ 192.0.2.4 │
└──────────┴────────────────┴─────────┴─────────────┴────────────────────┴──────────────┴─────────────────┘
Lưu trữ ID Linode của bạn trong một tệp tạm thời
Sử dụng lệnh sau để in năm ID Linode cuối cùng và chuyển hướng đầu ra đến tệp tmp.txt
. Bạn có thể sử dụng các ID Linode này để gắn thẻ và dán nhãn cho Linode của mình.
Ghi chú: Việc gắn thẻ và dán nhãn Linode giúp Linode Cloud Manager của bạn được sắp xếp khoa học.
linode-cli linodes list --text | tail -5 | awk '{print $1}' > tmp.txt
Đánh dấu Ansible Linodes của bạn
Sử dụng dòng mã sau để gắn thẻ Linodes với “Ansible”. Thực hiện thao tác này để nhóm các Linodes lại với nhau trong Cloud Manager.
for i in $(cat tmp.txt); do linode-cli linodes update --tags Ansible $i; done
Nhãn Linode Ansible của bạn
Lặp qua các ID Linode từ tmp.txt
tệp bạn đã tạo trước đó. Sau đó, gán cho mỗi Linode một nhãn được đánh số ( vm1
đến vm5
) bằng cách sử dụng dòng mã sau.
i=1; for j in $(cat tmp.txt); do linode-cli linodes update --label vm$i $j; let "i++"; done
Nếu bạn kiểm tra Giao diện người dùng của Cloud Manager, bạn có thể thấy năm Linode này được nhóm lại dưới thẻ “Ansible” và được gắn nhãn vm1
thông qua vm5
.

Tạo các tệp thiết lập để cấu hình nút điều khiển Ansible và nút Worker
Tạo ba tệp có tên là ansibleCN_setup.sh
, ansibleMN_setup.sh
, và myplaybook.yml
. Sử dụng trình soạn thảo văn bản, sao chép và dán mã trong các tệp ví dụ bên dưới vào từng tệp tương ứng. Các tệp thiết lập giúp bảo mật Linode của bạn, cài đặt phần mềm cần thiết và tạo người dùng giới hạn trên phiên bản của bạn. Tệp playbook myplaybook.yml
là tệp mà Ansible sử dụng để cấu hình các nút được quản lý.
Ghi chú: Một cách nhanh hơn là bạn có thể lấy wget
các tệp cấu hình từ kho lưu trữ GitHub của tác giả và lưu chúng vào thư mục làm việc cục bộ Ansible_Infra
mà bạn đã tạo trước đó.
wget https://raw.githubusercontent.com/bennettnw2/Ansible_webserver_infra_files/main/ansibleCN_setup.sh
wget https://raw.githubusercontent.com/bennettnw2/Ansible_webserver_infra_files/main/ansibleMN_setup.sh
wget https://raw.githubusercontent.com/bennettnw2/Ansible_webserver_infra_files/mai
#! /bin/bash
# This is the script to run to setup an Ansible control node.
echo "##########################################################"
echo "# Update and Secure Linode Instance #"
echo "##########################################################"
apt update
apt upgrade -y
hostnamectl set-hostname CtlNode
# Secure ssh a bit with no root login and no x11 forwarding
# Need to remove host key checking for Ansible to run properly
sed -in 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sed -in 's/X11Forwarding yes/X11Forwarding no/' /etc/ssh/sshd_config
sed -in 's/# StrictHostKeyChecking ask/StrictHostKeyChecking no/' /etc/ssh/ssh_config
echo "##########################################################"
echo "# Installing Software #"
echo "##########################################################"
# Install Software
# ====================================================================================================
apt install sshpass -y
apt install ansible -y
apt install fail2ban -y
apt install python3-pip -y
pip3 install passlib
# Configure Software
# ====================================================================================================
# fail2ban
# ========
systemctl enable fail2ban.service
systemctl start fail2ban.service
# ufw
# ========
ufw allow openssh
yes | ufw enable
ufw status
echo "##########################################################"
echo "# Creating limited user #"
echo "##########################################################"
echo ""
echo "Please enter preferred username: "
read USERNAME
# Create limited user and give sudo privileges.
useradd -m -G sudo -s /bin/bash $USERNAME
passwd $USERNAME
mv ansibleMN_setup.sh myplaybook.yml /home/$USERNAME
# Create passwordless sudo for user $USERNAME
#+ and add file in /etc/sudoers.d/
echo "$USERNAME ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/10-user-$USERNAME
chmod 440 /etc/sudoers.d/10-user-$USERNAME
visudo -c
# Create an ssh key for the user.
mkdir /home/$USERNAME/.ssh
ssh-keygen -t rsa -b 2048 -f /home/$USERNAME/.ssh/id_rsa -q -N ''
# Set file permissions for the user.
chown -R $USERNAME:$USERNAME /home/$USERNAME/.ssh
chown $USERNAME:$USERNAME /home/$USERNAME/myplaybook.yml
echo "##########################################################"
echo "# Dunzo. Poke around if you like. I recommend a reboot. #"
echo "##########################################################"
#!/bin/bash
# This is the script to run in order to setup Ansible managed nodes.
echo "##########################################################"
echo "# Update and Secure Linode Instance #"
echo "##########################################################"
apt update
apt upgrade -y
# Secure ssh a bit with no root login and no x11 forwarding.
sed -in 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sed -in 's/X11Forwarding yes/X11Forwarding no/' /etc/ssh/sshd_config
sed -in 's/#PubkeyAuthentication/PubkeyAuthentication/' /etc/ssh/sshd_config
apt install fail2ban -y
systemctl enable fail2ban.service
systemctl start fail2ban.service
echo "##########################################################"
echo "# Creating limited user #"
echo "##########################################################"
echo ""
echo "Please enter preferred username: "
read USERNAME
# Create limited user and give sudo privileges.
useradd -m -G sudo -s /bin/bash $USERNAME
passwd $USERNAME
# Create passwordless sudo execution for user $USERNAME
#+ and add file in /etc/sudoers.d/
echo "$USERNAME ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/10-user-$USERNAME
chmod 440 /etc/sudoers.d/10-user-$USERNAME
visudo -c
echo "##########################################################"
echo "# Dunzo. Poke around if you like. I recommend a reboot. #"
echo "##########################################################"
Ansible playbook là thứ làm cho Ansible trở thành phần mềm mạnh mẽ. Cú pháp của các tác vụ rất giống với ngôn ngữ thông thường và do đó, làm cho tệp playbook có thể đọc được bằng con người. Theo thông lệ tốt nhất, hãy đảm bảo tên tác vụ của bạn có tính mô tả và chính xác. Xem lại tên của các tác vụ trong myplaybook.yml
, để tìm hiểu xem mỗi tác vụ được cho là thực hiện những gì.
---
- hosts: webservers
become: yes
tasks:
- name: "Install Apache Server"
apt:
name: apache2
state: present
- name: "Enable and Start Apache Server"
service:
name: apache2
enabled: yes
state: started
- name: "Install Firewalld"
apt:
name: firewalld
state: present
- name: "Enable and start firewalld server"
service:
name: firewalld
enabled: yes
state: started
- name: "Open Firewall Port"
firewalld:
service: http
immediate: true
permanent: true
state: enabled
- name: "Create web admin group"
group:
name: web
state: present
- name: "Create web admin user"
user:
name: webadm
comment: "Web Admin"
password: {{ HASHED_PASSWORD }}
groups: web
append: yes
- name: "Set content directory group/permissions"
file:
path: /var/www/html
owner: root
group: web
state: directory
mode: u=rwx,g=rwx,o=rx,g+s
- name: "Create default page content"
copy:
content: "Welcome to {{ ansible_fqdn }} on {{ ansible_default_ipv4.address }}"
dest: /var/www/html/index.html
owner: webadm
group: web
mode: u=rw,g=rw,o=r
- hosts: dbservers
become: yes
tasks:
- name: "Install MariaDB Server"
apt:
name: mariadb-server
state: present
- name: "Enable and start MariaDB server"
service:
name: mariadb
enabled: yes
state: started
- hosts: logservers
become: yes
tasks:
- name: "Configure rsyslog remote log reception over udp"
lineinfile:
path: /etc/rsyslog.conf
line: "{{ item }}"
state: present
with_items:
- '$ModLoad imudp'
- '$UDPServerRun 514'
notify:
- restart rsyslogd
- name: "Install Firewalld"
apt:
name: firewalld
state: present
- name: "Enable and start firewalld server"
service:
name: firewalld
enabled: yes
state: started
- name: "Open firewall port"
firewalld:
port: 514/udp
immediate: true
permanent: true
state: enabled
handlers:
- name: "restart rsyslogd"
service:
name: rsyslog
state: restarted
- hosts: lamp
become: yes
tasks:
- name: configure rsyslog
lineinfile:
path: /etc/rsyslog.conf
line: '*.* @{{ LOG_IP_ADDRESS }}'
state: present
notify:
- restart rsyslogd
handlers:
- name: "restart rsyslogd"
service:
name: rsyslog
state: restarted
Cấu hình nút điều khiển của bạn
Sử dụng scp
, các tệp trên được gửi đến nút điều khiển Ansible. Sau đó, bạn có thể đăng nhập vào nút điều khiển và thực thi tập lệnh nút điều khiển, ansibleCN_setup.sh
.
Ghi chú: Trong tất cả các bước trong phần này, hãy thay thế VM1_IPADDRESS
bằng địa chỉ IP lấy được từ Linode CLI hoặc Cloud Manager.
Quan trọng: Đừng quên dấu hai chấm “ : ” ở cuối lệnh bên dưới.
scp ansibleCN_setup.sh ansibleMN_setup.sh myplaybook.yml root@VM1_IPADDRESS:
Cập nhật, bảo mật và cài đặt các gói phụ thuộc trên Linode
1.SSH vào vm1
và chạy ansibleCN_setup.sh
. Thao tác này sẽ cập nhật, bảo mật và cài đặt chỉ những phụ thuộc cần thiết trên Linode.
ssh root@VM1_IPADDRESS
2.Thay đổi quyền trên ansibleCN_setup.sh
và ansibleMN_setup.sh
để có thể thực thi.
chmod 744 ansibleCN_setup.sh ansibleMN_setup.sh
3.Thực ansibleCN_setup.sh
thi tập lệnh. Phải mất vài phút để tập lệnh hoàn tất.
./ansibleCN_setup.sh
Ghi chú: Tập lệnh yêu cầu bạn nhập tên người dùng và mật khẩu cho người dùng mới đang được tạo.
Khởi động lại và truy cập Ansible Linode của bạn
Sử dụng lệnh bên dưới để khởi động lại Linode bằng cách sử dụng Linode CLI. Bạn cũng có thể khởi động lại Linode bằng Cloud Manager.
linode-cli linodes reboot LINODE_ID
Sử dụng lệnh bên dưới để SSH vào vm1
.
Quan trọngHãy chắc chắn sử dụng người dùng mới mà bạn đã tạo vì tập lệnh thiết lập sẽ vô hiệu hóa chức năng đăng nhập root.
ssh YOUR_USERNAME@VM1_IPADDRESS
Bạn sẽ thấy tên máy chủ, CtlNode , được cấu hình trên dấu nhắc lệnh cùng với tên người dùng của bạn.
example_user@CtlNode:~$
Cấu hình Nút điều khiển của bạn để kết nối với Nút công nhân
Thiết lập tệp máy chủ của nút điều khiển của bạn
Điều này cho phép bạn sử dụng tên máy chủ khi tham chiếu đến các phiên bản khác nhau. Chạy lệnh bên dưới từ máy cục bộ của bạn.
linode-cli linodes list --text | grep vm | awk '{print $7,$2,$2".ansi.com"}' | column -t
Đầu ra của bạn sẽ giống như ví dụ sau:
192.0.2.0 vm1 vm1.ansi.com
192.0.2.1 vm2 vm2.ansi.com
192.0.2.2 vm3 vm3.ansi.com
192.0.2.3 vm4 vm4.ansi.com
192.0.2.4 vm5 vm5.ansi.com
Sử dụng trình soạn thảo văn bản bạn chọn, sao chép và dán đầu ra này vào cuối /etc/hosts/
tệp trên vm1
.
Ghi chú: Sử dụng sudo
để chỉnh sửa /etc/hosts
bằng Vi(m).
Sử dụng dòng mã bên dưới để đảm bảo bạn có thể ping tất cả tên máy chủ.
for i in {1..5}; do ping -c 2 vm$i; done
Tạo Ansible Configs trên Control Node
Sử dụng trình soạn thảo văn bản, tạo và sao chép tệp cấu hình, ansible.cfg
, vào thư mục gốc của bạn.
[defaults]
inventory = $HOME/hosts
Tạo và sao chép tệp cấu hình máy chủ Ansible bên dưới vào thư mục gốc của bạn.
[webservers]
vm2
vm3
[dbservers]
vm4
[logservers]
vm5
[lamp:children]
webservers
dbservers
Sử dụng lệnh bên dưới để đảm bảo tất cả máy chủ đều có thể truy cập được.
ansible all --list-hosts
Đầu ra của bạn sẽ giống như sau:
example_user@CtlNode:~$ ansible all --list-hosts
hosts (4):
vm5
vm2
vm3
vm4
Thiết lập Ansible Playbook để cấu hình các nút Worker
Tạo và thêm mật khẩu băm, dạng văn bản thuần túy vào Ansible Playbook
Chạy lệnh bên dưới từ nút điều khiển Ansible của bạn. Lệnh sẽ nhắc bạn nhập mật khẩu. Mật khẩu này được sử dụng để truy cập vào máy chủ web.
python3 -c "from passlib.hash import sha512_crypt; import getpass; print(sha512_crypt.hash(getpass.getpass()))"
Hãy đảm bảo sao chép đầu ra từ dấu đô la đến dấu chấm. Dán mật khẩu đã băm kết quả vào myplaybook.yml
, trong chỗ giữ chỗ, {{ HASHED_PASSWORD }} .
Thêm Địa chỉ IP Máy chủ Nhật ký của bạn vào Playbook
Lấy địa chỉ IP của máy chủ ghi nhật ký ( vm5
) và dán vào configure rsyslog
phần myplaybook.yml
. Dán địa chỉ IP vào chỗ giữ chỗ, {{ LOG_IP_ADDRESS }} .
Cấu hình các nút được quản lý của Ansible
Gửi tập lệnh thiết lập đến từng nút được quản lý
Tạo một tệp mật khẩu để sử dụng ở bước tiếp theo. Sử dụng cùng mật khẩu gốc mà bạn đã dùng khi tạo các Linode này.
echo 'yourrootpassword' > ~/.ssh/file
Gửi tập lệnh thiết lập nút được quản lý tới từng nút được quản lý.
for i in {2..5}; do sshpass -f ~/.ssh/file scp ansibleMN_setup.sh root@vm$i:/root/; done
Kiểm tra để đảm bảo mỗi nút được quản lý đều chứa tập lệnh bằng cách gửi ls
lệnh qua ssh.
for i in {2..5}; do sshpass -f ~/.ssh/file ssh root@vm$i 'ls'; done
Kết quả đầu ra như sau:
example_user@CtlNode:~$ for i in {2..5}; do sshpass -f ~/.ssh/file ssh root@vm$i 'ls'; done
ansibleMN_setup.sh
ansibleMN_setup.sh
ansibleMN_setup.sh
ansibleMN_setup.sh
Đăng nhập vào từng nút Worker và chạy tập lệnh thiết lập
Từ máy tính cục bộ, mở bốn phiên thiết bị đầu cuối và trong mỗi phiên, ssh vào từng nút được quản lý ( vm2
– vm5
). Sau khi đăng nhập, hãy thực thi tập lệnh thiết lập nút được quản lý.
./ansibleMN_setup.sh
Ghi chú: Tập lệnh yêu cầu bạn nhập tên người dùng và mật khẩu cho người dùng mới đang được tạo.
Sau khi tập lệnh thiết lập hoàn tất cho từng nút được quản lý, hãy khởi động lại tất cả các Linode cơ sở hạ tầng Ansible của bạn bằng lệnh bên dưới.
for i in $(cat tmp.txt); do linode-cli linodes reboot $i; done
Tải Khóa SSH từ Nút Điều khiển lên các Nút Được Quản lý
Đăng nhập lại vào nút điều khiển và chạy lệnh bên dưới. Lệnh này sẽ gửi khóa ssh của người dùng giới hạn của nút điều khiển đến từng nút được quản lý. Lệnh này cho phép giao tiếp ssh dễ dàng và an toàn từ nút điều khiển đến các nút được quản lý.
for i in {2..5}; do sshpass -f ~/.ssh/file ssh-copy-id $USER@vm$i; done
Ghi chú: Nếu mật khẩu của người dùng bị giới hạn khác với mật khẩu của người dùng gốc, hãy thay đổi ~/.ssh/file
nội dung cho khớp với mật khẩu của người dùng bị giới hạn.
Xác nhận tất cả các máy chủ có thể được ping bằng Ansible. Chạy thành công lệnh này cho biết giao tiếp ssh đang hoạt động.
ansible all -m ping
example_user@CtlNode:~$ ansible all -m ping
vm4 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
vm3 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
vm2 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
vm5 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
Chạy Ansible Playbook để cấu hình các nút được quản lý
Chạy playbook bằng lệnh bên dưới:
ansible-playbook myplaybook.yml
Nếu mọi thứ đều thành công, bạn sẽ thấy kết quả được đưa ra bên dưới. Lưu ý rằng unreachable
và failed
cả hai đều hiển thị 0
các trường hợp.
Đầu ra bị cắt bớt:
example_user@CtlNode:~$ ansible-playbook myplaybook.yml
PLAY [webservers] *************************************************************************************************
TASK [Gathering Facts] ********************************************************************************************
ok: [vm3]
ok: [vm2]
TASK [Install Apache Server] **************************************************************************************
changed: [vm3]
changed: [vm2]
{ ... }
PLAY RECAP ********************************************************************************************************
vm2 : ok=13 changed=9 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
vm3 : ok=13 changed=9 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
vm4 : ok=6 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
vm5 : ok=6 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Kiểm tra Playbook Chạy để thành công
cURL địa chỉ IP của máy chủ web. ( vm2
và vm3
)
curl vm2_IPADDRESS
curl vm3_IPADDRESS
example_user@CtlNode:~$ curl 192.0.2.1
Welcome to li1924-155 on 192.0.2.1
example_user@CtlNode:~$ curl 192.0.2.2
Welcome to li1924-165 on 192.0.2.2
Gửi logger
lệnh đến ngăn xếp LAMP được xác định trong hosts
tệp.
ansible lamp -m command -a 'logger hurray it works'
example_user@CtlNode:~$ ansible lamp -m command -a 'logger hurray it works'
vm4 | CHANGED | rc=0 >>
vm3 | CHANGED | rc=0 >>
vm2 | CHANGED | rc=0 >>
Tìm kiếm mục nhập bạn vừa gửi trên máy chủ nhật ký.
ansible logservers -m command -a "grep 'hurray it works$' /var/log/syslog" -b
example_user@CtlNode:~$ ansible logservers -m command -a "grep 'hurray it works$' /var/log/syslog" -b
vm5 | CHANGED | rc=0 >>
Oct 25 21:22:00 li1924-200 example_user: hurray it works
Oct 25 21:22:00 li1924-165 example_user: hurray it works
Oct 25 21:22:00 li1924-155 example_user: hurray it works
Bây giờ bạn đã hoàn tất việc triển khai máy chủ web, máy chủ nhật ký và máy chủ cơ sở dữ liệu bằng Ansible.
Thông tin thêm
Bạn có thể muốn tham khảo các nguồn sau để biết thêm thông tin về chủ đề này. Mặc dù chúng tôi cung cấp với hy vọng rằng chúng sẽ hữu ích, nhưng xin lưu ý rằng chúng tôi không thể đảm bảo tính chính xác hoặc tính kịp thời của các tài liệu được lưu trữ bên ngoài.
Nguồn: https://www.linode.com/docs/guides/use-ansible-to-automate-web-server-infrastructure/