Библиотека задач по DevOps | тесты, код, задания
2.87K subscribers
115 photos
3 videos
2 files
150 links
Задачи и тесты по DevOps для тренировки и обучения.

По рекламе: @proglib_adv

Наши каналы: https://yangx.top/proglibrary/9197

Учиться у нас: https://proglib.io/w/2b07c285

Работать у нас: https://job.proglib.io/
加入频道
Что такое роль в Ansible? Что содержит в себе Ansible роль?

Ansible роль представляет собой структурированный плейбук, содержащий, как минимум, набор задач (tasks) и дополнительно — обработчики событий (handlers), переменных (default и vars), файлов (files), шаблонов (templates), описание и зависимости (metadata) и тесты (tests).
Чем отличается COPY от ADD в Dockerfile?

Инструкция COPY копируют файлы и директории с хостовой машины внутрь контейнера, инструкция ADD копирует файлы и директории с хостовой машины внутрь контейнера и может распаковывать .tar архивы.
Что находится на worker ноде?

Kubelet слушает инструкции от kube-apiserver и разворачивает или удаляет контейнеры на нодах.
Kube-proxy отвечает за взаимодействие между сервисами на разных нодах кластера.

На worker нодах по-умолчанию размещаются контейнеры приложений. На каждой ноде кластера устанавливается Docker или другая платформа контейнеризации (например RKT или containterd). На Master ноде также устанавливается Docker, если необходимо использовать компоненты Kubernetes в контейнерах.
Необходимо проходить по списку URL'ов и проверять их доступность. Условия:
Список URL'ов находится в файле /urls.txt;
Доступный URL - значит код ответа не 5XX или 4XX;
Проверка должна быть оформлена в виде функции bash, которая должна вызываться внутри скрипта;
Функция должна принимать в качестве входного параметра путь к файлу с URL'ами;
При любом ответе недоступности от сервиса - прерывать дальнейшую проверку. Временное ограничение 20 мин.

Скрипт проверки. Запускать ./script.sh <путь до файла с URLs>

#!/usr/bin/env bash

set -xueo pipefail

FILE_URLS=${1:-}
if [[ -z "${FILE_URLS}" ]]; then
echo "File with URLs list do not defined."
exit 1
fi

function checkUrls() {
local URLS=$1
for URL in $(cat $URLS); do
STATUS=curl -LI "${URL}" -o /dev/null -w '%{http_code}' -s
if [[ "${STATUS}" == "500" ]] || [[ "${STATUS}" == "400" ]]; then
echo "URL ${URL} unavailable!"
exit 1
else
echo "URL ${URL} available."
fi
done
}

checkUrls "${FILE_URLS}"
Что выполняет конструкция extends: .plan в gitlab CI?

extends используется для повторного использования секции пайплайна (аналог фунции). .plan указывает на имя повторяемой секции в пайплайне. Первым в шаге выполняется скрипт из extends.
Как установить Kubernetes?

1. Следовать инструкции установки kubeadm.

2. Установка с использованием kubespray.
Почему DaemonSet не нужен scheduler?

DaemonSet гарантирует, что определенный под будет запущен на всех нодах кластера. При наличии DaemonSet в кластере на любой из существующих и будущих нод в кластере зарезервированы ресурсы для пода на ноде.

Здесь стоит сделать оговорку насчет того, что DaemonSet может работать не на всех нодах кластера, а на некоторых, выбранных, например, по nodeSelector. К примеру, у нас есть GPU ноды и нам нужно на все эти ноды задеплоить микросервис выполняющий вычисления на GPU.
Администратор выполняет команду kubectl apply -f deployment.yaml. Опишите по порядку что происходит в каждом из узлов Kubernetes и в каком порядке.

Клиент kubectl обращается к мастер-серверу kube-apiserver (стандартно на порт 6443), адрес мастер сервер задан в .config файле. В запросе передаётся информация, которую нужно применить в кластере обращения. API-сервер обращается к etcd хранилищу, проверяет наличие конфигурации запрашиваемого ресурса. Если конфигурация в хранилище etcd есть, то API-сервер сравнивает новую конфигурацию с конфигурацией в базе данных: если конфигурация одинаковая, то изменений в кластере не происходит, клиенту отдается ответ об успешности запрашиваемого действия, если конфигурации нет в etcd, то если требуемое действие касается создания сущностей, которые требуют ресурсов кластера (создания подов, хранилища pv/pvc и т.д.), scheduler проверяет возможность размещения подов на нодах и после чего происходит создание подов, при этом controll-manager контроллирует создание нужного поличества реклик сущности. После создания трубуемой сущности, происходит запись в etcd, controll-manager продолжает отслеживать состояние сущностей на протяжении всего цикла его жизни.
Чем отличается StatefulSet от Deployment?

Deployment — ресурс Kubernetes предназнваенный для развертывания приложения без сохранения состояния. При использовании PVC все реплики будут использовать один и тот же том, и ни один из них не будет иметь собственного состояния.

StatefulSet — поддерживают состояние приложений за пределами жизненного цикла отдельных модулей pod, например для хранилища. Используется для приложений с отслеживанием состояния, каждая реплика модуля будет иметь собственное состояние и будет использовать свой собственный том.
В чем разница между DevOps и Agile?

Agile — это набор ценностей и принципов в отношении производственных методов, таких как разработка ПО. Например, если у кого-то есть идея и он хочет преобразовать концепцию в практическое программное обеспечение, он может использовать ценности и принципы Agile для достижения этой цели. Однако программное обеспечение может работать только на компьютере разработчика или в тестовой среде. Чтобы легко и быстро перенести ПО в производственную инфраструктуру безопасным и простым способом, им потребуются инструменты и методы DevOps.
Поговорим о сервере логов Nagios.

Целью сервера логов Nagios является упрощение поиска данных логов. Таким образом, он лучше всего подходит для таких задач, как настройка оповещений, уведомлений о потенциальных угрозах, запрос данных логов и быстрый аудит системы. Использование сервера логов Nagios позволяет разместить все данные логов в одном месте с высокой доступностью.
Что такое Memcached?

Memcached — это система кеширования объектов в памяти с открытым исходным кодом. Она широко используется для ускорения процесса извлечения данных SQL, предотвращая повторное выполнение длительных запросов при параллельной обработке.
Как Chef используется в качестве инструмента СМ?

Chef считается одним из предпочтительных отраслевых инструментов Configuration Management. Например, Facebook перенесла инфраструктуру на платформу Chef. Объясните, как эта система управления конфигурациями, написанная на Ruby, поможет избежать задержек, автоматизируя процессы. Chef позволяет интегрироваться с облачными платформами, настраивать новые системы, а также предоставляет библиотеки, которые могут быть развернуты в рамках ПО.
Почему компонент непрерывного тестирования так важен для DevOps?

По сути, непрерывное тестирование позволяет разработчикам выполнять постоянное тестирование после каждого обновления, внедрённого в системe. Делая это, весь процесс становится более плавным – в других случаях, все тесты будут проходить до окончания периода спринта, что выльется в падения и следовательно трату времени.
Чем отличается count от for_each?

count — это итерация по списку, который содержит целочисленные элементы, for_each — это итерация по корневым ключам словаря, которые могут содержать данные любого типа.

resource "aws_instance" "web" {
count = 3

instance_type = "t2.micro"
ami = data.aws_ami.debian_buster.id
tags = {
Name = "WebServer-${count.index + 1}"
}
}
Описание ресурса выше создаст 3 одинаковых EC2 инстанса, изменив имя с указанием номера текущего состояния счётчика. count начинает отсчет с 0, поэтому чтобы 1 EC2 инстанс был с индексом 1 в имени ему прибавили 1.

resource "aws_instance" "server" {
for_each = {
web = { type = "t2.micro", public_ip = true },
db = { type = "m5.large", public_ip = false }
}

instance_type = each.value["type"]
ami = data.aws_ami.debian_buster.id
associate_public_ip_address = each.value["public_ip"]
tags = {
Name = "each.key"
}
}
Ресурс выше создаст 2 EC2 инстанса с итерацией по ключам each.key и использовав значения вложенных словарей в конфигурации EC2.
Как IaC реализуется с помощью AWS?

Начните с разговора о старых механизмах записи команд в файлы сценариев и их тестирования в отдельной среде перед развертыванием, а также о том, как этот подход заменяется IaC. Подобно коду, написанному для других сервисов, IaC позволяет разработчикам писать, тестировать и поддерживать объекты инфраструктуры в описательной форме, используя такие форматы, как JSON или YAML. Это упрощает разработку и ускоряет развертывание изменений инфраструктуры.
Какая из следующих команд запускает Jenkins из командной строки?
Anonymous Quiz
17%
java –jar Jenkins.war
13%
java –war Jenkins.jar
64%
java –jar Jenkins.jar
6%
java –war Jenkins.war
Какой файл используется для определения зависимостей в Maven?
Anonymous Quiz
9%
build.xml
61%
pom.xml
27%
dependency.xml
2%
Version.xml