Ansible Roles- Cách cuối cùng để gỡ rối Playbook của bạn



Blog về Vai trò Ansible này nói về cách các vai trò được sử dụng để làm cho các sách vở phức tạp có thể đọc được và sử dụng lại được bằng cách thiết lập MEAN Stack.

Ansible cho phép chúng tôi tự động hóa việc quản lý cấu hình của hệ thống và thêm bất kỳ số lượng khách hàng nào theo ý muốn. Bạn đã bao giờ tự hỏi điều này có thể phức tạp đến mức nào chưa? Bạn đã bao giờ tự hỏi những cuốn sách vở có thể nhận được bao lâu và khó hiểu? Làm thế nào để Ansible vẫn làm cho nó có vẻ như một làn gió? Nó sử dụng khái niệm Vai trò không thể thay đổi và đó là những gì chúng ta sẽ nói trong blog này.

Các chủ đề được đề cập:





Nếu bạn muốn thành thạo DevOps, ' khóa học sẽ là lựa chọn đi đến của bạn.

Giới thiệu về vai trò không thể phục hồi

Ansible Role là một khái niệm đề cập đến các ý tưởng hơn là các sự kiện. Về cơ bản, một cấp độ trừu tượng khác của nó được sử dụng để sắp xếp sách vở. Chúng cung cấp một khung cho một bộ sưu tập độc lập và có thể tái sử dụng các biến, tác vụ, mẫu, tệp và mô-đun có thể được tải tự động vào playbook. Playbooks là một tập hợp các vai trò. Mỗi vai trò đều có chức năng cụ thể.



Hãy để tôi giải thích điều này với một ví dụ. Giả sử bạn muốn playbook của mình thực hiện 10 nhiệm vụ khác nhau trên 5 hệ thống khác nhau, bạn có sử dụng một playbook duy nhất cho việc này không? Không, việc sử dụng một cuốn sách nhỏ có thể khiến nó khó hiểu và dễ mắc sai lầm. Thay vào đó, bạn có thể tạo 10 vai trò khác nhau, trong đó mỗi vai trò sẽ thực hiện một nhiệm vụ. Sau đó, tất cả những gì bạn cần làm là đề cập đến tên của vai trò trong vở kịch để gọi họ. Bạn sẽ tìm hiểu thêm về cách sử dụng các vai trò trong blog này.

Khả năng tái sử dụng của các vai trò không thể phục hồi

Các vai trò Ansible độc ​​lập với nhau. Việc thực hiện một vai trò không phụ thuộc vào những người khác và do đó chúng có thể được sử dụng lại. Bạn thậm chí có thể sửa đổi và cá nhân hóa các vai trò này theo yêu cầu của bạn. Điều này làm giảm nhiệm vụ của chúng tôi là phải viết lại toàn bộ phần mã mỗi khi chúng tôi cần, do đó đơn giản hóa công việc của chúng tôi.

Hãy quay lại ví dụ trước. Bạn đã viết 10 vai trò và bây giờ bạn cần sử dụng 5 vai trò trong số đó cho một tập hợp cung cấp khác. Bạn có viết lại toàn bộ vở kịch không? Không, bạn chỉ cần sử dụng lại 5 vai trò đó bằng cách gọi chúng trong Playbook mới này. Bạn cũng có thể thực hiện các sửa đổi nếu được yêu cầu nhưng nó vẫn sẽ tiết kiệm rất nhiều thời gian của bạn.



Giả sử bạn cần viết một playbook để thiết lập LAMP stack. Bạn phải tạo 4 vai trò, mỗi vai trò để tạo Linux, Apache, MongoDB và PHP. Trong tương lai, nếu bạn muốn một playbook khác để thiết lập LAMP stack cũng như WordPress, bạn sẽ tạo lại vai trò mới cho LAMP stack và WordPress chứ? Không! Bạn có thể chỉ cần sử dụng lại các vai trò cũ hơn (được sử dụng cho ngăn xếp LAMP) và tạo thêm một vai trò mới cho WordPress.

Cấu trúc thư mục vai trò

Sử dụng Ansible Roles, mong đợi các tệp nằm trong một cấu trúc tệp nhất định. Phần khó hiểu nhất của việc sử dụng vai trò là hiểu cấu trúc phân cấp tệp. Ansible cung cấp một tính năng gọi là Ansible Galaxy giúp bạn nhập vai. Chúng tôi đã biết Ansible của chúng tôi ở đâu trên Ubuntu (/ etc / ansible). Bạn đã bao giờ thấy một thư mục được gọi là các vai trò trong / etc / ansible chưa? Thư mục đó tồn tại chính xác vì lý do này. Bạn tạo các vai trò khác nhau bên trong thư mục này.

Thư mục sẽ trông như thế này:

java chuyển đổi double thành int

Cây - Vai trò Ansible - Edureka

Bạn có thể tạo một vai trò bằng cách sử dụng thiên hà ansible lệnh init bên trong / etc / ansible / role.

$sudoansible-galaxy init

Bạn sẽ thấy các thư mục vai trò khác cũng sẽ được tạo.

Các thư mục này là nhiệm vụ, trình xử lý, mặc định, vars, tệp, mẫu, meta và một README.mdtập tin.

Nhiệm vụ - Chứa danh sách các nhiệm vụ chính sẽ được thực hiện bởi vai trò. Nóchứa đựngtệp main.yml cho vai trò cụ thể đó.

hợp nhất sắp xếp mảng c ++

Người xử lý - Chứa các trình xử lý có thể được sử dụng bởi vai trò này hoặc thậm chí ở bất kỳ đâu bên ngoài vai trò này.

Mặc định - Chứa các biến mặc định sẽ được sử dụng bởi vai trò này.

Ai - Thư mục này bao gồm các biến khác sẽ được vai trò sử dụng. Các biến này có thể được xác định trong sách phát của bạn, nhưng bạn nên xác định chúng trong phần này.

Các tập tin - Chứa các tệp có thể được triển khai bởi vai trò này. Nó chứa các tệp cần được gửi đến máy chủ trong khi định cấu hình vai trò.

Meta - Xác định siêu dữ liệu cho vai trò này. Về cơ bản, nó chứa các tệp thiết lập các phụ thuộc vai trò.

Mỗi bài tập thư mục phải bao gồm một main.yml tệp nơi mã thực tế cho vai trò cụ thể đó được viết.

Bây giờ chúng ta hãy hiểu cách làm việc hoặc các vai trò với bản demo cài đặt MEAN Stack.

Demo: Cài đặt MEAN Stack bằng Ansible Roles

Tôi sẽ trình bày cách cài đặt MEAN Stack bằng Ansible Roles bằng cách chỉ thực hiện một playbook. Chúng ta sẽ có ba vai trò: 1) Cài đặt điều kiện tiên quyết, 2) Cài đặt MongoDB và 3) Cài đặt NodeJS. Tôi giả định rằng bạn đã đã cài đặt Ansible và tạo kết nối máy chủ-máy khách trên Ubuntu . Hãy bắt đầu chơi với Ansible Roles.

Bước 1 - Điều hướng đến thư mục / etc / ansible / role và tạo các role cho các điều kiện tiên quyết, MongoDB và NodeJS.

$ cd / etc / ansible / role $ sudo ansible-galaxy init nodejs $ sudo ansible-galaxy init mongodb $ sudo ansible-galaxy init nodejs

Bây giờ bạn sẽ thấy ba vai trò trong thư mục 'vai trò' của mình.

Bước 2 - Viết main.yml cho các điều kiện tiên quyết cài đặt Git.

$ cd điều kiện tiên quyết / task / main.yml --- - name: Cài đặt git apt: name: git state: present update_cache: yes

Bước 3 - Viết main.yml cho vai trò MongoDB

$ cd /mongodb/tasks/main.yml --- - tên: MongoDB - Nhập khóa công khai apt_key: keyerver: hkp: //keyserver.ubuntu.com: 80 id: EA312927 - name: MongoDB - Thêm kho lưu trữ apt_repository: filename: '/etc/apt/sources.list.d/mongodb-org-3.2.list' repo: 'deb http://repo.mongodb.org/apt/ubuntu trusty / mongodb-org / 3.2 đa vũ trụ' trạng thái: present update_cache : yes - name: MongoDB - Cài đặt MongoDB apt: name: mongodb-org state: present update_cache: yes - name: Start mongod shell: 'mongod &'

Bước 4 - Viết main.yml chonodejsvai trò

$ cd nodejs / task / main.yml --- - name: Node.js - Nhận tập lệnh get_url: url: 'http://deb.nodesource.com/setup_6.x' dest: '{{var_node}} / nodejs .sh '- name: Node.js - Đặt quyền thực thi cho tệp script: path:' {var_node}} / nodejs.sh 'mode:' u + x '- name: Node.js - Thực hiện cài đặt script shell:' {{var_node}} / nodejs.sh '- name: Node.js - Xóa tệp tập lệnh cài đặt: đường dẫn:' {{var_node}} / nodejs.sh 'trạng thái: vắng mặt - tên: Node.js - Cài đặt Node.js apt : name = {{item}} state = present update_cache = yes with_items: - build-essential - nodejs - name: Node.js - Install bower and gulp global npm: name = {{item}} state = present global = yes with_items : - bower - gulp

Bước 5 - Viết playbook chính của bạn

$ cd /etc/ansible/mean.yml --- - máy chủ: nút remote_user: ansible trở thành: có trở thành_method: sudo vars: #variable cần thiết trong khi cài đặt nút var_node: / tmp role: - điều kiện tiên quyết - mongodb - nodejs

Bây giờ chúng ta đã xác định các vai trò để cài đặt các điều kiện tiên quyết, MongoDB và NodeJs, hãy triển khai chúng. Thực thi playbook bằng lệnh sau.

$sudoansible-playbook /etc/ansible/mean.yml -K

sự khác biệt giữa nhanh nhẹn và devops

Như bạn có thể thấy, tất cả các tác vụ đã được thực hiện và trạng thái của chúng đã thay đổi. Điều này có nghĩa là các thay đổi trong playbook đã được áp dụng cho máy chủ của bạn cũng như máy chủ. Thiết lập MEAN Stack chỉ là một ví dụ. Bạn có thể thiết lập mọi thứ và mọi thứ theo nghĩa đen bằng cách sử dụng Ansible Roles.

Điều này đưa chúng ta đến phần cuối của blog Ansible Roles. Nếu bạn thấy bài viết này hữu ích, hãy xem ' do Edureka cung cấp. Nó bao gồm tất cả các công cụ đã làm cho ngành CNTT tốt hơn.

Có một câu hỏi cho chúng tôi? Hãy đăng nó trên và chúng tôi sẽ liên hệ lại với bạn.