Чӣ тавр тестҳои Ansible-ро пӯшонидаед?
sobes.tech AI
Ҷавоб аз AI
Ман истифода мебарам чанд роҳҳои асосӣ:
-
Таҳқиқи синтаксис:
Санҷиш мекунад, ки оё синтаксиси плейбукҳо ва ролҳо пеш аз оғози онҳо дуруст аст.# Санҷиши синтаксиси плейбук ansible-playbook --syntax-check playbook.yml -
Идемпотентӣ:
Санҷиш мекунад, ки оё такрори иҷрои плейбук ҳолати системаро пас аз иҷрои аввал тағйир намедиҳад.# Иҷрои плейбук ansible-playbook playbook.yml # Такрори иҷро бо рамзи --check барои санҷиши тағйирот ansible-playbook playbook.yml --checkНатиҷа бояд нишон диҳад
changed=0 run=true. -
Molecule:
Фреймворк барои санҷиши маҳаллӣ ё дурнамои ролҳои Ansible. Имкон медиҳад, ки сценарии гуногунро барои санҷиш (linting, идемпотентӣ, санҷиши функсияҳо) иҷро кунад.# Инициализатсияи Molecule дар директорияи рол molecule init scenario -r default # Иҷрои санҷишҳои Molecule molecule test -
Тестҳои сатҳи система (Functional Testing):
Санҷиш мекунанд, ки системаи пас аз татбиқи Ansible дар ҳолати интизорӣ қарор дорад. Истифода мешаванд:- Testinfra: Санҷиш ҳолати хостҳо ва хизматрасониҳо пас аз татбиқи конфигуратсия.
- InSpec: Фреймворкии Ruby барои санҷиши ҳолати системавӣ бо истифода аз DSL.
Дар Molecule метавон Testinfra-ро ҳамгиро кард:
# бахши platforms дар molecule/default/molecule.yml platforms: - name: instance image: image_name # ... дигар танзимоти платформа # бахши verifier verifier: name: testinfra options: v: TrueМисоли санҷиши Testinfra (
tests/test_default.py):# ворид кардани testinfra def test_nginx_is_installed(host): # Санҷиш, ки оё пакет nginx насб шудааст nginx = host.package("nginx") assert nginx.is_installed def test_nginx_is_running(host): # Санҷиш, ки оё хидмат nginx дар ҳолати кор қарор дорад nginx = host.service("nginx") assert nginx.is_running def test_nginx_listens_on_port_80(host): # Санҷиш, ки оё nginx дар порт 80 гӯш мекунад assert host.socket("tcp://0.0.0.0:80").is_listening -
Интегратсия бо CI/CD:
Автоматизатсия кардани иҷрои санҷишҳо дар пайплайни CI/CD пас аз ҳар як комит ё Pull Request. Масалан, бо истифода аз Jenkins, GitLab CI, GitHub Actions.
Интихоби усул вобаста ба мураккабии роли/плейбук ва талабот ба сатҳи пӯшиш бо санҷишҳо. Одатан, ман истифодаи ҳамҷояи ин усулҳоро мекунам.