Три способа выполнить множество задач с asyncio
Функция для примера:
async def do_it(n):
await asyncio.sleep(random.uniform(0.5, 1))
return n
1. Последовательный вызов
async def main():
for i in range(100):
result = await do_it(i)
Такой вызов имеет смысл только тогда, когда результат одной задачи требуется для вызова следующей.
Если они независимы, то это антипаттерн, так как аналогичен простому синхронному вызову по очереди.
2. Упорядоченный результат
async def main():
tasks = [do_it(i) for i in range(100)]
results = await asyncio.gather(*tasks)
Выполняет корутины конкурентно и возвращает результат в виде списка.
Полезен когда требуется получить результаты в том же порядке в котором задачи отправлены.
3. Результат по мере готовности
tasks = [asyncio.create_task(do_it(i)) for i in range(100)]
for cor in asyncio.as_completed(tasks):
result = await cor
Так же выполняет корутины конкурентно, но не гарантирует порядок. Результат возвращается по мере готовности, каждый отдельно.
Полезен когда нужно обработать любой ответ как можно скорее.
#async
👩💻 Ansible для начинающих + практический опыт.
• Бесплатный мини-курс, который знакомит любого абсолютного новичка в DevOps с основными моментами Ansible с помощью простых практических упражнений, которые вы можете практиковать прямо в браузере. Всего будет 38 уроков, 2 часа 34 минуты видео и 63 теста. Программа следующая:
• Введение в Ansible:
➡Обзор Ansible;
➡Демо: установка среды;
➡Демо: установка Ansible;
➡Знакомство с YAML;
➡Демо: наши упражнения;
➡Lab: YAML;
➡Тест: Introduction.
• Основные понятия Ansible:
➡Inventory;
➡Lab: Inventory;
➡Тест: Inventory;
➡Демо: особенности Windows;
➡Playbooks;
➡Lab: Playbooks;
➡Тест: Playbooks;
➡Демо: playbooks;
➡Modules;
➡Lab: Modules;
➡Variables;
➡Lab: Variables;
➡Тест: Variables;
➡Демо: Atom IDE.
• Механика Ansible:
➡Conditionals;
➡Lab: Conditionals;
➡Loops;
➡Lab: Loops;
➡Тест: Loops;
➡Roles;
➡Демо: roles;
➡Тест: Roles;
➡О приложении;
➡Lab: App Deploy;
➡Демо: развертывание приложения.
➡️https://stepik.org/course/123806
#Ansible#DevOps
💬 Ansible + Grafana Loki: Настраиваем отправку уведомлении в чат после логина на сервер по SSH.
• В этой статье мы развёрнем через Terraform несколько серверов в Yandex.Cloud, а затем при помощи Ansible настроим необходимый софт на каждом сервере. У нас будет основной сервер, где будет развёрнут Loki (система агрегирования логов) и Grafana (инструмент для визуализации данных), на серверах, которые мы хотим отслеживать, будет установлен Promtail (агент для сбора и отправки логов). Мы разберёмся с тем, как отслеживать входы на сервер, а затем в удобном формате отправлять об этом уведомления в чат Telegram с помощью вышеуказанных сервисов.
• Помимо этого, вы можете использовать Grafana не только для отслеживания коннектов к вашим серверам. Вы также можете развернуть Node-Exporter(-s)+Prometheus для мониторинга, чтобы отслеживать производительность серверов.
➡️https://habr.com/ru/articles/795855/
#Ansible#SSH#ИБ#DevOps
#jinja#ansible#ansible_collection#collection#devsec#hacktoberfest#hardening#linux#mysql_hardening#nginx#nginx_hardening#os_hardening#playbook#protection#role#ssh_hardening#sysctl
devsec.hardening is an Ansible collection that battle-tests security hardening for Linux (CentOS, AlmaLinux, Rocky, Debian, Ubuntu, etc.), MySQL, Nginx, and SSH, matching DevSec Inspec baselines. Install via `ansible-galaxy collection install devsec.hardening` and apply roles like os_hardening easily. It saves you time by automating secure configs across servers, cuts manual work, boosts compliance, and shrinks attack surfaces for safer systems.
https://github.com/dev-sec/ansible-collection-hardening