Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практические работы / Практическая работа 3

.pdf
Скачиваний:
40
Добавлен:
20.03.2022
Размер:
307.05 Кб
Скачать

Задание на практическое занятие №3.

1. На основе понимания состава и содержания ранее прочитанной лекции по основным положениям автоматизации тестирования, осуществить разработку и проверку выполнения сценариев автоматизированного тестирования с использованием системы управления конфигурациями Ansible, написанной на алгоритмическом языке программирования высокого уровня Python и использующей декларативный язык YAML, реализующий разметку данных для описания действий по тестированию, автоматизации настройки и развертывания программного обеспечения для ОС Linux и Windows. Ansible поддерживает работу с сетевыми устройствами, на которых установлен Python версии 2.4 и выше по SSH или по WinRM соединению без установки агента/клиента на целевые системы. Администратор Ansible создаёт определённые "плейбуки" (англ. playbook, play — игра, пьеса, book — книга) в формате YAML с описанием требуемых состояний управляемой системы, в котором она должна находиться в конкретный момент времени, включая установленные пакеты, запущенные службы, созданные файлы и многое другое. Ansible проверяет, что каждый из ресурсов системы находится в ожидаемом состоянии и, при необходимости, пытается исправить состояние ресурса, если оно не соответствует ожидаемому. Для выполнения задач используется система модулей. Каждая задача представляет собой имя задачи, используемый модуль и список параметров, характеризующих задачу. Ansible поддерживает переменные, фильтры обработки переменных, условное выполнение задач, параллелизацию, шаблоны файлов, адреса и настройки целевых систем содержатся в файлах «инвентаря» (inventory), поддерживается группирование, а для реализации набора сходных задач существует система ролей.

Использование Ansible заключается в его непосредственной установке и настройке соответствующих конфигурационных файлов.

2. Подготовительные действия:

В виртуальной машине Debian 10 от пользователя root привести файл /etc/apt/sources.list к виду

# deb cdrom:[Debian GNU/Linux 10.2.0 _Buster_ - Official amd64 DVD Binary-1 20191116-09:57]/ buster contrib main

#deb cdrom:[Debian GNU/Linux 10.2.0 _Buster_ - Official amd64 DVD Binary-1 20191116-09:57]/ buster contrib main

deb http://security.debian.org/debian-security buster/updates main contrib non-free deb-src http://security.debian.org/debian-security buster/updates main contrib non-free

#buster-updates, previously known as 'volatile'

#A network mirror was not selected during install. The following entries

#are provided as examples, but you should amend them as appropriate

#for your mirror of choice.

#

deb http://deb.debian.org/debian/ buster-updates main contrib non-free deb-src http://deb.debian.org/debian/ buster-updates main contrib non-free

deb http://deb.debian.org/debian/ buster main contrib non-free

deb-src http://deb.debian.org/debian/ buster main contrib non-free

#deb http://deb.debian.org/debian/ unstable main contrib non-free

т. е. в нем, скорее всего, отсутствуют две строки

deb http://deb.debian.org/debian/ buster main contrib non-free deb-src http://deb.debian.org/debian/ buster main contrib non-free

и их нужно в файл /etc/apt/sources.list добавить.

Далее следует файл /etc/apt/apt.conf.d/02proxy привести к виду

Acquire::http::Proxy "http://apt.dcti.sut.ru:3142/";

т. е. взять в кавычки подстоку "http://apt.dcti.sut.ru:3142/"

Далее следует выполнить

apt clean cache

apt update

после чего в список репозиториев будут добавлены необходимые репозитории.

В случае, если при выполнении apt update возникает ошибка, нужно выполнить подключение к Интернет в "родительской" ОС Debian.

3. Установка Ansible

apt install ansible

4. Настройка Ansible

Для примеров, рассматриваемых в настоящем практическом занятии, настройка Ansible не требуется. Возможные минимальные настройки Ansible приведены в приложении.

5. Создание сценария playbook

Следует создать сценарий тестирования наличия файла services в заданном расположении — в каталоге /etc/

- создать файл ./1.yml touch ./1.yml

- выполнить ввод содержимого файла ./1.yml

---

- name: test1

hosts: localhost

 

tasks:

 

- stat:

 

path: /etc/services

 

register: p

 

- fail:

 

msg: "file /etc/services not exist"

 

when: "not(p.stat.exists) or not(p.stat.isreg)"

 

где

 

---

признак формата файла YAML

- name: test1

наименование "плейбук"-файла

hosts: localhost

к каким хостам из файла /etc/ansible/hosts следует применить

tasks:

перечень задач "плейбук"-файла

- stat:

очередная задача "плейбук"-файла - получение статистики по файлу

path: /etc/services

путь к файлу /etc/services

register: p

сохранение результата обращения к файлу в переменной p

- fail:

действие при ошибке

msg: "file /etc/services not exist"

 

when: "not(p.stat.exists) or not(p.stat.isreg)"

если файл не существует или по указанному пути находится не файл, то

 

вывести сообщение file /etc/services not exist

Важно! Очень важно в "плейбук"-файле соблюдать отступы "два пробела", т. к. в случае не соблюдения соответствующих отступов выполнен он не будет.

5. Запуск и выполнение сценария

Выполнить запуск сценария

ansible-playbook ./1.yml

6. Анализ результатов В случае успешного выполнения будет выведено

[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'

PLAY [test1]*********************************************************************************************** TASK [Gathering Facts]************************************************************************************* ok: [localhost]

TASK [stat] ***********************************************************************************************

ok: [localhost]

TASK [fail] ***********************************************************************************************

skipping: [localhost]

PLAY RECAP ************************************************************************************************

localhost : ok=2 changed=0 unreachable=0 failed=0

В случае ошибки будет выведено, например

PLAY [test1] ********************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************

ok: [localhost]

TASK [stat] *********************************************************************************************************

ok: [localhost]

TASK [fail] *********************************************************************************************************

fatal: [localhost]: FAILED! => {"changed": false, "msg": "file /etc/services not exist"} to retry, use: --limit @/tmp/1.retry

PLAY RECAP **********************************************************************************************************

localhost : ok=2 changed=0 unreachable=0 failed=1

7. Отладка сценария

Выполнить запуск сценария с выводом информации о выполнении

ansible-playbook ./1.yml -vvv

Проанализировать информацию об ошибке в ходе выполнения сценария, выполнить ее поиск, нахождение и исправление. Повторно выполнить запуск сценария и убедиться, что он выполняется без ошибок.

8. Самостоятельное создание и выполнение сценария playbook

Создать сценарий тестирования наличия контента "body" на web-странице сайта ya.ru

- создать файл 2.yml

touch ./2.yml

- выполнить ввод содержимого файла 2.yml

---

-name: test2 hosts: localhost

tasks:

- uri:

url: https://ya.ru/ return_content: yes register: p

- fail:

msg: "content 'body' not exist in ya.ru" when: "'body' not in p.content"

-выполнить сценарий 2.yml

-проанализировать результат, если необходимо, проверить подключение к Интернет и повторить выполнение сценария 2.yml

-в сценарии 2.yml выполнить изменение подстроки контента "body" на подстроку контента "bo1dy"

-выполнить сценарий 2.yml

-проанализировать результат

Сообщить о выполнении практического задания преподавателю. Подготовиться и быть в готовности ответить на вопросы преподавателя.

Приложение. Минимальное конфигурирование Ansible

Минимальное конфигурирование Ansible выполняется следующим образом:

-в файле /etc/ansible/ansible.cfg, при необходимости, следует указать соответствующие значения для соответствующих атрибутов (оставим без изменений).

-в файле /etc/ansible/hosts следует указать

или поименный перечень ip-адресов и/или серверов, например

192.168.1.101

ya.ru

или группы и составляющие их экземпляры телекоммуникационного оборудования с соответствующими им значениями атрибутов доступа, например

[win_workstations]

win10-1 ansible_ssh_host=192.168.40.23 ansible_user=admin ansible_password=password ansible_connection=winrm ansible_winrm_server_cert_validation=ignore

[linux_servers]

deb10-1 ansible_ssh_host=192.168.50.111 ansible_ssh_user=root ansible_ssh_pass=netlab123

- следует создать "плейбук"-файл с расширением yml, содержащий соответствующие проверяемые значения и команды. Пример файла

/var/scripts/ansible/run_command_win.yml

---

-name: Run command on win_workstations hosts: win_workstations

gather_facts: false

tasks:

-name: run command ver

command: $PSVersionTable.PSVersion

Важно! Очень важно в "плейбук"-файле соблюдать отступы "два пробела", т. к. в случае не соблюдения соответствующих отступов выполнен он не будет.

- для запуска "плейбук"-файла следует выполнить

ansible-playbook /var/scripts/ansible/run_command_win.yml

Важно! В процессе выполнения команд "плейбук"-файла они выполняются последовательно одна за другой в порядке их размещения в "плейбук"-файле. В случае возникновения ошибки при выполнении очередной команды выполнение "плейбук"-файла будет остановлено на данной команде с выводом соответствующего сообщения об ошибке.

На deb10-2 в каталоге /var/scripts/ansible/ выполните создание "плейбук"-файла run_command_lin.yml содержащий, с учетом отступов, следующее

---

-name: Run command on linux-servers hosts: linux_servers

gather_facts: false tasks:

-name: get date

shell: date "+%Y-%m-%d" register: tmp_date

-для запуска Ansible по ssh следует установить

apt install sshpass

- если необходимо, запуск "плейбук"-файла можно выполнить с флагом отладки

ansible-playbook /var/scripts/ansible/run_command_lin.yml -vvv