[Ansible] Phần 2 – Playbook

0

Phần 1 Ansible – Cấu hình và cài đặt, Bizfly Cloud Giới thiệu một số lệnh để thực hiện một tác vụ trên hệ thống. Ansible hỗ trợ người dùng nhiều hơn nữa bằng cách đưa vào khái niệm Playbook.

Giới thiệu về Playbook

Playbook thường là bảng sơ đồ vị trí và chiến lược di chuyển của từng cầu thủ mà huấn luyện viên sử dụng để truyền đạt cho các cầu thủ (nếu bạn xem bóng đá). Ví dụ như Công Phượng chơi hộ công, Huy Toàn đột phá bên cánh trái hay Quế Ngọc Hải đá hậu vệ biên.

Tải game crack việt hoá tại: https://daominhha.com

Ansible sử dụng khái niệm Playbook với ý nghĩa tương tự. Triển khai hệ thống mới tương tự như sơ đồ chiến lược, nhóm [webservers], [databases] cũng như tiền đạo và hậu vệ, các dịch vụ cũng như kết nối với các thành phần khác nhau trong hệ thống của mỗi máy chủ là công việc của một cầu thủ trên sân.

Ansible Playbook được viết theo cấu trúc YAML, một cú pháp dễ đọc và dễ ghi so với JSON, XML. Đây là một ví dụ về YAML:

--- # An employee record name: Example Developer   job: Developer   skill: Elite   employed: True   foods:       - Apple     - Orange     - Strawberry     - Mango languages:       ruby: Elite     python: Elite     dotnet: Lam 

Xem thêm về cú pháp YAML. Start File yaml với ---. Sử dụng thụt lề dưới dạng 2 dấu cách.

Ví dụ

Đây là File webservers.yml, một playbook cho dịch vụ apache. Playbook này có 1 play, dành cho hệ điều hành Redhat, CentOS

--- - hosts: webservers   vars:     http_port: 80     max_clients: 200   tasks:   - name: ensure apache is at the latest version     yum: pkg=httpd state=latest   - name: write the apache config file     template: src=/srv/httpd.j2 dest=/etc/httpd.conf     notify:     - restart apache   - name: ensure apache is running (and enable it at boot)     service: name=httpd state=started enabled=yes   handlers:     - name: restart apache       service: name=httpd state=restarted 

Giải thích:

  • máy chủ: Xác định đối tượng sẽ thực thi playbook này.
  • vars: các biến đang chơi, trong ví dụ này, các biến sẽ được sử dụng để định cấu hình apache
  • nhiệm vụ: liệt kê các công việc cần thực hiện
  • Tên: tên của nhiệm vụ
  • yum, mẫu, dịch vụ: mô-đun được sử dụng
  • thông báo: giống như trigger, để gọi một tác vụ khác khi tác vụ hiện tại hoàn thành thành công.
  • người xử lý: thông báo nhiệm vụ
Mình nghĩ bạn cần xem =>  6 Cách khắc phục 100% Disk trên Windows 10 nhanh nhất

1 lần chơi bao gồm danh sách các nhiệm vụ cần thực hiện theo thứ tự từ trên xuống. Nếu xảy ra lỗi trong bất kỳ tác vụ nào, máy chủ đang chạy sẽ bị dừng mà không ảnh hưởng đến các máy khác.

Có thể viết các dòng chia nhỏ với các tham số được truyền cho mô-đun

  - name: ensure apache is at the latest version     yum:       pkg: httpd       state: latest 

Chạy playbook:

$ ansible-playbook webserver.yml  

Ví dụ 1 playbook với nhiều lần chơi:

--- - hosts: webservers   tasks:   - name: ensure apache is at the latest version     yum: pkg=httpd state=latest   - name: write the apache config file     template: src=/srv/httpd.j2 dest=/etc/httpd.conf  - hosts: databases   tasks:   - name: ensure postgresql is at the latest version     yum: name=postgresql state=latest   - name: ensure that postgresql is started     service: name=postgresql state=running 

Cấu trúc sách vở chuẩn 1

production                # inventory file for production servers   stage                     # inventory file for stage environment  group_vars/      group1                 # here we assign variables to particular groups    group2                 # "" host_vars/      hostname1              # if systems need specific variables, put them here    hostname2              # ""  library/                  # if any custom modules, put them here (optional)   filter_plugins/           # if any custom filter plugins, put them here (optional)  site.yml                  # master playbook   webservers.yml            # playbook for webserver tier   dbservers.yml             # playbook for dbserver tier  roles/       common/               # this hierarchy represents a "role"         tasks/            #             main.yml      #  <-- tasks file can include smaller files if warranted         handlers/         #             main.yml      #  <-- handlers file         templates/        #  <-- files for use with the template resource             ntp.conf.j2   #  <------- templates end in .j2         files/            #             bar.txt       #  <-- files for use with the copy resource             foo.sh        #  <-- script files for use with the script resource         vars/             #             main.yml      #  <-- variables associated with this role         defaults/         #             main.yml      #  <-- default lower priority variables for this role         meta/             #             main.yml      #  <-- role dependencies      webtier/              # same kind of structure as "common" was above, done for the webtier role     monitoring/           # ""     fooapp/               # "" 

Phía trong:

  • sản xuất: cùng một File / etc / ansible / hosts, danh sách nhóm, máy chủ
  • group_vars /*: đặt các biến chung cho cùng một nhóm, chẳng hạn [webservers] Có các biến listen_port: 80
  • host_vars /*: đặt các biến riêng biệt cho từng máy chủ
  • vai trò /*: đặt các vai trò, ví dụ như máy chủ nội bộ [webservers] gọi đến vai trò webtier

Xem thêm các phương pháp hay nhất có thể kiểm tra được tại liên kết sau: http://docs.ansible.com/ansible/latest/playbooks_best_practices.html

Mình nghĩ bạn cần xem =>  Danh sách phím tắt khi sử dụng Bash Linux Terminal

Lợi ích:

  • Hệ thống tách biệt, 1 hệ thống là một dự án riêng biệt
  • Việc phân tách các vai trò giúp dễ dàng quản lý và phát triển
  • Tái sử dụng tốt, chỉ cần sửa thông tin máy chủ lưu trữ, vars
Ví dụ:
lamp_simple/   ├── group_vars │   ├── all │   └── dbservers ├── hosts ├── LICENSE.md ├── README.md ├── roles │   ├── common │   │   ├── handlers │   │   │   └── main.yml │   │   ├── tasks │   │   │   └── main.yml │   │   └── templates │   │       └── ntp.conf.j2 │   ├── db │   │   ├── handlers │   │   │   └── main.yml │   │   ├── tasks │   │   │   └── main.yml │   │   └── templates │   │       └── my.cnf.j2 │   └── web │       ├── handlers │       │   └── main.yml │       ├── tasks │       │   ├── copy_code.yml │       │   ├── install_httpd.yml │       │   └── main.yml │       └── templates │           └── index.php.j2 └── site.yml 

Bạn có thể xem thêm các ví dụ khác tại đây: https://github.com/ansible/ansible-examples

>> Tìm hiểu thêm: [AWK] Phần 1 – Tổng quan

✤ Top 20 bài viết Thủ Thuật mới nhất :

Mình nghĩ bạn cần xem =>  Cách ẩn hoặc giới hạn ứng dụng, tính năng…và cài đặt trên iPhone

Xem thêm nhiều Thủ Thuật mới hay

Leave A Reply

Your email address will not be published.