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 forvòng lặp để tạo năm Linode. Thay thế yourrootpasswordcho 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.txttệ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 vm1thông qua vm5.

Giao diện người dùng của Cloud Manager

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.shansibleMN_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.ymllà 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 wgetcá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_Inframà 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_IPADDRESSbằ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 vm1và 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.shvà ansibleMN_setup.shđể có thể thực thi.

chmod 744 ansibleCN_setup.sh ansibleMN_setup.sh

3.Thực ansibleCN_setup.shthi 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/hostsbằ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 rsyslogphầ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 lslệ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/filenộ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 unreachablevà failedcả hai đều hiển thị 0cá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. ( vm2và 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 loggerlệnh đến ngăn xếp LAMP được xác định trong hoststệ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/