Библиотека задач по 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/
加入频道
Какой инструмент обычно используется для непрерывной интеграции и непрерывного развертывания (CI/CD)?
Anonymous Quiz
78%
Jenkins
6%
Docker
11%
Git
5%
Ansible
Terraform Backend. Какой лучше?

AWS S3 — Standard (с блокировкой через DynamoDB). Сохраняет состояние в виде заданного ключа в заданном сегменте на Amazon S3. Этот бэкэнд также поддерживает блокировку состояния и проверку согласованности через DynamoDB.

terraform enterprise — Standard (без блокировки).

etcd — Standard (без блокировки). Сохраняет состояние в etcd 2.x по заданному пути.

etcdv3 — Standard (с блокировкой). Сохраняет состояние в хранилище etcd в виде K/V с заданным префиксом.

gcs — Standard (с блокировкой). Сохраняет состояние как объект в настраиваемом префиксе в заданном сегменте в Google Cloud Storage (GCS). Этот бэкэнд также поддерживает блокировку состояния.

Gitlab Terraform state (с блокировкой). Хранит состояние в Gitlab Terraform state хранилище, используя HTTP протокол и права Gitlab для доступа.

Существуют также и другие Backend для Terraform.
Что из перечисленного НЕ является инструментом управления конфигурацией?
Anonymous Quiz
2%
Chef
2%
Puppet
1%
Ansible
95%
Jira
За что отвечает kube-proxy?

Kube-proxy отвечает за взаимодействие между сервисами на разных нодах кластера.
По-умолчанию, в Ansible все задачи из списка выполняются параллельно на всех хостах, которые указаны в hosts. Как сделать так, чтобы задачи выполнялись последовательно по хостам?

Необходимо установить параметр serial: 1, чтобы определить количество хостов, на которых будут выполняться паралелльно задачи. Значение 1 будет значить, что все задачи будут проходить параллельно по 1 хосту за раз.
Состояние репозитория ушло на много коммитов вперед. Как откатить весь репозиторий к определенному коммиту?
Anonymous Quiz
56%
git reset --hard <tag/branch/commit hash>
8%
Нельзя это сделать
22%
git reset --soft <tag/branch/commit hash>
13%
git hardreset --hard --a <tag/branch/commit hash>
Какой тип базы данных использует Prometheus?

Prometheus использует TSDB (time series database).
Как посмотреть нагрузку на диски?

Установить утилиту sysstat, проверить нагрузку на диски iostat -xtc.
Чем tag отличается от branch?

И
tag и branch представляют собой указатели на коммиты.

Ветка представляет собой отдельный поток разработки, который может выполняться одновременно с другими разработками в той же кодовой базе. Коммит в ветке указывает на изменения, которые добавляются в новых коммитах
Тег представляет собой версию определенной ветки в определенный момент времени.
Tag представляет собой версию той или иной ветки в определенный момент времени. Branch представляет собой отдельный поток разработки, который может выполнятся одновременно с другими разработками в той же кодовой базе.
В каких случаях не отработает перенос пода на другую ноду?

Если на другой ноде нет ресурсов для размещения пода или нет сетевой доступности до ноды.
В конфиге nginx некоторого проекта есть два десятка различных location, которые делятся на три базовых типа - memcache, dynamic, static. Лог проекта единый, но для анализа требуется различать записи в логе каким-либо способом. По именам файлов тип location различить нельзя, разделить на три лога также нельзя. Предложите решение.

Использовать вывод в syslog и определить tag. Например:
location /memcache {
access_log syslog:server=unix:/dev/log,tag=nginx_memcache;
error_log syslog:server=unix:/dev/log,tag=nginx_memcache;
}

location /dynamic {
access_log syslog:server=unix:/dev/log,tag=nginx_dynamic;
error_log syslog:server=unix:/dev/log,tag=nginx_dynamic;
}
/static - соответственно. Вывод в определенный файл syslog можно указать опцией :syslogtag
Для чего нужен terragrunt?

Terragrunt — это обертка для Terraform, позволяющая решать проблемы, связанные с масштабированием и переиспользованием кода для настройки инфраструктуры. Он позволяет повторно использовать конфигурационные параметры и поддерживает многоуровневые конфигурации и зависимости.
Что находится на master ноде?

Kube
-apiserver отвечает за оркестрацию всех операций кластера.
Controller-manager (Node controller + Replication Controller) Controller отвечает за функции контроля за нодами, репликами.
ETCD cluster (распределенное хранилище ключ-значение) ETCD хранит информацию о кластере и его конфигурацию.
Kube-sheduler отвечает за планирование приложений и контейнеров на нодах.

По-умолчанию на master ноде не размещаются контейнеры приложений, но данный фунционал возможно настроить.
Что такое роль в 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}"