Формула tpl-shortcut-formula
Формула-шаблон SaltStack для добавления ярлыка приложения, url-адреса и символической ссылки (symlink) на рабочий стол пользователя.
Доступные состояния
Состояние tpl-shortcut
Мета-состояние (состояние, которое включает в себя другие состояния).
Устанавливает ссылку на Web Mail.
Имеет зависимость от tpl-shortcut.install через список include.
Состояние tpl-shortcut.install
Создает символическую ссылку или файл Desktop Entry (приложение, ссылку) на рабочем столе пользователя (папка ~/Desktop).
Если в хранилище Pillar в поле user.usernames не указано ни одного пользователя, пользователи будут настраиваться
по имени каталога в /home.
Если в полях link.name и link.url значения не заданы, формула не будет выполнена, и отобразится соответствующее
уведомление.
Состояние tpl-shortcut.clean
Удаляет символическую ссылку или файл Desktop Entry (приложение, ссылку) c рабочего стола пользователя (папка ~/Desktop).
Если в хранилище Pillar в поле user.usernames не указано ни одного пользователя, пользователи будут настраиваться
по имени каталога в /home.
Если в полях link.name и link.url значения не заданы, формула не будет выполнена, и отобразится соответствующее
уведомление.
Пример файла pillar.example
tpl-shortcut:
# Переопределите значение map.jinja
lookup:
# Переопределите параметры ссылки на приложение
application:
# Задайте имя файла ссылки на рабочий стол
name: "bash_application"
# Задайте параметры ссылки
link:
# Задайте имя файла ссылки на рабочий стол
name: "ya-ru_link"
# Задайте параметры ссылки
symlink:
# Задайте имя файла символической ссылки на рабочий стол
name: "distro-info_debian_symlink"
# Задайте полный путь к целевому файлу в файловой системе Миньона
target: "/usr/share/distro-info/debian.csv"
# Задайте параметры пользователей
user:
# Укажите список имен пользователей для обновления сертификатов. Если пользователи
# не заданы, пользователи будут выбраны по имени каталога в /home
usernames: [
"username_1",
"username_2",
]
Написание формулы типа tpl-shortcut-formula
-
Скопируйте формулу-шаблон (
tpl-shortcut) в новую директорию с новым названием (my-shortcut):$ tar -xvf ~/Downloads/inno-lcm-salt-formulas-0.9.0.tar.gz \ --strip-components 3 \ -C ~/ \ ./formulas/tpl-shortcut-formula/tpl-shortcut $ cp -R ~/tpl-shortcut/ ~/my-shortcut && cd ~/my-shortcut -
Измените файл состояний
install.sls(создание ярлыков):-
Рекомендуется для соблюдения уникальности придерживаться именования вида: formula-name-state-name-other-state-name-module-function-some-id. Например, ID состояния для создания symlink будет выглядеть как:my-shortcut-install-file-symlink-{{ username }}-symlink. -
Измените значение аргумента
contentsдля функции из состояния:my-shortcut-install-file-managed-{{ username }}-application(ярлык для приложения). Например, имя (Name), запускаемую программу (Exec) и иконку ярлыка (Icon). -
Измените значение аргумента
contentsдля функции из состоянияmy-shortcut-install-file-managed-{{ username }}-link(ярлык для url). Например, имя (Name) и url-адрес (URL).# -*- coding: utf-8 -*- # vim: ft=sls {#- Get the `tplroot` from `tpldir` #} {%- set tplroot = tpldir.split('/')[0] %} {%- from tplroot ~ "/map.jinja" import mapdata as tplshortcut with context %} {%- from tplroot ~ "/_usernames_lib.sls" import usernames with context %} {#- Create application link #} {%- if tplshortcut.application.name %} {%- for username in usernames %} my-shortcut-install-file-managed-{{ username }}-application: file.managed: - name: /home/{{ username }}/Desktop/{{ tplshortcut.application.name }}.desktop - user: {{ username }} - group: {{ username }} - makedirs: True - contents: | [Desktop Entry] Type=Application Name=Run bash manpage Exec=man bash Terminal=true Icon=dictionary {%- endfor %} {%- endif %} {#- Create url link #} {%- if tplshortcut.link.name %} {%- for username in usernames %} my-shortcut-install-file-managed-{{ username }}-link: file.managed: - name: /home/{{ username }}/Desktop/{{ tplshortcut.link.name }}.desktop - user: {{ username }} - group: {{ username }} - makedirs: True - contents: | [Desktop Entry] Type=Link Name=Love DuckDuckGo! URL=https://duckduckgo.com {%- endfor %} {%- endif %} {#- Create symlink #} {%- if tplshortcut.symlink.name %} {%- for username in usernames %} my-shortcut-install-file-symlink-{{ username }}-symlink: file.symlink: - name: /home/{{ username }}/Desktop/{{ tplshortcut.symlink.name }} - target: {{ tplshortcut.symlink.target }} - user: {{ username }} - group: {{ username }} - makedirs: True {%- endfor %} {%- endif %}
-
-
В файле состояний
clean.sls(удаление ярлыков) измените ID состояний:# -*- coding: utf-8 -*- # vim: ft=sls {#- Get the `tplroot` from `tpldir` #} {%- set tplroot = tpldir.split('/')[0] %} {%- from tplroot ~ "/map.jinja" import mapdata as tplshortcut with context %} {%- from tplroot ~ "/_usernames_lib.sls" import usernames with context %} {#- Delete application link #} {%- if tplshortcut.application.name %} {%- for username in usernames %} my-shortcut-install-file-managed-{{ username }}-application: file.absent: - name: /home/{{ username }}/Desktop/{{ tplshortcut.application.name }}.desktop {%- endfor %} {%- endif %} {#- Delete url link #} {%- if tplshortcut.link.name %} {%- for username in usernames %} my-shortcut-install-file-managed-{{ username }}-link: file.absent: - name: /home/{{ username }}/Desktop/{{ tplshortcut.link.name }}.desktop {%- endfor %} {%- endif %} {#- Delete symlink #} {%- if tplshortcut.symlink.name %} {%- for username in usernames %} my-shortcut-install-file-symlink-{{ username }}-symlink: file.absent: - name: /home/{{ username }}/Desktop/{{ tplshortcut.symlink.name }} {%- endfor %} {%- endif %} -
Измените файл
map.jinja(словарь со значениями по умолчанию):-
Измените имя ключа для словаря в хранилище Pillar, используемого для динамического переопределения значений по умолчанию.
Рекомендуется для соблюдения уникальности придерживаться именования вида: formula-name:lookup. Например,my-shortcut:lookup. -
Измените значение
application.name. -
Измените значение
link.name. -
Измените значения
symlink.nameиsymlink.target.{% set mapdata = salt['grains.filter_by']({ 'default': { 'application': { 'name': 'man_application', }, 'link': { 'name': 'duckduckgo_link', }, 'symlink': { 'name': 'distro-info_ubuntu_symlink', 'target': '/usr/share/distro-info/ubuntu.csv' }, 'user': { 'usernames': [ ], }, }, }, merge=salt['pillar.get']('my-shortcut:lookup'), base='default') %}
-
| После того как формула будет написана, следуйте инструкциям по работе с формулой. |