Назад | Перейти на главную страницу

Испытание кукловода с бродягой

Я новичок в марионетке. Я прочитал кучу, мне удалось написать простой (и, вероятно, неуклюжий) манифест для настройки хоста вместе с таким же простым скриптом фабрики для работы с предварительной настройкой марионетки. Отлично, пора быть серьезнее. Я настроил марионеточного мастера под apache2. (Я использую ubuntu 14.04 с пакетами версии 3.8 благодаря deb из марионеточных лабораторий ...)

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

  1. Мастер марионеток работает под apache2. Я полагаю, это нормально, поскольку на него не жалуются, и я работаю на 8140. Но мне бы хотелось получить лучший способ подтвердить это, чем отсутствие ошибок. Есть ли способ узнать о здоровье мастера?

  2. Я хотел бы иметь возможность проводить автоматическое тестирование. Для агентов (отдельных хостов в моем (крошечном) флоте) я могу вызвать бродячих виртуальных машин, сказать им, что их зовут X, и затем применить марионетку. Итак, я могу увидеть, подходит ли хост так, как я ожидал от хоста X. Затем я могу запустить сценарий на виртуальной машине, который проверяет все, что, по моему мнению, хост действительно должен делать. Но я бы хотел автоматизировать это, хотя, как ни странно, я не нашел общих рецептов для этого. Бьюсь об заклад, мне не нужно это изобретать. Есть указатели?

  3. Точно так же я бы хотел провести автоматическое тестирование и для мастера. Итак, это (1) и (2) вместе, так как я не уверен, как проверить мастер.

Спасибо за любые указатели.

  1. puppetmaster сам по себе не предоставляет много информации. Если вы добавите следующее в /etc/puppet/auth.conf:

    path ~ ^/status/no_key$
    auth off
    allow *
    

    Вы должны иметь возможность запросить puppetmaster статус без предоставления сертификатов (было бы неплохо занести в белый список определенные IP-адреса, используя allow_ip)

    curl -ksS -H "Accept: pson" https://puppet.example.com:8140/production/status/no_key
    

    Что должно ответить HTTP 200:

    {"is_alive":true,"version":"3.8.1"}
    

    Помимо этого puppetmaster хранит много информации в YAML, обычно в /var/lib/puppet/reports/. Но эти отчеты не очень удобны для людей. Итак, вы, вероятно, ищете что-то вроде марионетка-приборная панель, который раньше входил в официальный дистрибутив Puppet, а теперь разрабатывается как проект с открытым исходным кодом.

  1. Модули Puppet обычно тестируются с использованием рспек-марионетка, который является расширением общей среды тестирования Ruby. Вы, наверное, ищете Стакан, который сочетает в себе коробки Vagrant и тестирование rspec-puppet. Посмотри на этот учебник.

  2. Конечно, вы, вероятно, не хотите отлаживать свой код в производственной среде.

    Есть несколько вариантов решения этой проблемы. Один из них использует рабочие процессы с участием r10k или подход ролей / профилей. Или вы можете просто развернуть набор ящиков Vagrant, протестировать локально, а затем развернуть. Определенно хорошая идея управлять версиями используемых модулей марионеток, например. с помощью кукольный библиотекарь или r10k. Puppet развивается, поэтому список предпочтительных инструментов может со временем меняться.