Jump to content

cdist

cdist
Оригинальный автор(ы) Нико Шоттелиус, Стивен Армстронг [1]
Первоначальный выпуск 2010 г .; 14 лет назад ( 2010 )
Стабильная версия
6.9.8 / 24 августа 2021 г .; 2 года назад ( 24.08.2021 ) [2]
Репозиторий
Написано в Python , оболочка Bourne
Операционная система Linux , Unix-подобные , macOS [3]
Тип Управление конфигурацией программного обеспечения
Лицензия Стандартная общественная лицензия GNU версии 3 или новее.
Веб-сайт www .cdi .ст

cdist — это бесплатный инструмент управления конфигурацией программного обеспечения для Unix-подобных систем. Он управляет узлы через SSH, используя Bourne Shell и не требует установки какого-либо дополнительного программного обеспечения на целевых узлах.

Cdist отличается от конкурирующих систем управления конфигурацией, выбрав Bourne Shell в качестве основного языка для написания сценариев конфигурации и практически не требуя зависимостей от целевых узлов. Хотя ядро ​​cdist написано на Python , интерпретатор требуется только на хост-компьютере, а не на целевых узлах.

Cdist был разветвлен в августе 2022 года как skonfig . [4]

Разработка

[ редактировать ]

Разработка cdist началась в 2010 году в ETH Zurich и активно разрабатывается [5] и поддерживается в основном Нико Шоттелиусом и Стивен Армстронг. [6] cdist используется в различных компаниях Швейцарии (например, ETH Zurich [7] и проект браузера OMA), [8] США, Германии и Франции.

cdist — это система управления конфигурацией с нулевой зависимостью: для нее требуется только ssh и совместимая с Bourne оболочка на целевых хостах, которые по умолчанию предоставляются на большинстве Unix-подобных машин. [9] По этой причине cdist можно использовать для загрузки других систем управления конфигурацией. [10]

Установка и настройка

[ редактировать ]

cdist обычно устанавливается не как пакет (например, .deb или .rpm), а через git . Все команды выполняются из созданной кассы. Точкой входа для любой конфигурации является сценарий оболочки conf/manifest/init, который в терминах cdist называется начальным манифестом. [11]

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

Архитектура

[ редактировать ]

cdist разделен на два компонента:

  • Ядро
  • Скрипты конфигурации

Основной

[ редактировать ]

Ядро Cdist занимается чтением конфигурации и связью с удаленными хостами. Как и Ansible, cdist использует модель «push» для применения изменений конфигурации: процесс cdist на «хостовой» машине подключается к любому количеству удаленных узлов через SSH, а затем выполняет обновления конфигурации на этих узлах. Cdist может настраивать несколько хостов параллельно, чтобы сократить время, затрачиваемое на настройку. [13]

Конфигурация

[ редактировать ]

Сценарии конфигурации определяют, как должны быть настроены цели. Обычно они написаны на Bourne Shell и состоят из

  • Начальный манифест — точка входа , с которой начинаются все процессы настройки. Этот сценарий обычно использует информацию о целевом узле, такую ​​как его имя хоста и операционная система, для вызова других, более конкретных сценариев, которые выполняют фактическую настройку.
  • Global Explorers — небольшие скрипты, которые собирают информацию о целевой системе (например, операционную систему, систему инициализации и имя хоста).
  • Типы, которые описывают повторно используемые фрагменты конфигурации. Типы создаются в манифестах и ​​являются единственным способом фактического запуска кода на целевых машинах. Имя «тип» понимается как аналог «класса» в объектно-ориентированном языке, поскольку тип можно превратить в несколько «объектов» в зависимости от того, какие параметры ему передаются. [14] Например, __file type можно превратить в несколько «объектов», каждый из которых представляет создание определенного файла. «Роли» Ansible эквивалентны типам cdist. Типы могут иметь множество компонентов:
    • Идентификатор объекта: когда тип превращается в объект, ему передается уникальный идентификатор объекта. Один и тот же тип не может быть создан дважды с одним и тем же идентификатором. Этот идентификатор не является случайным, как UUID, а представляет собой некоторый уникальный идентификатор, имеющий смысл в отношении типа. Например, __file идентификатор типа — это абсолютный путь к файлу.
    • Параметры. Многие типы не могут быть полностью описаны идентификатором объекта и принимают дополнительную информацию в виде параметров. __file тип занимает group параметр, указывающий, какой группе Unix должен принадлежать файл.
    • Обозреватели: в дополнение к описанным выше глобальным обозревателям у типов иногда есть свои собственные обозреватели, которые собирают информацию, специфичную для типа, с удаленного компьютера. __file type использует проводники, чтобы определить, существует ли уже создаваемый файл. Иногда эта информация используется для пропуска создания файла.
    • Манифест. Манифест типа может создавать экземпляры других типов, что упрощает повторное использование кода.
    • Скрипты генкода: gencode-remote скрипт — это основной способ фактического обновления конфигурации целевых узлов. gencode-remote запускается на локальном компьютере, но его стандартный вывод отправляется на удаленный компьютер и выполняется как сценарий оболочки. Существует также менее часто используемый gencode-local скрипт, который выводит код для локального запуска.

Shell де-факто является языком для написания скриптов конфигурации cdist, но большинство скриптов можно написать на любом языке, если они содержат подходящую строку shebang . Сценарии оболочки предпочтительнее из-за простоты доступа к переменным среды, чтения файлов и выполнения системных команд.

Язык конфигурации

[ редактировать ]

Все настраиваемые пользователем части содержатся в манифестах или сценариях генкода, которые являются сценариями оболочки. Были выбраны сценарии оболочки, поскольку системные администраторы Unix обычно умеют читать и написание сценариев оболочки. Кроме того, оболочка также широко доступна в потенциальных целевых системах. таким образом можно избежать необходимости устанавливать туда дополнительное программное обеспечение («нулевые зависимости»).

cdist считывает свою конфигурацию из исходного манифеста ( conf/manifest/init ), в котором хосты сопоставлены с типы:

case "$__target_host" in
    myhostname)
        __package zsh --state present
        __addifnosuchline /tmp/cdist-welcome --line "Welcome to cdist"
    ;;
esac

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

# Provide a default file, but let the user change it
__file /home/frodo/.bashrc --source "/etc/skel/.bashrc" \
   --state exists \
   --owner frodo --mode 0600

# Take file content from stdin
__file /tmp/whatever --owner root --group root --mode 644 --source - << DONE
Here goes the content for /tmp/whatever
DONE

Зависимости выражаются путем установки переменной среды require :

      __directory /tmp/foobar
      require="__directory//tmp/foobar" __file /tmp/foobar/baz

Доступ к путям и файлам внутри типов предоставляется переменными среды, такими как $__объект .

Подобное программное обеспечение

[ редактировать ]

Ansible , как и cdist, использует безагентную модель push-уведомлений для настройки узлов. [9] Однако Ansible требует наличия Python . для некоторых типов целей [15] тогда как cdist этого не делает. Ansible проводит различие между ролями, написанными на декларативном языке на основе YAML, и модулями, написанными на Python. В Cdist есть только «типы», которые служат целям как модулей, так и ролей и в основном написаны на Bourne Shell. Подход Cdist может быть предпочтительнее, поскольку Shell знаком многим системным администраторам, которые никогда раньше не использовали системы управления конфигурациями, но декларативный язык Ansible, возможно, более удобен для чтения и подходит.

  1. ^ Шарма, Ришаб; Сони, Митеш (15 марта 2015 г.). Обучение повара . Упаковка . стр. 10, 17–18. ISBN  978-1783285211 .
  2. ^ «Теги — cdist — Gitea: Git с чашкой чая» . code.ungleich.ch . Проверено 15 января 2022 г.
  3. ^ «3. Поддерживаемые операционные системы — документация cdist 6.9.8» . cdi.st. ​Проверено 15 января 2022 г.
  4. ^ «.github/README.md по адресу df2f84b694afee8137b97695f6424c5aec314717 · skonfig/.github» . GitHub.com .
  5. ^ [1] [ мертвая ссылка ]
  6. ^ «ungleich/cdist: управление конфигурацией cdist» . GitHub.com . Архивировано из оригинала 5 июля 2015 г. Проверено 10 апреля 2016 г.
  7. ^ «Управление конфигурацией Cdist» . Архивировано из оригинала 15 января 2013 г. Проверено 8 июня 2012 г.
  8. ^ «О браузере ОМА» . Архивировано из оригинала 17 августа 2012 года . Проверено 26 июня 2012 г.
  9. ^ Jump up to: а б Торбернтссон, Ким; Рыдин, Ильва (июнь 2014 г.). Исследование управления конфигурацией — системные решения для развертывания и настройки программного обеспечения в облачной среде (PDF) (Диссертация). Уппсальский университет . стр. 8, 27, 31, 42. Архивировано (PDF) из оригинала 22 ноября 2018 г.
  10. ^ «Группы Google» . Группы.google.com . Проверено 10 апреля 2016 г.
  11. ^ Крузе, Кристиан (2016). «Автоматическое развертывание конфигурации с помощью cdist» . WWWTech . Архивировано из оригинала 22 ноября 2018 года . Проверено 22 ноября 2018 г.
  12. ^ "cdist-тип(7)" . Nico.schottelius.org . Архивировано из оригинала 3 марта 2016 г. Проверено 10 апреля 2016 г.
  13. ^ Безруков Николай. "cdist" . Мягкая панорама . Архивировано из оригинала 8 июля 2017 года . Проверено 22 ноября 2018 г.
  14. ^ «13. Манифест — документация cdist 4.10.6-6-g61ac4a26» . www.nico.schottelius.org . Проверено 26 марта 2019 г.
  15. ^ «Установка Ansible — Документация Ansible» . docs.ansible.com . Проверено 13 января 2023 г. Управляемый узел (машина, которой управляет Ansible) не требует установки Ansible, но требует Python 2.7 или Python 3.5–3.11 для запуска кода библиотеки Ansible.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: cebc22df2e569a10bf391d5b10d9b27c__1688420460
URL1:https://arc.ask3.ru/arc/aa/ce/7c/cebc22df2e569a10bf391d5b10d9b27c.html
Заголовок, (Title) документа по адресу, URL1:
cdist - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)