Làm thế nào để kiểm tra các vai trò không thể phục hồi với Molecule trên Ubuntu 18.04
Kiểm tra đơn vị trong Ansible là key đảm bảo các role hoạt động như dự định. Molecule làm cho quá trình này dễ dàng hơn bằng cách cho phép bạn chỉ định các tình huống kiểm tra các role trong các môi trường khác nhau. Sử dụng Ansible dưới mui xe, Molecule giảm tải các role cho người cung cấp triển khai role trong môi trường được cấu hình và gọi một trình xác minh (chẳng hạn như Testinfra ) để kiểm tra độ lệch cấu hình. Điều này đảm bảo role của bạn đã thực hiện tất cả những thay đổi dự kiến đối với môi trường trong kịch bản cụ thể đó.Trong hướng dẫn này, bạn sẽ xây dựng một role Ansible triển khai Apache cho một server và cấu hình firewalld trên CentOS 7. Để kiểm tra xem role này có hoạt động như dự định hay không, bạn sẽ tạo một bài kiểm tra trong Molecule bằng cách sử dụng Docker làm trình điều khiển và Testinfra, một thư viện Python để kiểm tra trạng thái của server . Molecule sẽ cung cấp các containers Docker để kiểm tra role và Testinfra sẽ xác minh server đã được cấu hình như dự định. Khi hoàn tất, bạn có thể tạo nhiều trường hợp thử nghiệm cho các bản dựng trên các môi trường và chạy các thử nghiệm này bằng Molecule.
Yêu cầu
Trước khi bắt đầu hướng dẫn này, bạn cần những thứ sau:
- Một server Ubuntu 18.04. Làm theo các bước trong hướng dẫn Cài đặt server ban đầu với Ubuntu 18.04 để tạo user sudo không phải root và đảm bảo bạn có thể kết nối với server mà không cần password .
-  Docker được cài đặt trên  server  của bạn. Làm theo Bước 1 và 2 trong Cách cài đặt và sử dụng Docker trên Ubuntu 18.04 , bao gồm cả việc thêm  user  không phải root của bạn vào  group  docker.
-  Python 3 và venvđã được cài đặt và cấu hình trên server của bạn. Làm theo Cách cài đặt Python 3 và Cài đặt Môi trường Lập trình trên Server Ubuntu 18.04 để được hướng dẫn.
- Làm quen với sách vở Ansible. Để xem lại, hãy xem Quản lý cấu hình 101: Viết Playbook Ansible .
Bước 1 - Chuẩn bị Môi trường
 Nếu bạn đã tuân theo các  yêu cầu , bạn nên cài đặt và cấu hình đúng Python 3, venv và Docker. Hãy bắt đầu bằng cách tạo một môi trường ảo để kiểm tra Ansible với Molecule.
Bắt đầu bằng cách đăng nhập với quyền là user không phải root của bạn và tạo một môi trường ảo mới:
- python3 -m venv my_env 
Kích hoạt nó đảm bảo rằng các hành động của bạn bị hạn chế trong môi trường đó:
- source my_env/bin/activate 
Tiếp theo, trong môi trường đã kích hoạt của bạn, hãy cài đặt gói wheel , gói này cung cấp phần mở rộng bdist_wheel setuptools mà pip sử dụng để cài đặt Ansible:
- python3 -m pip install wheel 
 Đến đây bạn  có thể cài đặt molecule và docker bằng pip . Ansible sẽ được tự động cài đặt như một phụ thuộc cho Molecule:
- python3 -m pip install molecule docker 
Đây là những gì mỗi gói này sẽ làm:
-  molecule: Đây là gói Phân tử chính mà bạn sẽ sử dụng để kiểm tra các role . Cài đặtmoleculetự động cài đặt Ansible, cùng với các phụ thuộc khác và cho phép sử dụng sách chơi Ansible để thực hiện các role và thử nghiệm.
-  docker: Thư viện Python này được Molecule sử dụng để giao tiếp với Docker. Bạn cần điều này vì bạn đang sử dụng Docker làm trình điều khiển.
Tiếp theo, hãy tạo một role trong Molecule.
Bước 2 - Tạo role trong phân tử
Với môi trường của bạn được cài đặt , bạn có thể sử dụng Molecule để tạo một role cơ bản mà bạn sẽ sử dụng để kiểm tra cài đặt Apache. Role này sẽ tạo cấu trúc folder và một số thử nghiệm ban đầu, đồng thời chỉ định Docker làm trình điều khiển để Molecule sử dụng Docker để chạy các thử nghiệm của nó.
 Tạo một  role  mới được gọi là ansible-apache :
- molecule init role -r ansible-apache -d docker 
Cờ -r chỉ định tên của  role  trong khi -d chỉ định trình điều khiển, cung cấp các  server  cho Molecule sử dụng trong thử nghiệm.
Thay đổi folder của role mới được tạo:
- cd ansible-apache 
Kiểm tra role mặc định để kiểm tra xem Molecule đã được cài đặt đúng cách chưa:
- molecule test 
Bạn sẽ thấy  kết quả  liệt kê từng hành động thử nghiệm mặc định. Trước khi bắt đầu thử nghiệm, Molecule xác nhận file  cấu hình molecule.yml  đảm bảo  mọi thứ đều theo thứ tự. Nó cũng in ma trận kiểm tra này, chỉ định thứ tự của các hành động kiểm tra:
Output--> Validating schema /home/sammy/ansible-apache/molecule/default/molecule.yml. Validation completed successfully. --> Test matrix  └── default     ├── lint     ├── destroy     ├── dependency     ├── syntax     ├── create     ├── prepare     ├── converge     ├── idempotence     ├── side_effect     ├── verify     └── destroy ...  Ta  sẽ thảo luận chi tiết về từng hành động thử nghiệm sau khi bạn đã tạo  role  và tùy chỉnh các thử nghiệm  của bạn . Hiện tại, hãy chú ý đến PLAY_RECAP cho mỗi lần kiểm tra và  đảm bảo  không có hành động mặc định nào trả về trạng thái failed . Ví dụ: PLAY_RECAP cho hành động 'create' mặc định sẽ giống như sau:
Output... PLAY RECAP ********************************************************************* localhost                  : ok=5    changed=4    unreachable=0    failed=0 Hãy chuyển sang sửa đổi role để cấu hình Apache và firewalld.
Bước 3 - Cấu hình Apache và Firewalld
Để cấu hình Apache và firewalld, bạn sẽ tạo một file nhiệm vụ cho role , chỉ định các gói để cài đặt và các dịch vụ để bật. Các chi tiết này sẽ được extract từ file biến và mẫu mà bạn sẽ sử dụng để thay thế trang index Apache mặc định.
 Vẫn trong folder  ansible-apache , hãy tạo file  nhiệm vụ cho  role  bằng nano hoặc editor  yêu thích của bạn:
- nano tasks/main.yml 
Bạn sẽ thấy rằng file đã tồn tại. Xóa những gì ở đó và thay thế nó bằng mã sau để cài đặt các gói bắt buộc và bật các dịch vụ chính xác, mặc định HTML và cài đặt firewall :
--- - name: "Ensure required packages are present"   yum:     name: "{{ pkg_list }}"     state: present  - name: "Ensure latest index.html is present"   template:     src: index.html.j2     dest: /var/www/html/index.html  - name: "Ensure httpd service is started and enabled"   service:     name: "{{ item }}"     state: started     enabled: true   with_items: "{{ svc_list }}"  - name: "Whitelist http in firewalld"   firewalld:     service: http     state: enabled     permanent: true     immediate: true Playbook này bao gồm 4 nhiệm vụ:
-  "Ensure required packages are present": Tác vụ này sẽ cài đặt các gói được liệt kê trong file biến dướipkg_list. Tệp biến sẽ được đặt tại~/ansible-apache/vars/main.ymlvà bạn sẽ tạo nó ở cuối bước này.
-  "Ensure latest index.html is present": Tác vụ này sẽ sao chép một trang mẫu,index.html.j2và dán nó lên file index mặc định,/var/www/html/index.html, do Apache tạo. Bạn cũng cần tạo mẫu mới trong bước này.
-  "Ensure httpd service is started and enabled": Tác vụ này sẽ bắt đầu và kích hoạt các dịch vụ được liệt kê trongsvc_listtrong file biến.
-  "Whitelist http in firewalld": Tác vụ này sẽ đưa dịch vụhttptrongfirewalldvào danh sách trắng. Firewalld là một giải pháp firewall hoàn chỉnh có sẵn theo mặc định trên các server CentOS. Để dịch vụhttphoạt động, bạn cần phải hiển thị các cổng cần thiết. Hướng dẫnfirewalldlập danh sách trắng một dịch vụ đảm bảo nó sẽ đưa vào danh sách trắng tất cả các cổng mà dịch vụ yêu cầu.
Lưu file khi bạn hoàn tất.
 Tiếp theo, hãy tạo ra một templates folder  cho index.html.j2 trang mẫu:
- mkdir templates 
Tự tạo trang:
- nano templates/index.html.j2 
Dán vào mã bảng soạn sẵn sau:
<div style="text-align: center">     <h2>Managed by Ansible</h2> </div> Lưu và đóng file .
Bước cuối cùng để hoàn thành role là viết file biến, file này cung cấp tên của các gói và dịch vụ vào sổ chơi role chính của ta :
- nano vars/main.yml 
Dán lên nội dung mặc định bằng mã sau, mã này chỉ định pkg_list và svc_list :
--- pkg_list:   - httpd   - firewalld svc_list:   - httpd   - firewalld Các danh sách này chứa các thông tin sau:
-  pkg_list: Phần này chứa tên của các gói mà role sẽ cài đặt:httpdvàfirewalld.
-  svc_list: Phần này chứa tên của các dịch vụ mà role sẽ bắt đầu và kích hoạt:httpdvàfirewalld.
 Lưu ý: Đảm bảo rằng file  biến của bạn không có bất kỳ dòng trống nào, nếu không quá trình kiểm tra của bạn sẽ thất bại trong quá trình linting.
Đến đây bạn đã hoàn thành việc tạo role của bạn , hãy cấu hình Molecule để kiểm tra xem nó có hoạt động như dự định không.
Bước 4 - Sửa đổi role để chạy thử nghiệm
 Trong trường hợp của  ta , cấu hình phân tử liên quan đến việc sửa đổi các  file  cấu hình phân tử molecule.yml để thêm thông số kỹ thuật nền tảng. Vì bạn đang thử nghiệm một  role   cấu hình  và khởi động dịch vụ httpd systemd, bạn  cần  sử dụng một hình ảnh đã được  cấu hình  systemd và bật chế độ  quyền . Đối với hướng dẫn này, bạn sẽ sử dụng hình ảnh milcom/centos7-systemd có sẵn trên Docker Hub . Chế độ  quyền  cho phép các containers  chạy với hầu hết các khả năng của  server  của chúng.
 Hãy chỉnh sửa molecule.yml  để áp dụng thay đổi  này:
- nano molecule/default/molecule.yml 
Thêm thông tin nền tảng được đánh dấu:
--- dependency:   name: galaxy driver:   name: docker lint:   name: yamllint platforms:   - name: centos7     image: milcom/centos7-systemd     privileged: true provisioner:   name: ansible   lint:     name: ansible-lint scenario:   name: default verifier:   name: testinfra   lint:     name: flake8 Lưu file khi bạn hoàn tất.
Đến đây bạn đã cấu hình thành công môi trường thử nghiệm, hãy chuyển sang viết các trường hợp thử nghiệm mà Molecule sẽ chạy trên containers của bạn sau khi thực thi role .
Bước 5 - Viết các trường hợp kiểm tra
Trong bài kiểm tra cho role này, bạn sẽ kiểm tra các điều kiện sau:
-  Các gói httpdvàfirewalldđược cài đặt.
-  Rằng các dịch vụ httpdvàfirewalldđang chạy và được kích hoạt.
-  Dịch vụ httpđược bật trong cài đặt firewall của bạn.
-  index.htmlđó chứa cùng một dữ liệu được chỉ định trong file mẫu của bạn.
Nếu tất cả các bài kiểm tra này đều vượt qua, thì role sẽ hoạt động như dự định.
 Để viết các trường hợp thử nghiệm cho các điều kiện này, hãy chỉnh sửa các thử nghiệm mặc định trong ~/ansible-apache/molecule/default/tests/test_default.py . Sử dụng Testinfra,  ta  sẽ viết các trường hợp thử nghiệm dưới dạng các hàm Python sử dụng các lớp Molecule.
 Mở test_default.py :
- nano molecule/default/tests/test_default.py 
Xóa nội dung của file để bạn có thể viết các bài kiểm tra từ đầu.
 Lưu ý: Khi bạn viết các bài kiểm tra  của bạn , hãy  đảm bảo  chúng cách nhau hai dòng mới nếu không chúng sẽ bị trượt.
Bắt đầu bằng lệnh các module Python được yêu cầu:
import os import pytest  import testinfra.utils.ansible_runner Các module này bao gồm:
-  os: Mô-đun Python tích hợp này cho phép chức năng phụ thuộc vào hệ điều hành, giúp Python có thể giao tiếp với hệ điều hành cơ bản.
-  pytest: Mô-đunpytestcho phép viết thử nghiệm.
-  testinfra.utils.ansible_runner: Mô-đun Testinfra này sử dụng Ansible làm phần backend để thực thi lệnh.
Trong phần nhập module , hãy thêm mã sau, mã này sử dụng phần backend Ansible để trả về version server hiện tại:
... testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(     os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all') Với file thử nghiệm của bạn được cấu hình để sử dụng phần backend Ansible, hãy viết các bài kiểm tra đơn vị để kiểm tra trạng thái của server .
 Thử nghiệm đầu tiên sẽ  đảm bảo  httpd và firewalld được cài đặt: 
...  @pytest.mark.parametrize('pkg', [   'httpd',   'firewalld' ]) def test_pkg(host, pkg):     package = host.package(pkg)      assert package.is_installed Kiểm tra bắt đầu với trình trang trí pytest.mark.parametrize , cho phép  ta  tham số hóa các đối số cho kiểm tra. Thử nghiệm đầu tiên này sẽ lấy test_pkg làm tham số để kiểm tra sự hiện diện của gói httpd và firewalld .
 Thử nghiệm tiếp theo kiểm tra xem httpd và firewalld có đang chạy và được kích hoạt hay không. Nó nhận test_svc làm tham số: 
...  @pytest.mark.parametrize('svc', [   'httpd',   'firewalld' ]) def test_svc(host, svc):     service = host.service(svc)      assert service.is_running     assert service.is_enabled Lần kiểm tra cuối cùng kiểm tra xem các file  và nội dung được chuyển tới parametrize() có tồn tại hay không. Nếu file  không do  role  của bạn tạo và nội dung không được đặt đúng cách, thì assert sẽ trả về False : 
...  @pytest.mark.parametrize('file, content', [   ("/etc/firewalld/zones/public.xml", "<service name=\"http\"/>"),   ("/var/www/html/index.html", "Managed by Ansible") ]) def test_files(host, file, content):     file = host.file(file)      assert file.exists     assert file.contains(content) Trong mỗi thử nghiệm, assert sẽ trả về True hoặc False tùy thuộc vào kết quả thử nghiệm.
Tệp đã hoàn thành trông như thế này:
import os import pytest  import testinfra.utils.ansible_runner  testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(     os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')   @pytest.mark.parametrize('pkg', [   'httpd',   'firewalld' ]) def test_pkg(host, pkg):     package = host.package(pkg)      assert package.is_installed   @pytest.mark.parametrize('svc', [   'httpd',   'firewalld' ]) def test_svc(host, svc):     service = host.service(svc)      assert service.is_running     assert service.is_enabled   @pytest.mark.parametrize('file, content', [   ("/etc/firewalld/zones/public.xml", "<service name=\"http\"/>"),   ("/var/www/html/index.html", "Managed by Ansible") ]) def test_files(host, file, content):     file = host.file(file)      assert file.exists     assert file.contains(content) Đến đây bạn đã chỉ định các trường hợp thử nghiệm của bạn , hãy kiểm tra role .
Bước 6 - Kiểm tra role với phân tử
 Khi bạn bắt đầu kiểm tra, Molecule sẽ thực hiện các hành động bạn đã xác định trong kịch bản  của bạn . Bây giờ  ta  hãy chạy lại kịch bản molecule mặc định, thực hiện các hành động trong trình tự thử nghiệm mặc định trong khi xem xét kỹ hơn từng hành động.
Chạy lại thử nghiệm cho kịch bản mặc định:
- molecule test 
Điều này sẽ bắt đầu chạy thử nghiệm. Đầu ra ban đầu in ma trận kiểm tra mặc định:
Output--> Validating schema /home/sammy/ansible-apache/molecule/default/molecule.yml. Validation completed successfully. --> Test matrix  └── default     ├── lint     ├── destroy     ├── dependency     ├── syntax     ├── create     ├── prepare     ├── converge     ├── idempotence     ├── side_effect     ├── verify     └── destroy Hãy xem qua từng hành động thử nghiệm và kết quả kết quả mong đợi, bắt đầu với linting.
 Hành động linting thực thi yamllint , flake8 và ansible-lint :
-  yamllint: Liên kết này được thực thi trên tất cả các file YAML có trong folder role .
-  flake8: Trình liên kết mã Python này kiểm tra các bài kiểm tra được tạo cho Testinfra.
-  ansible-lint: Linter cho sách phát Ansible này được thực thi trong tất cả các trường hợp.
Output... --> Scenario: 'default' --> Action: 'lint' --> Executing Yamllint on files found in /home/sammy/ansible-apache/... Lint completed successfully. --> Executing Flake8 on files found in /home/sammy/ansible-apache/molecule/default/tests/... Lint completed successfully. --> Executing Ansible Lint on /home/sammy/ansible-apache/molecule/default/playbook.yml... Lint completed successfully. Hành động tiếp theo, hủy , được thực hiện bằng cách sử dụng file  destroy.yml . Điều này được thực hiện để kiểm tra  role  của  ta  trên một containers  mới được tạo.
Theo mặc định, hủy được gọi hai lần: khi bắt đầu chạy thử, để xóa bất kỳ containers nào đã có từ trước và ở cuối, để xóa containers mới được tạo:
Output... --> Scenario: 'default' --> Action: 'destroy'      PLAY [Destroy] *****************************************************************      TASK [Destroy molecule instance(s)] ********************************************     changed: [localhost] => (item=None)     changed: [localhost]      TASK [Wait for instance(s) deletion to complete] *******************************     ok: [localhost] => (item=None)     ok: [localhost]      TASK [Delete docker network(s)] ************************************************     skipping: [localhost]      PLAY RECAP *********************************************************************     localhost                  : ok=2    changed=1    unreachable=0    failed=0 Sau khi hành động hủy hoàn tất, kiểm tra sẽ chuyển sang phụ thuộc . Hành động này cho phép bạn kéo các phụ thuộc từ ansible-galaxy nếu  role  của bạn yêu cầu chúng. Trong trường hợp này,  role  của  ta  không:
Output... --> Scenario: 'default' --> Action: 'dependency' Skipping, missing the requirements file. Hành động kiểm tra tiếp theo là kiểm tra cú pháp , được thực thi trên playbook.yml mặc định. Nó hoạt động theo cách tương tự như cờ --syntax-check trong lệnh ansible-playbook --syntax-check playbook.yml :
Output... --> Scenario: 'default' --> Action: 'syntax'      playbook: /home/sammy/ansible-apache/molecule/default/playbook.yml Tiếp theo, kiểm tra chuyển sang hành động tạo . Điều này sử dụng file  create.yml trong folder  Molecule của  role  của bạn để tạo containers  Docker với các thông số kỹ thuật của bạn:
Output...  --> Scenario: 'default' --> Action: 'create'      PLAY [Create] ******************************************************************      TASK [Log into a Docker registry] **********************************************     skipping: [localhost] => (item=None)     skipping: [localhost]      TASK [Create Dockerfiles from image names] *************************************     changed: [localhost] => (item=None)     changed: [localhost]      TASK [Discover local Docker images] ********************************************     ok: [localhost] => (item=None)     ok: [localhost]      TASK [Build an Ansible compatible image] ***************************************     changed: [localhost] => (item=None)     changed: [localhost]      TASK [Create docker network(s)] ************************************************     skipping: [localhost]      TASK [Create molecule instance(s)] *********************************************     changed: [localhost] => (item=None)     changed: [localhost]      TASK [Wait for instance(s) creation to complete] *******************************     changed: [localhost] => (item=None)     changed: [localhost]      PLAY RECAP *********************************************************************     localhost                  : ok=5    changed=4    unreachable=0    failed=0 Sau khi tạo, kiểm tra chuyển sang hành động chuẩn bị . Hành động này thực hiện playbook chuẩn bị, đưa server đến một trạng thái cụ thể trước khi chạy hội tụ. Điều này hữu ích nếu role của bạn yêu cầu cấu hình trước hệ thống trước khi role được thực thi. , điều này không áp dụng cho role của ta :
Output... --> Scenario: 'default' --> Action: 'prepare' Skipping, prepare playbook not configured. Sau khi chuẩn bị, hành động hội tụ thực hiện  role  của bạn trên containers  bằng cách chạy playbook.yml playbook. Nếu nhiều nền tảng được cấu hình trong molecule.yml  file , phân tử sẽ hội tụ trên tất cả các:
Output... --> Scenario: 'default' --> Action: 'converge'      PLAY [Converge] ****************************************************************      TASK [Gathering Facts] *********************************************************     ok: [centos7]      TASK [ansible-apache : Ensure required packages are present] *******************     changed: [centos7]      TASK [ansible-apache : Ensure latest index.html is present] ********************     changed: [centos7]      TASK [ansible-apache : Ensure httpd service is started and enabled] ************     changed: [centos7] => (item=httpd)     changed: [centos7] => (item=firewalld)      TASK [ansible-apache : Whitelist http in firewalld] ****************************     changed: [centos7]      PLAY RECAP *********************************************************************     centos7                    : ok=5    changed=4    unreachable=0    failed=0 Sau khi được che đậy, bài kiểm tra sẽ chuyển sang tính không cần thiết . Hành động này sẽ kiểm tra playbook để tìm sự cố định đảm bảo không có thay đổi bất ngờ nào được thực hiện trong nhiều lần chạy:
Output... --> Scenario: 'default' --> Action: 'idempotence' Idempotence completed successfully. Hành động thử nghiệm tiếp theo là hành động tác dụng phụ . Điều này cho phép bạn tạo ra các tình huống trong đó bạn có thể kiểm tra nhiều thứ hơn, chẳng hạn như chuyển đổi dự phòng HA. Theo mặc định, Molecule không cấu hình playbook hiệu ứng phụ và tác vụ bị bỏ qua:
Output... --> Scenario: 'default' --> Action: 'side_effect' Skipping, side effect playbook not configured. Sau đó, Molecule sẽ chạy hành động xác minh bằng trình xác minh mặc định, Testinfra. Hành động này thực thi các bài kiểm tra bạn đã viết trước đó trong test_default.py . Nếu tất cả các bài kiểm tra vượt qua thành công, bạn sẽ thấy một thông báo thành công và Molecule sẽ tiến hành bước tiếp theo:
Output... --> Scenario: 'default' --> Action: 'verify' --> Executing Testinfra tests found in /home/sammy/ansible-apache/molecule/default/tests/...     ============================= test session starts ==============================     platform linux -- Python 3.6.5, pytest-3.7.3, py-1.5.4, pluggy-0.7.1     rootdir: /home/sammy/ansible-apache/molecule/default, inifile:     plugins: testinfra-1.14.1 collected 6 items      tests/test_default.py ......                                             [100%]      ========================== 6 passed in 41.05 seconds =========================== Verifier completed successfully. Cuối cùng, Molecule hủy các trường hợp đã hoàn thành trong quá trình kiểm tra và xóa mạng được gán cho các trường hợp đó:
Output... --> Scenario: 'default' --> Action: 'destroy'      PLAY [Destroy] *****************************************************************      TASK [Destroy molecule instance(s)] ********************************************     changed: [localhost] => (item=None)     changed: [localhost]      TASK [Wait for instance(s) deletion to complete] *******************************     changed: [localhost] => (item=None)     changed: [localhost]      TASK [Delete docker network(s)] ************************************************     skipping: [localhost]      PLAY RECAP *********************************************************************     localhost                  : ok=2    changed=2    unreachable=0    failed=0 Các hành động kiểm tra hiện đã hoàn tất, xác minh role của bạn đã hoạt động như dự kiến.
Kết luận
Trong bài viết này, bạn đã tạo một role Ansible để cài đặt và cấu hình Apache và firewalld. Sau đó, bạn đã viết các bài kiểm tra đơn vị với Testinfra mà Molecule sử dụng để khẳng định rằng role đã chạy thành công.
Bạn có thể sử dụng cùng một phương pháp cơ bản cho các role có độ phức tạp cao và tự động hóa thử nghiệm bằng cách sử dụng đường ống CI. Molecule là một công cụ có cấu hình cao được dùng để kiểm tra các role với bất kỳ nhà cung cấp nào mà Ansible hỗ trợ, không chỉ Docker. Cũng có thể tự động kiểm tra đối với cơ sở hạ tầng của bạn , đảm bảo các role của bạn luôn được cập nhật và hoạt động hiệu quả. Bạn có thể tích hợp kiểm tra liên tục vào quy trình làm việc của bạn bằng cách sử dụng Molecule và Travis CI với hướng dẫn Cách thực hiện kiểm tra liên tục các role không thể phục hồi bằng Molecule và Travis CI trên Ubuntu 18.04 hướng dẫn.
Tài liệu chính thức về Molecule là tài nguyên tốt nhất để học cách sử dụng Molecule.
Các tin liên quan
Cách cài đặt và bảo mật Mosquitto MQTT Messaging Broker trên Ubuntu 18.04 [Quickstart]2018-07-16
Cách bật SFTP mà không cần quyền truy cập Shell trên Ubuntu 18.04
2018-07-13
Cách cài đặt Ruby on Rails với rbenv trên Ubuntu 18.04
2018-07-13
Cách cài đặt và bảo mật Mosquitto MQTT Messaging Broker trên Ubuntu 18.04
2018-07-12
Cách cài đặt Git trên Ubuntu 18.04 [Quickstart]
2018-07-12
Cách sử dụng LVM để quản lý thiết bị lưu trữ trên Ubuntu 18.04
2018-07-11
Cách cài đặt WordPress với LEMP trên Ubuntu 18.04
2018-07-11
Cách sử dụng Chế độ độc lập của Certbot để truy xuất chứng chỉ SSL Let's Encrypt trên Ubuntu 18.04
2018-07-11
Cách thiết lập đồng bộ hóa thời gian trên Ubuntu 18.04
2018-07-10
Cách cài đặt Hadoop ở chế độ độc lập trên Ubuntu 18.04
2018-07-10
 

