Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Об обучении на Хекслете
Основы Ansible

Факты

- hosts: dbservers
  tasks:
    - name: update postgresql config
      template: src=templates/postgresql.conf.j2 dest=/var/tmp/postgresql.conf

В этом примере у нас есть конфиг для postgresql - templates/postgresql.conf.j2, в котором настраивается множество различных буферов. И мы хотим, чтобы один из них зависел от настроек целевой машины, например, использовал 10% от её оперативной памяти. Для этого необходимо получить данные о сервере, на котором происходит запуск. В Ansible есть специальный модуль setup. В его задачи входит сбор информации о целевой машине. Запустим и посмотрим, что он из себя представляет:

$ ansible dbservers -i production.ini -m setup | less
ec2-18-216-178-214.us-east-2.compute.amazonaws.com | SUCCESS => {
    "ansible_facts": {
        "ansible_all_ipv4_addresses": [],
        "ansible_all_ipv6_addresses": [
            "fe80::aede:48ff:fe00:1122%en5",
            "fe80::8038:cb42:6c17:775c%utun0",
            "fe80::5b76:5b55:f705:4331%utun1"
        ],
        "ansible_ap1": {
            "device": "ap1",
            "flags": [
                "BROADCAST",
                "SIMPLEX",
                "MULTICAST"
            ],
...

В выводе мы видим большую структуру данных и сверху слово ansible_facts. В Ansible существует понятие facts (факты). Это и есть информация о тех машинах, на которых происходит запуск. Факты - статическая информация о сервере: операционная система, процессор, память, настройка сети, переменные окружения, интерфейсы и т.д. В плейбуках она оказывается в виде обычных переменных, которые можно использовать и подставлять. Это очень удобно.

Как это работает. Есть факт под названием ansible_memtotal_mb. Используем его в шаблоне templates/postgresql.conf.j2 для того, чтобы определить размер нашего буфера:

buffer: {{ ansible_memtotal_mb / 10 }}

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

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

- hosts: webservers
  gather_facts: no
  tasks:
    - name: install redis server
      apt: name=redis-server state=presents update_cache=yes

Теперь факты собираться не будут.


<span class="translation_missing" title="translation missing: ru.web.courses.lessons.mentors.mentor_avatars">Mentor Avatars</span>

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Для полного доступа к курсу нужна профессиональная подписка

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

Получить доступ
115
курсов
892
упражнения
2241
час теории
3196
тестов

Зарегистрироваться

или войти в аккаунт

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

  • 115 курсов, 2000+ часов теории
  • 800 практических заданий в браузере
  • 250 000 студентов

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг».

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Rambler
Логотип компании Bookmate
Логотип компании Botmother

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг».