Встроенные переменные Calculate 2.2¶
Переменные Calculate 2.2 используются в шаблонах а также в логике программы.
В шаблонах определение переменной заменяется значением переменной.
Описание переменной¶
Описание каждой переменной состоит из двух частей:- параметры переменной (название, права на запись, будет ли напечатана и.т. д)
- метод определения значения переменной (необязательная часть)
- файл параметров переменных;
- файл методов определения значений переменных.
- cl_vars.py - параметры переменных
- cl_fill.py - методы определения значений переменных
- cl_vars_desktop.py - параметры переменных
- cl_fill_desktop.py - методы определения значений переменных
Аналогично для других пакетов.
Параметры переменной.¶
Переменная имеет следующие параметры.- value - значение переменной, по умолчанию - пустая строка
- mode - режим доступа к переменной для пользователя, по умолчанию только для чтения. Режимы ("r" - чтение, "w" - запись)
- official - переменная для внутреннего использования в программе, по умолчанию флаг выключен. Значения (True - внутреннее использование, False - доступна всем). Если official=True - переменная не выводится на печать.
- dynamic - в случае dynamic=True, при каждом вызове переменной будет вызван метод определения (осторожно, возможно рекурсивное зацикливание в случае циклических зависимостей переменных), по умолчанию dynamic=False. Значения (True - постоянный вызов метода определения, False - метод определения вызывается один раз при первом обращении(при последующих обращениях выдается сохраненное значение полученное при первом обращении))
class Data:
# имя компьютера
os_net_hostname = {'mode':"w"}
# разрешенные сети
os_net_allow = {value:"192.168.0.0/24"}
# ip на всех интерфейсах
os_net_ip = {}
В этом примере будут по требованию созданы следующие переменные (значения переменных при отсутствии методов заполнения)
- os_net_hostname - (значение переменной "", пользователь может изменить значение)
- os_net_allow - (значение переменной "192.168.0.0/24", пользователь не может изменить значение)
- os_net_ip - (значение переменной "", пользователь не может изменить значение)
Метод определения значения переменной¶
Название метода определения значения переменной состоит из 'get_' и имени переменной.
Пример метода определения значения для переменной os_net_ip:
class fillVars()
def get_os_net_ip(self):
return "192.168.0.1"
В этом примере значение переменной os_net_ip будет равно 192.168.0.1
Если для переменной нет метода определения значения, значением этой переменной будет значение по умолчанию из параметров переменной.
Файлы хранения параметров и методов определения значений¶
Обычно для каждого пакета утилит Calculate 2.2 используется два файла хранения параметров переменных, и два файла хранения методов определения переменных.
Например для пакета calculate-desktop это:
- cl_vars_desktop.py
- cl_vars.py
- cl_fill_desktop.py
- cl_fill.py
Где, первый из файлов - файл пакета, второй файл из библиотеки calculate-lib.
Запись значения переменной в файл¶
Значение переменной может быть записано в файл для сохранения и последующего чтения.
Пути к файлам хранения значений переменных находятся в переменной cl_env_path:- /etc/calculate/calculate.env
- /var/calculate/calculate.env
- /var/calculate/remote/calculate.env
Значение переменной сохраняется в формате samba.
Пример сохраненного значения переменной пакета calculate-client:
[client] ld_samba_dn = ou=Samba,ou=Services,dc=calculate ld_unix_dn = ou=Unix,ou=Services,dc=calculate
Cекция совпадает с названием пакета [client] calculate-client
Значение переменной может храниться в нескольких файлах хранения переменных, в этом случае значением переменной будет значение сохраненной переменной в последнем обработанном файле. То есть приоритет файлов хранения значений переменных обратный их расположению, самый приоритетный файл последний в списке (Наиболее приоритетный файл /var/calculate/remote/calculate.env).
Алгоритм создания переменной.¶
- Выполняется один раз для всех переменных:
- Поиск переменных в файлах хранения значений переменных
- Поиск параметров переменных для переменных найденных в файлах хранения значений
- Поиск методов определения для переменных найденных в файлах хранения значений
- Создание переменных на основании параметров и методов определения значений и присвоение им значений из файлов хранения значений переменных
- Поиск параметров переменной. (поиск в текущем пакете, затем в библиотеке)
- Поиск метода определения значения переменной (поиск в текущем пакете, затем в библиотеке)
- Создание переменной на основании параметров и метода определения значения
Поиск параметров переменной происходит сначала в файле параметров этого пакета, затем в библиотеке (calculate-lib).
Такой алгоритм поиска позволяет переопределить параметры для переменной для которой есть параметры в библиотеке (calculate-lib).
Поиск метода определения значения переменной происходит по алгоритму поиска параметров переменных.
Это позволяет переопределить метод определения значения переменной для которой есть метод в библиотеке (calculate-lib).
Группы переменных¶
Переменные разбиты на группы, в зависимости от типа информации (тип, приложение/служба, функция):- cl - общие настройки calculate
- hr - настройки оборудования
- ld - атрибуты ldap
- os - операционная система
- sr - настройки сервисов
- ur - информация о пользователе
calculate-lib¶
Общие переменные¶
- cl_env_path - список путей к .env файлам в порядке приоритета, от низкого к высокому.
- cl_pass_file - полный путь к обрабатываемому в данный момент конфигурационному файлу
- cl_pass_step - first/next - проход при наложении шаблона (первый, последующие)
- cl_pass_action - действие программы, используется для выбора директории с шаблонами:
- profile - генерация профиля пользователя
- install / uninstall - установка и удаление программы
- domain / undomain - ввод и вывод из домена
- hr_virtual - название виртуальной машины (virtualbox, vmware, qemu)
- os_arch_machine - архитектура системы (i686, x86_64)
- os_linux_name - полное название системы (прим: Calculate Linux Desktop)
- os_linux_shortname - короткое название системы (прим: CLD)
- os_linux_subname - оконный менеджер системы (прим: KDE)
- os_linux_ver - версия системы (прим: 10.2)
- os_locale_lang - язык системы (прим: ru_RU)
- os_locale_language - язык системы (прим: ru)
- os_locale_locale - локаль системы (прим: ru_RU.UTF-8)
- os_locale_xkb - раскладка клавиатуры для X (прим: us,ru(winkeys))
- os_locale_xkbname - названия используемых раскладок клавиатуры для X (прим: us,ru)
- os_net_allow - разрешенные сети (прим: 10.0.0.0/24)
- os_net_domain - домен сети (прим: domain.ru)
- os_net_hostname - имя хоста (прим: comp1)
- os_net_ip - список ip адресов на всех интерфейсах (прим: 10.0.0.53)
- os_root_dev - корневой раздел файловой системы (прим: /dev/sda3)
- os_root_type - тип носителя в котором находится корневой раздел (ram, hdd, usb-hdd, livecd)
calculate-client¶
- cl_name - имя программы (прим: calculate-desktop)
- cl_template_path - список директорий в которых находятся шаблоны
- cl_remote_ftp - DNS имя сервера с настроенным сервисом FTP под управлением утилит Calculate2 (прим: ftp.domain.ru)
- cl_remote_host - DNS имя сервера с настроенным сервисом Samba под управлением утилит Calculate2 (прим: office.domain.ru)
- cl_remote_pw - пароль Samba пользователя client для подключения к серверу под управлением утилит Calculate2
- cl_root_path - путь к директории относительно которой происходит наложение профилей на файлы системы (прим: /)
- cl_ver - версия программы (прим: 2.2.0)
- hr_laptop - если компьютер ноутбук - его производитель
- hr_video - название производителя видеокарты (прим: ati)
- hr_x11_height - разрешение X по вертикали (прим: 1024)
- hr_x11_standart - ближайший стандартный размер изображения к текущему разрешению (прим: 1280x1024)
- hr_x11_video_drv - название используемого видеодрайвера (прим: radeon)
- hr_x11_width - разрешение X по горизонтали (прим: 1280)
- ld_base_dn - базовый суффикс LDAP: dc=calculate
- ld_bind_dn - dn пользователя bind: cn=proxyuser,dc=calculate
- ld_bind_pw - пароль пользователя bind: calculate
- ld_repl_dn - dn пользователя репликации (не используется, оставлена для совместимости)
- ld_samba_dn - dn админстратора сервиса Samba: ou=Samba,ou=Services,dc=calculate
- ld_services_dn - dn ветки всех сервисов: ou=Services,dc=calculate
- ld_unix_dn - dn админстратора сервиса Unix: ou=Unix,ou=Services,dc=calculate
- os_remote_auth - имя сервера, который используется для авторизации (в случае авторизации на сервере под управлением утилит Calculate2 - DNS имя сервера, в ином случае - local)
- os_remote_client - версия программы которой в прошлый раз были применены шаблоны (прим: 2.1.9)
- sr_jabber_crypt - шифрование при работе с настроенным сервисом Jabber под управлением утилит Calculate2 (прим: ssl)
- sr_jabber_host - DNS имя сервера с настроенным сервисом Jabber под управлением утилит Calculate2 (прим: jabber.domain.ru)
- sr_jabber_port - порт для подсоединения к сервису Jabber на сервере под управлением утилит Calculate2 (прим: 5223)
- sr_mail_crypt - шифрование при приеме почты с настроенного сервиса Mail, под управлением утилит Calculate2 (none, tls) (прим: tls)
- sr_mail_host - DNS имя сервера для приема почты, с настроенным сервисом Mail под управлением утилит Calculate2 (прим: mail.domain.ru)
- sr_mail_port - порт для подсоединения к сервису Mail для приема почты, на сервере под управлением утилит Calculate2 (прим: 143)
- sr_mail_send_crypt - шифрование при отправке почты на настроенный сервис Mail, под управлением утилит Calculate2
- sr_mail_send_host - DNS имя сервера для отправки почты, с настроенным сервисом Mail под управлением утилит Calculate2 (прим: mail.domain.ru)
- sr_mail_send_port - порт для подсоединения к сервису Mail для отправки почты, на сервер под управлением утилит Calculate2 (прим: 25)
- sr_mail_type - протокол для получения почты (pop, imap) (прим: imap)
- sr_proxy_host - DNS имя сервера с настроенным сервисом Proxy под управлением утилит Calculate2 (прим: proxy.domain.ru)
- sr_proxy_port - порт для подсоединения к сервису Proxy на сервере под управлением утилит Calculate2 (прим: 8080)
- sr_samba_host - DNS имя сервера с настроенным сервисом Samba под управлением утилит Calculate2 (прим: office.domain.ru)
- ur_fullname - полное имя пользователя (прим: Иванов Иван Иванович)
- ur_group - первичная группа пользователя (прим: it)
- ur_jid - jabber id пользователя (прим: ii@jabber.domain.ru)
- ur_jid_host - имя хоста из jabber id пользователя (прим: jabber.domain.ru)
- ur_login - имя пользователя (прим: ivan)
- ur_mail - почтовый адрес пользователя (прим: ii@mail.domain.ru)
- ur_organization - организация пользователя (прим: Компания "Калкулэйт")
- ur_signature - подпись пользователя (прим: Россия, Санкт-Петербург, пл. Стачек, 4\n \n+7 812 3363632\n+7 495 7727678)