Tìm hiểu về Ansible Playbook để tự động hóa các tác vụ

Tìm hiểu về Ansible Playbook để tự động hóa các tác vụ.


Trước đây, chúng tôi đã thảo luận về phần giới thiệu, hướng dẫn cài đặt của Ansible và tiếp theo, hãy để nói chuyện về Playbook và các khối xây dựng của nó.

Playbook Ansible là gì?

Playbook là ngôn ngữ tự động hóa Ansible. Nó là một tập tin đơn giản với một bộ hướng dẫn. Đó là trong playbooks nơi chúng tôi xác định những gì chúng tôi muốn Ansible làm. Playbook chứa các vở kịch chạy các tác vụ và các tác vụ này chạy các mô-đun. Nhiệm vụ của họ thực hiện tuần tự.

Ví dụ, nó có thể đơn giản như chạy một loạt lệnh trên các máy chủ khác nhau theo trình tự và khởi động lại các máy chủ đó theo thứ tự. Hoặc nó có thể phức tạp như việc triển khai và cung cấp hàng trăm máy ảo trong đám mây công cộng và riêng tư bao gồm cân bằng tải, giám sát, thiết lập mạng của chúng.

Ngôn ngữ Playbook

Playbooks là các tệp đơn giản được viết bằng mã YAML.

YAML là một ngôn ngữ tuần tự hóa dữ liệu. Nó là con người và máy có thể đọc được. Bạn không yêu cầu bất kỳ kỹ năng mã hóa đặc biệt nào để viết mã YAML. Bạn có thể nghĩ về ngôn ngữ tuần tự hóa dữ liệu như một dịch giả để phá vỡ tất cả cấu trúc dữ liệu của bạn và tuần tự hóa chúng theo thứ tự có thể được xây dựng lại để sử dụng sau. Bạn có thể sử dụng cấu trúc dữ liệu được xây dựng lại này trong cùng một môi trường hoặc thậm chí trong một môi trường khác.

Dưới đây là một tệp YAML mẫu để cài đặt mysql:


– tên: Cài đặt MySQL
máy chủ: geekflare-mysql-dịch vụ
nhiệm vụ:
– tên: Cài đặt MySQL
hành động: $ ansible_pkg_mgr pkg = mysql-server state = đã cài đặt
– tên: Thêm Python MySQL DB
hành động: $ ansible_pkg_mgr pkg = python-mysqldb state = đã cài đặt

Khái niệm cơ bản về Playbook

Phần này của bài viết bao gồm các khái niệm Ansible cơ bản để hiểu thêm về Ansible Playbook.

Máy chủ và người dùng

Ansible cần các máy mục tiêu trong cơ sở hạ tầng mà các vở kịch phải được triển khai từ Playbook Ansible. Các máy chủ được thêm vào kho Ansible thông qua địa chỉ IP của chúng. Máy chủ lưu trữ là một danh sách của một hoặc nhiều nhóm hoặc mẫu máy chủ được phân tách bằng dấu hai chấm. Remote_user chứa tên của tài khoản người dùng.


– máy chủ: ProdServers
remote_user: geekflare

Biến

Các biến cho phép bạn thay đổi cách một playbook chạy. Chúng có thể được sử dụng gần như ở mọi nơi trong Playbook và có thể được kế thừa từ kho lưu trữ, được đặt rõ ràng khi chạy, được phát hiện khi bắt đầu chạy playbook. Bạn có thể xác định tên biến bằng chữ cái, số và dấu gạch dưới, nhưng nó phải bắt đầu chỉ bằng một chữ cái.

Ví dụ: port_01 là biến hợp lệ, trong khi 01_post là biến không hợp lệ. Dưới đây là một ví dụ về các biến trong Playbook Ansible:

lọ:
http_port: 80
tối đa: 200

Hàng tồn kho

Để chạy một cuốn sách, bạn cần có một danh sách các mục tiêu mà bạn muốn tự động hóa xảy ra. Đây là những gì một hàng tồn kho làm. Danh sách hàng tồn kho có thể được xây dựng và lưu trữ theo nhiều cách khác nhau, bao gồm các tệp tĩnh, tức là, Máy chủ lưu trữ. Hoặc nó có thể được tạo động thông qua tập lệnh kiểm kê sẽ kéo danh sách máy chủ cho nguồn bên ngoài.

Bạn cũng có thể chỉ định một biến là một phần của danh sách hàng tồn kho. Hàng tồn kho cuối cùng là một danh sách những thứ bạn muốn tự động hóa.

[máy chủ web]
192.168.20.1
192.168.20.2
192.168.20.4
[dbservers]
172,17.1.56
172,17.1.57

Nhiệm vụ

Chơi trong ansible playbook nhiệm vụ chạy. Nhiệm vụ này chịu trách nhiệm chạy các mô-đun ansible. Tại một thời điểm, chỉ có một tác vụ có thể chạy và các tác vụ được thực hiện theo thứ tự tuần tự. Nhiệm vụ của họ được viết bằng YAML, ngôn ngữ khá giống tiếng Anh.

Ví dụ: cài đặt gói_name, Cập nhật phần mềm_name, v.v … Dưới đây là ví dụ về một tác vụ trong Ansible playbook để cài đặt httpd:

nhiệm vụ:
– Tên: Cài đặt gói httpd
yum: name = httpd state = mới nhất

Xử lý

Xử lý là một loại nhiệm vụ đặc biệt.

Chúng có thể được kích hoạt bởi một nhiệm vụ và được chạy một lần vào cuối vở kịch. Nó được sử dụng để gửi thông báo nếu có bất kỳ thay đổi nào trong tệp cấu hình, ví dụ, thông báo cho dịch vụ để bắt đầu apache sau khi được cài đặt. Cú pháp thông báo cú pháp được sử dụng để gọi trình xử lý. Dưới đây là một ví dụ về trình xử lý để khởi động lại apache:


– chủ nhà: tất cả
nhiệm vụ:
– Tên: đảm bảo apache là phiên bản mới nhất
yum: name = httpd state = mới nhất
thông báo:
– khởi động lại apache
– Tên: đảm bảo apache đang chạy (và kích hoạt nó khi khởi động)
dịch vụ: name = httpd state = started enable = yes
xử lý:
– tên: khởi động lại apache
dịch vụ: name = httpd state = khởi động lại

Tạo và chạy Playbook Ansible đầu tiên của bạn

Hãy để tôi nói cho bạn làm thế nào để viết một cuốn sách. Mỗi playbook bắt đầu với ba dấu gạch ngang (-) trên đầu.

Điều đầu tiên bạn đề cập trong Ansible Playbook là các máy chủ lưu trữ mà bạn muốn chạy Playbook trên đó.

Sau đó, bạn có thể đề cập đến các biến bằng cách thu thập dữ kiện; sau đó bạn có thể đề cập đến các nhiệm vụ khác nhau mà bạn muốn thực hiện. Bây giờ, hãy nhớ rằng tác vụ được thực hiện theo cùng thứ tự mà bạn viết chúng. Ví dụ: bạn muốn cài đặt phần mềm A trước rồi đến phần mềm B, hãy đảm bảo rằng tác vụ đầu tiên được ghi trong sổ chơi sẽ là cài đặt phần mềm A và tác vụ tiếp theo có thể cài đặt phần mềm B.

Sau đó, bạn đã có xử lý ở phía dưới. Trình xử lý cũng là các tác vụ, nhưng sự khác biệt là để thực thi các trình xử lý mà bạn cần một số loại kích hoạt trong danh sách các tác vụ để chạy trình xử lý.

Hãy để tôi chỉ cho bạn cách tạo một playbook ansible để cài đặt và bắt đầu nginx trên một máy chủ và bắt đầu nó.

Tạo một tệp .yml nơi bạn sẽ đặt mã YAML của mình để tạo một playbook ansible.

gedit nginx.yml

Đặt mã YAML dưới đây vào tệp này và lưu tệp.


– máy chủ: Khách hàng
sudo: vâng
lọ:
– máy chủ_port: 8080

nhiệm vụ:
– Tên: Cài đặt máy chủ web nginx
apt: pkg = nginx state = install update_cache = true
thông báo:
– bắt đầu nginx

xử lý:
– tên: bắt đầu nginx
dịch vụ: tên = nginx state = đã bắt đầu

Tệp YAML ở trên bắt đầu với máy chủ, tôi muốn chạy playbook này trên máy khách (Máy khách). Địa chỉ IP của máy khách đã được lưu trong tệp / etc / ansible / hosts.

Dòng tiếp theo cho phép chạy các tác vụ với đặc quyền sudo.

Sau đó, tôi đã định nghĩa server_port là một biến trong Playbook này.

Sau đó, đến nhiệm vụ đầu tiên của tôi trong cuốn sách nhỏ này để cài đặt máy chủ web Nginx. Tác vụ này cũng có thông báo tham số, có nghĩa là sau tác vụ này, trình xử lý chạy.

Cuối cùng, tôi đã viết một trình xử lý để khởi động nginx trên máy khách.

Bây giờ bạn đã rõ ràng với các mã YAML trong Playbook ansible hãy để chạy runbook. Dưới đây là cú pháp để chạy một playbook ansible:

ansible-playbook file_name.yml

Bây giờ, tôi sẽ chạy playbook ansible mà tôi tạo để cài đặt và bắt đầu nginx.

[email được bảo vệ]: / home / geekflare # ansible-playbook nginx.yml

CHƠI [Khách hàng] ****** / TÌM HIỂU ****** / TÌM HIỂU

NHIỆM VỤ [Thu thập thông tin] ****** / TÌM HIỂU ****** / TÌM
ok: [nút1]

NHIỆM VỤ [Cài đặt máy chủ web nginx] ****** / TÌM HIỂU ****

đã thay đổi: [node1]

CHẠY TAY [bắt đầu nginx] ****** / TÌM HIỂU ******
ok: [nút1]

CHƠI RECAP ****** / TÌM HIỂU ****** / TÌM HIỂU
nút1: ok = 3 thay đổi = 1 không thể truy cập = 0 thất bại = 0 bị bỏ qua = 0 được giải cứu = 0 bị bỏ qua = 0

Chạy lệnh bên dưới để kiểm tra xem máy chủ nginx đã được cài đặt chưa và khởi động chính xác bởi playbook ansible.

[email được bảo vệ]: / nhà / geekflare # ps waux | grep nginx
gốc 3021 0,0 0,0 77676 1516? Ss 15:27 0:00 nginx: quy trình tổng thể / usr / sbin / nginx -g daemon trên; master_ process trên;

Phần kết luận

Đó là về Ansible playbook. Tôi hy vọng bài viết này đã giúp bạn tìm hiểu làm thế nào bạn có thể tạo và chạy một Playbook Ansible. Kiểm tra này Khóa học, nếu bạn muốn tìm hiểu các chủ đề nâng cao trong Ansible, bao gồm Vai trò, Jinja2, Tra cứu, Bộ lọc, Mô-đun tùy chỉnh.

THẺ

  • Ansible

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map