0Pricing
DevOps Bootcamp · Урок

Циклы по словарям

Создавайте пользователей из данных в формате «ключ — значение»

«Циклы по словарям» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.

Одних списков недостаточно

Для создания пользователей нужно больше, чем имя: группа, оболочка, состояние. Плоский список не может хранить все эти данные. Вам понадобится список словарей. 🗂️

Список словарей

Каждая запись списка становится небольшим словарём пар «ключ — значение». Поэтому в одной итерации цикла доступны несколько именованных полей.

loop:
  - { name: alice, group: admin }
  - { name: bob, group: dev }

Доступ к ключам через item.key

Если item — словарь, прочитать каждое поле можно с помощью item.fieldname. Например, item.name и item.group получают значения из текущей записи.

- name: Add users
  ansible.builtin.user:
    name: "{{ item.name }}"
    group: "{{ item.group }}"
  loop:
    - { name: alice, group: admin }
    - { name: bob, group: dev }

Более удобная многострочная форма

Встроенные фигурные скобки быстро загромождают запись. Для лучшей читаемости записывайте каждый словарь в несколько строк, если в нём много ключей.

loop:
  - name: alice
    group: admin
    shell: /bin/bash
  - name: bob
    group: dev
    shell: /bin/zsh

Получение списка из vars

Определите список словарей как переменную, а затем перебирайте его. Данные хранятся в одном месте, а задача остаётся короткой и пригодной для повторного использования.

vars:
  users:
    - { name: alice, group: admin }
tasks:
  - ansible.builtin.user:
      name: "{{ item.name }}"
    loop: "{{ users }}"

Перебор настоящего словаря

Чтобы перебрать настоящий словарь пар «ключ — значение», пропустите его через фильтр dict2items, чтобы каждая пара стала отдельным элементом для цикла.

loop: "{{ ports | dict2items }}"

item.key и item.value

После применения dict2items каждый элемент предоставляет item.key и item.value — имя и данные из исходного отображения.

- ansible.builtin.debug:
    msg: "{{ item.key }} = {{ item.value }}"
  loop: "{{ settings | dict2items }}"

Сочетание обязательных и необязательных ключей

Не каждой записи нужны все ключи. Объедините цикл с фильтром default, чтобы для отсутствующих полей использовалось разумное значение по умолчанию.

shell: "{{ item.shell | default('/bin/sh') }}"

Словари упорядочивают данные

Объединение связанных полей для каждого элемента помогает отделить данные от логики. Чтобы изменить пользователя, достаточно изменить данные, а не саму задачу.

Полная идемпотентность

Каждая итерация по словарю — отдельный вызов модуля, поэтому Ansible сообщает changed или ok для каждого пользователя, как и при работе с простыми списками.

Отлично подходит для массовой настройки

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

Быстрая проверка

Вы перебираете список словарей. Как прочитать отдельное поле?

Итоги: циклы по словарям

Вы перебрали списки словарей, прочитали поля item.name и использовали dict2items для настоящих отображений. Далее: вложенные циклы. 🎉

Часто задаваемые вопросы

Урок «Циклы по словарям» бесплатный?

Да — полный текст урока «Циклы по словарям» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «Циклы по словарям»?

Создавайте пользователей из данных в формате «ключ — значение» Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать DevOps Bootcamp?

Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Циклы по словарям»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке DevOps Bootcamp?

Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Ключевое слово loop для списка
  2. Циклы по словарям
  3. Вложенные циклы с subelements
  4. loop_control: label, index и pause
← Назад к DevOps Bootcamp