Если вы когда-либо писали пару соленых государств, эти проблемы могут звучать знакомы:
- Пропавший толстой кишки после ключа YAML или пропавшего места после толстой кишки
- Данные не удалось скомпилировать: состояние «FO» в строке SLS »не выполняется в виде списка
- ParserError или ScannerError во время работы
состояние. Highstate.
- Вложенный словарь, отступ с двумя пробелами вместо четырех
- Государственные требования на неправильном уровне вдавливания
- Отступ со смешанными вкладками и пробелами, которые приняли удивительно много времени для отладки
И даже если ваши штаты действительны YAML, у них еще нет смысла для соли, потому что ваш Waitc_in
Реквизит имеет опечаток. Посыпать несколько меток Jinja здесь и там, и ошибки могут получить даже любитель …
Есть ли что-нибудь, что можно сделать?
Эти проблемы определенно придумывались раньше ( # 802 ). Умные разработчики, вероятно, это поняли, верно?
Действительно, можно подтвердить ваши штаты, в полуклинированном виде, даже до того, как они коснутся вашей инфраструктуры. Для соли у вас есть следующие варианты:
Используйте
Salt-call --local - retcode-passthrough State.show_sls your_state
либо вручную, либо используя комбинезон. Это вызывает процесс рендеринга состояния и может ловить тонны возможных ошибок.Проверьте свои состояния, используя тестовую кухню вместе с Кухня-соль и какой-то верификатор. Полезное руководство по этой теме доступно здесь
Однако все это чувствует немного тяжело. Вам нужно посвятить и нажать, чтобы запустить тесты, раскручивать виртуальные машины или контейнеры, погрузиться в RUBY-код и писать тесты на все возможные перестановки на столб/зерна. Такая длительная обратная связь может легко привести к Git Commit -M "Fuck Yaml"
В вашей истории фиксации и последующей поправки/ребазе/Squash Dance (и вы не можете сквошить нецензурные уведомления об увыках, отправленные остальной вашей команде!).
Есть ли что-то более легкое?
Ну, ваша среда развития может помочь вам. Первый слой защиты может работать прямо в вашем текстовом редакторе, поскольку вы вводите, обеспечивая немедленную обратную связь. Он поймает ваши опечатки, прежде чем они будут преданы и развернуты (и пусть система CI справится с более сложными материалами). Идеальный редактор плагин может:
- Помогите вам иметь дело с уровнями вдавливания YAML и структурами данных
- Знать и выделить самые распространенные ключевые слова соли
- Выделите кронштейны и теги Jinja
- Автозаполнение ключевые слова
Ниже я буду покрывать плагины для 9 различных редакторов, поэтому вам не нужно отключаться от своего любимого. Кроме того, я дам несколько советов по установке/конфигурации, чтобы спасти вас несколько густочек. Эти плагины не идеальны, но они являются открытым исходным кодом, и вы можете внести свой вклад в любой из них, если хотите (я сделал ).
- Атом
- Затмение
- Emacs
- Катя
- Midnight Commander
- Возвышенный текст
- Пичарма
- Погибший
- Визуальный студийный код
- Финальные советы
Если ваш любимый редактор здесь не покрыт здесь, или вы хотите поделиться нефтем взломом, который помогает вам уменьшить количество ошибок YAML, пинг меня на Twitter Отказ
Атом
Из коробки атом понимает * .sls
файлы как ямл. Кроме того, вы можете установить Atom-Jinja2 и вручную переключите файл грамматики на YAML (шаблоны Jinja)
нажав Ctrl + Shift + L
Отказ
Для лучших результатов вы можете установить оба Атом-соль и Atom-Jinja2 Отказ Просто нажмите Редактировать -> Настройки -> Установите
Поиск Атом-соль
или Atom-Jinja
и установить их.
Функции
- Первый
Атом-соль
Языковая область —Source.yaml.salt
, который автоматически включен для* .sls
Файлы и предоставляет синтаксис выделения (Combo yaml + Jinja) - Второй охват
source.python.salt
не связан с каким-либо расширением файла, а вместо этого включен для любых файлов, которые начинаются с#! PY
Отказ Это означает, что вы получаете синтаксис подсветки дляPY
,Pydsl.
иpyobjects.
Солевые рендерры. - Кроме того, он должен открыть солевые документы через
Соль-Док
команда, но это не сработало для меня по какой-то причине Atom-Jinja2
предоставляетSource.yaml.jinja
Область применения, которая включена для* .jinja.
,* .j2.
и Куча другие расширения- Поддерживает синтаксис выделения и складывания
- Имеет пару, связанные с Цзиньей фрагменты
Вы можете назначить конкретные языковые возможности для любого расширения с чем-то вроде этого в вашем ~/.atom/config.cson
:
"*": core: customFileTypes: "source.python.salt": [ "py.sls" "pysls" ]
Другие вещи, чтобы попробовать
- Языковая соль — альтернативный плагин атом для соли (включен для
* .sls
Файлы, предоставляетSource.salt
Область и куча фрагменты Несомненно - Выравниватель-соль ( Github ) Визуально выровнять YAML атрибуты
- Руководства вдавливания должны быть включены по умолчанию по умолчанию соли, но вы можете обеспечить его применение, нажав
Редактировать -> Настройки -> Редактор -> Показать руководство
Затмение
Я не смог найти достаточно хорошего решения для Eclipse, но ниже двух направлений, которые вы можете попробовать исследовать:
Перейти к
Помощь -> Eclipse Marketplace
Поиск «Едит» и установить его. Тогда иди кОкно -> Предпочтения -> Общие -> Редакторы -> Файловые ассоциации
и ассоциируйте* .sls
Расширение с Йедитом. Это позволяет синтаксис подчеркивать для обычных файлов YAML (не удачи с Jinja, хотя и).Другой плагин называется Liclipsetext Отказ Он имеет поддержку как Syntaxes YAML и Jinja, но не может включить их одновременно для одного файла. Это должно быть возможно, хотя и есть Некоторые подсказки Если вы хотите внести свой вклад.
Руководства отступа доступны через отдельный Отступ руководство плагин.
Emacs
Соляный режим Ваша лучшая ставка. Он основан на yaml-mode
и MMM-MODE
и автоматически включен для * .sls
файлы. Самый простой способ установки — через MELPA.
Функции
- Синтаксис выделения для
* .sls
Файлы (также возможно включить* .jinja
Синтаксис поддержки) - Отступ и выравнивание выражений и заявлений
- Проверка орфографии комментариев с
Flyspell.
- Использовать
Salt-Mode-Browse-Doc
просматривать документацию государственного модуля в точке - Быстро перемещаться между функциями соли состояния
Вещи, которые нужно знать о
- Нет автоматического завершения пока что
- Использует yaml-mode Под капотом, который нужен новый сопровождающий. Если вы готовы наступить, есть ряд проблемы для вас, чтобы исправить.
Другие вещи, чтобы попробовать
- Отступ инструменты вместе с гидра Похоже, хорошая комбинация для чувствительных к пробелам языков, таких как YAML и Python.
- Выделение-отступов Стоит смотреть (хотя он добавляет больше визуального беспорядка). Кроме того, есть Перекрестие подсветки режим.
- Установить Dash-Point Если вы используете Dash API Документация Браузер
- Чтобы выделить другие файлы конфигурации с шаблонами Jinja, установите конвенцию названия их с помощью
* .jinja
Расширение и добавьте следующие строки к вашемуinit.el
(см. Readme Для более подробной информации):
(mmm-add-mode-ext-class nil "\\.jinja\\'" 'jinja2)
Катя
Kate-Jinja2 — выделение Имеет кучу синтаксических подсветков для разных типов файлов с Jinja сверху.
Функции
- Основные моменты
* .jinja
,* .jinja2.
и* .j2.
используя синтаксис Jinja2 - Основные моменты
* .yaml
,* .YML
и* .sls
Файлы с использованием синтаксиса YAML + Jinja2 (если вы примените патч ниже) - Если вы хотите включить руководство в отступе, переключите
Настройки -> Настроить Kate -> Редактор компонент -> Внешний вид -> Показать линии отступа
Чтобы установить его, скопируйте * .xml
Файлы в ~/.local/Share/org.kde.syntax - выделение/синтаксис/
папка. Тогда иди к Настройки -> Настроить Kate -> Редактор компонент -> Открыть/Сохранить -> Режимы и файлы
Выберите Markup/Jinja2/Ямл
Откройте Переменные
раскрывающийся, а затем установить оба ширина отступа
Ширина вкладки
к 2
и Отступ с использованием
к Пространства
Отказ
Вам также нужно ассоциировать * .sls
Файлы с синтаксисом Highlighter:
sed -i'' -e 's/\(\*\.yml\)"/\1;*.sls"/' yaml-jinja2.xml
Sed
Команда выше эквивалентна патче ниже:
--- yaml-jinja2.xml.orig 2018-10-25 02:39:31.000000000 +0700 +++ yaml-jinja2.xml 2018-10-25 02:39:40.000000000 +0700 @@ -3,7 +3,7 @@
Midnight Commander
Midnight Commander — это Олди, но Дуби для тех из нас, кто использовал Православные файловые менеджеры Вернувшись в 90-х и не могу жить без одного. Лично я использую его для быстрого перемещения дерева файловой системы и просматривать файлы, не открывая их в моем основном редакторе. По словам Этот билет , из коробки, Meditit
Основные моменты * .YML
и * .yaml
файлы и Понимает простые переменные Jinja (хотя не поддерживает теги). Кроме того, это не понимает * .jinja
файлы.
Включить * .sls
Выделение Вам необходимо сделать копию по умолчанию Синтаксис
Файл и настроить его немного:
mkdir -p ~/.config/mc/mcedit sed -e 's/\(|YML)\)/|sls\1/' /usr/share/mc/syntax/Syntax > ~/.config/mc/mcedit/Syntax
Sed
Команда выше эквивалентна патче ниже:
--- /home/user/.config/mc/mcedit/Syntax.orig 2017-08-05 04:03:29.000000000 +0700 +++ /home/user/.config/mc/mcedit/Syntax 2018-10-10 19:50:11.390542735 +0700 @@ -271,7 +271,7 @@ file ..\*\\.cl$ OpenCL\sProgram include opencl.syntax -file ..\*\\.(ya?ml|YML)$ YAML\sFile +file ..\*\\.(ya?ml|sls|YML)$ YAML\sFile include yaml.syntax file .\*\\.osl$ OSL\sProgram
Пичарма
Ну, это выглядит там нет Специфичные для соли плагинов для Pycharm. Обязательные пользователи здесь luckier — Pycharm поддерживает JSON Schemas и кто-то из Редхата создал один Отказ Это означает автоматическое завершение кода для Ansible-специфичных структур данных YAML прямо из коробки! Плюс, есть отдельный YAML/Anisible Плагин ( Github ).
Однако (кроме использования неблагоприятных плагинов), вы можете настроить Pycharm, чтобы сделать его работать с соляными состояниями. Нажмите Файл -> Настройки -> Языки и каркасы -> Языки шаблона Python
Выберите Jinja2.
в Шаблон язык
Выпадайте, нажмите кнопку «+» и выберите Ямл
Отказ Это должно включить синтаксис подсветки для YAML + Jinja Combo. Связывать это с * .sls
Файлы, перейдите в Файл -> Настройки -> Редактор -> Типы файлов
Найти Ямл
и добавьте * .sls
расширение.
Другие особенности
- Вы можете переформатировать код YAML с
Реформатский код
действие или через ярлык:CMD + ALT + L
на MacOS/Ctrl + Alt + L
на Windows и Linux - Чтобы настроить настройки стиля YAML, посетите
Файл -> Настройки -> Редактор -> Стиль кода -> YAML
- Руководства отступа включены по умолчанию, но вы можете отключить их через
Файл -> Настройки -> Редактор -> Общие -> Внешний вид -> Показать отступ
Возвышенный текст
Расширение доступно на Github Отказ Чтобы установить его, нажмите Предпочтения -> Управление пакетом -> Установить пакет
Поиск SaltStack
и нажмите, чтобы установить. Также рекомендуется установить Отдельное расширение Для Jinja (пойти в Управление пакетом
и поиск Jinja2
).
Функции
- Синтаксис выделения для
* .sls
файлы - Синтаксис выделения для
* .j2.
Файлы, если вы устанавливаете расширение Jinja - Несколько фрагменты для Цзинья (развесел из sublime-jinja2 )
- Несколько фрагменты Для часто используемых соленых состояний модули, такие как
файл
иписать
Руководства отступа включены по умолчанию, но вы также можете установить «Indg_Guide_Options»: [«Draw_Normal», «Draw_ Accive»]
В настройках, чтобы выделить в настоящее время активное руководство.
Погибший
Тебе нужна как соль-Vim. и Vim-Jinja2-синтаксис Отказ
Функции
- Синтаксис выделения для
* .sls
Файлы иSaltfile.
- Синтаксис выделения для
* .jinja2.
,* .j2.
и* .jinja
файлы - Правильные настройки вдавливания
Пространство
Ключ попытается сложить/развернуть область- Визуально выбранный блок может быть с отступом и доменными с помощью
<
и>.
Если вы используете VIM 8 или выше, вы можете пропустить маршрут патогена/Vundle и установить плагины напрямую:
mkdir -p ~/.vim/pack/plugins/start cd !$ git clone https://github.com/saltstack/salt-vim.git salt.vim git clone https://github.com/Glench/Vim-Jinja2-Syntax.git jinja2.vim
Затем добавьте следующие строки к вашему .vimrc.
:
syntax on set nocompatible set modeline filetype plugin indent on let g:sls_use_jinja_syntax = 1
Вы также можете рассмотреть VIM-ententguides , отступ или indentline Отказ Некоторые люди используют Перекрестие подсветки Отказ
Визуальный студийный код
Расширение VSCode для SaltStack доступно на Рынок Отказ Чтобы установить его, нажмите Файл -> Настройки -> Расширения
Затем найдите SaltStack
и нажмите Установить. Исходный код доступен на Гадость
Функции
- Имеет синтаксис подсветки для
* .sls
файлы (понимает yaml + jinja combo) - Автозаполнение кронштейнов Jinja
- Складная спряженная линий в Ямле
- Также поддерживает
* .j2.
и* .jinja
расширения
Если вы раздражены дополнительно закрывающим кронштейном, добавленным автозаполнением {%%}}
Добавьте следующий фрагмент на ваш settings.json
Файл ( Файл -> Настройки -> Настройки
Затем нажмите {}
Значок для открытия пользовательских настроек):
"[sls]": { "editor.autoClosingBrackets": "never" }
Финальные советы
Для команд
Если у вас есть команда инженеров, которые регулярно участвуют в общей солевой части дерева, важно установить некоторые конвенции о стиле YAML/Jinja.
Вы можете добавить следующую котелную табличку в каждый файл состояния, но легко забыть и требует некоторой дисциплины:
# -*- coding: utf-8; mode: salt; -*- # vim: ft=sls
В качестве альтернативы вы можете попросить инженеров правильно настроить свои редакторы. Или вы можете принять http://editorconfig.org/ — просто создайте .editorconfig
В вашем ROOT Project и любой совместимый редактор автоматически выберет вашу конвенцию кодирования.
Кроме того, имеет смысл добавить .jinja.
или .j2
Суффикс ко всем шаблонам конфигурации, управляемых солью, чтобы помочь большинству редакторов распознавать синтаксис.
YAML Docs.
- YAML Cheatsheet (также можно использовать с dash )
- Формат ямла (Из документов Symfony)
- ЯМЛ Многочтожество (Хорошая чит-таблица для многослойных струн Yaml)
- Понимание Ямл (из соленых документов)
- YAML идиосинкразия (из соленых документов)
- Ямл Спецификация (авторитетный и всеобъемлющий, но не так просто читать)
Jinja Docs.
- Jinja шаблон дизайнерской документации (Пожалуйста, выберите соответствующую версию Jinja, чтобы соответствовать установленной в вашей солевой среде)
- Понимание Jinja (из соленых документов)
Интернет-Ямл Парсер/ЛИНТЕРЫ
Это может быть полезно, если вы не хотите или не можете использовать какие-либо редакторные плагины:
- https://github.com/inverity/jinjabread (Сделано специально для соли)
- http://yaml-online-parser.appspot.com/
- https://www.json2yaml.com/
- http://www.yamllint.com/
Кроме того, Ямл это суперс Джосон Таким образом, вы могли бы просто использовать квадратные скобки для списков и курчавых для словарей:
/etc/http/conf/http.conf: file.managed: - source: salt://apache/http.conf - mode: 644 - template: jinja - context: { custom_var: "override" } - defaults: { custom_var: "default value", other_var: 123 }
Если вы хотите быть уведомленным о таких советах, как этот, вы можете подписаться на Список рассылки Отказ
Кроме того, вы можете следовать за мной на Twitter Где я периодически публикую такие вещи, как это:
Оригинал: «https://dev.to/marnold/text-editor-plugins-for-salt-states-and-yamljinja-54pg»