По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
В предыдущей статье мы рассмотрели, как можно использовать файлы для того, чтобы не засорять код Terraform. В данной статье мы посмотрим, как можно использовать динамические файлы (шаблоны) для написания кода Терраформ. Что такое динамический файл? В данном контексте это файл, в который мы посылаем всякие переменные и файл генерируется в зависимости от наших переменных. Когда в коде мы используем конструкцию user_data = file (), по сути мы делаем копировать-вставить из файла, который мы указываем в качестве аргумента функции. Теперь мы будем использовать другую функцию ее синтаксис немного отличается: user_data = templetfile(). Данная функция принимает два параметра. Первый параметр имя файла. Далее ставится знак , и затем фигурные скобки {}, в которых мы указываем переменные, которые мы хотим отправить в файл шаблона. Рекомендую для читаемости кода и удобства работы файл, в который будут отправляться переменные переименовывать в имя_файла.tpl. Обще принятое расширение для файла-шаблона. В итоге мы получаем генерированный файл с отправленными в него параметрами. Выглядит это следующем образом. Допустим мы хотим отправить в файл несколько переменных например: f_name = “Olya” , l_name = “Vasilkova”, names = [“Masha”, ”Vasya”, ”Rik”, ”Petya”, “Oleg”] Как видите мы засылаем переменные в файл, мы можем одну переменную или кучу целую отправить, не обязательно что данные переменные будут использоваться. Переменные разные, одиночные мы взяли 2 переменные и одну переменную где много значений. Можно сказать, что массив данных. В предыдущей статье мы создавали html страничку, мы продолжим ее создавать, только с использованием переменных. Берем скрипт из предыдущего урока и начинаем править. Переименовываем файл - cp user_data.sh user_data.sh.tpl. Следующим шагом правка непосредственно самого скрипта с использованием html разметке. Отправляем переменные в файл. Вместо переменных вставятся значение переменных. Далее мы вставляем цикл, чтобы пройтись по значениям переменной names. Получаем в цикле, что x будет равна каждому значению в переменной names. Обратите внимание, что конструкция %{ for x in names ~} и % { endfor~} печататься не будут! Печататься будет то, что находится в цикле Hello to ${x} from ${f_name}. Т.е вот этим скриптом мы генерируем user_data в коде терраформ. Следовательно, наш файл index.html будет с кучей строчек. Теперь нам необходимо, это все запустить. Переходим в командной строке в директорию Lesson-4. И проводим первичную инициализацию terraform init. Результатом успешной инициализации будет следующий вывод команды на экран. Далее даем команду на проверку кода терраформ в том числе убедится, что не создастся ничего лишнего. terraform apply, подтверждаем выполнение команды словом yes. А далее мы можем видеть, как система начинает создание ресурсов. После исполнения мы можем в консоли AWS увидеть созданный ресурс. Обратите внимание, что при создании ресурса user_data шифруется. Это хорошо видно в момент вывода terraform apply. Когда инстанс в консоли AWS запустился, мы можем посмотреть, что у нас содержится в user_data. Для этого необходимо по instance щелкнуть правой кнопкой мыши и вызвать меню. В данном меню выбираем user_data. Появляется следующее окно. Как мы видим на картинке, часть нашего скрипта. Если прокрутить, то он будет там весь со всему принимаемыми значениями. Это функция будет достаточно полезна для контроля переменных, чтобы посмотреть какие данные попали в переменные. Следовательно, на выходе мы получаем в веб браузере следующего вида веб страничку. У нас получилось с помощью переменных и шаблона сгенерировать html файл, то есть наш файл динамичный. Далее уже дело техники подставить его в веб-сервер для отображения и запуска в инстансе AWS. Напоминаю, что IP адрес нашего сервера в AWS можно посмотреть в двух местах. А затем обратиться к веб странице по протоколу http с использованием данного IP адреса в любом браузере. Немного еще функционала - можно не поднимая инстанса посмотреть какие данные получим на выходе. Для этого используем функционал terraform console. Берем часть терраформ файла. Выравниваем в одну строку: templatefile("user_data.sh.tpl", { f_name = "Olya",l_name = "Vasilkova", names = ["Masha", "Vasya", "Rik", "Petya", "Oleg"] }) и вставляем. Как вы видите получаем те данные которые передаются на инстанс в AWS.
img
Коммуникационная платформа Elastix обладает богатым функционалом и привлекательным интерфейсом. В сегодняшней статье мы пошагово разберем процесс настройки внутренних номеров (Extensions) на Elastix версии 4.0 и зарегистрируем программный «open – source» телефон MicroSIP Настройка на Elastix Переходим в web – интерфейс Elastix. Для этого введите IP – адрес АТС в браузере. Откроется окно авторизации. Введите логин и пароль администратора и нажмите Submit: Попадаем в интерфейс администратора IP – АТС. В левом меню навигации переходим в раздел PBX → PBX Configuration, где выбираем раздел настройке Extension, как показано на рисунке ниже (выделено красным): Мы будем подключать софтфон по протоколу SIP, поэтому, выбираем Generic SIP Device и нажимаем Submit: Для работы телефона достаточно создать только 3 реквизита, а именно: User Extension - внутренний номер абонента Display Name - отображаемое имя для абонента secret - пароль. Создается автоматически После заполнения данных полей, нажмите Submit, а затем Apply Config. Этого достаточно для работы софтфона, и если вы хотите сразу перейти к настройке самого программного телефона, нажмите на ссылку ниже, а мы пока рассмотрим все возможные опции в разделе Extensions: Настройка MicroSIP Разберем каждую опцию подробно. Начнем с раздела опций внутреннего номера (Extension Options): CID Num Alias - CallerID, который будет отражаться на телефонах вызываемых абонентов, в качестве определяемого номера. Эта опция может быть полезна в следующей ситуации: например, существует общий номер для сотрудников бухгалтерии (ринг группа). При звонках со своих внутренних номеров на другие экстеншены, у вызываемого абонента будет отражаться привычный номер ринг – группы, на который он обычно звонит для связи с Бухгалтерией. SIP Alias - используется при прямых SIP – звонках. Например, staff@merionet.ru. Outbound CID - исходящий CallerID (как правило, при внешних звонка через транк, провайдер так или иначе будет перекрывать CID). Asterisk Dial Options - перечень опций, передаваемых через команду Dial(). В нашем примере мы имеем значение tr. Здесь «t» означает возможность трансфера звонка вызываемым абонентом, а опция «r», генерирует гудок вызывающему абоненту при звонке. Ring Time - время звонка в секундах, перед отправкой вызова на голосовую почту. Call Forward Ring Time - время звонка в секундах, перед отправкой вызова на указанное направление недоступностей вида «не ответ» или «недоступность». Outbound Concurrency Limit - максимальное количество одновременных исходящих от пользователя вызовов. Call Waiting - данная опция позволяет получать параллельный во время разговора вызов по тому же каналу. Internal Auto Answer - если данное значение выставлено на Intercom, то будет происходить автоматический ответ на входящий вызов. Call Waiting - при включении данной опции, звонящему, будет предложено проговорить свое имя, после чего, звонок продолжится. Вызываемый абонент возьмет трубку и ему будет озвучено имя звонящего, и так же система спросит, ответить ли на этот звонок или нет. Pinless Dialing - если на исходящих маршрутах существует пин – код, то при включении этой опции, пользователю не потребуется его вводить. Emergency CID - при звонках через маршрут, который обозначен как «Аварийный» (Emergency Route), данный CallerID будет передаваться в сторону SIP – провайдеру превалируя над всеми правилами по изменению CID. Queue State Detection - если данный внутренний номер состоит в одной из очередей, то при опциях Use State и Ignore State (использовать или игнорировать состояние соответственно), данный номер будет вызваниваться в зависимости от состояния доступности, или нет. Перейдем к небольшому разделу Assigned DID/CID: DID Description - описание для DID (Direct Inward Dialing). По факту, DID это набранный внешним абонентом номер, при вызове которого звонок будет маршрутизирован на конкретный внутренний номер. Например, вы можете написать «Support» Add Inbound DID - входящий DID для этого внутреннего номера. При звонках на него вызов пробросится сразу на экстеншен. Add Inbound CID - CallerID, вызовы с которого, будут маршрутизироваться на внутренний номер . Теперь рассмотрим служебные опции настройки подключаемого устройства: dtmfmode - метод передачи DTMF сигналов. Как правило, это RFC 2833 canreinvite - при включении данной опции будут поддерживаться re-invite по протоколу SIP context - контекст обработки вызова. Советуем здесь оставить from-internal, если вы не создаете кастомные контексты. host - здесь можно указать IP – адрес, с которого будет подключаться устройство. Советуем оставить dynamic. - метод передачи DTMF сигналов. Как правило, это RFC 2833 trustrpid - доверять ли идентификатору RPID (Remote-Party-ID) sendrpid - должен ли Asterisk отправлять RPID на это устройство type - выберите тип устройства. Как правило, для конечных телефонных аппаратов используется friend nat - выберите опцию трансляции сетевых адресов. Рекомендуем оставить RFC 3581 port - оставьте стандартный SIP – порт 5060 qualify - при включенной данной опции, Asterisk посылает сообщения, в которых опрашивает состояние устройства qualifyfreq - частоты отправки сообщений qualify. Указывается в секундах. transport - транспортный протокол для передачи данных. avpf - видео/аудио профиль для передачи данных WebRTC icesupport - включить или выключить поддержку ICE (Interactive Connectivity Establishment), который позволяет корректную работу пользователей, находящихся за фаерволом. dtlsenable - использовать ли для этого устройства безопасный транспортный протокол DTLS (Datagram Transport Layer Security) dtlsverify - совершать ли проверку сертификата DTLS у данного устройства dtlssetup - на каких направлениях вызова использовать DTLS – входящих, исходящих или сразу обоих. encryption - использовать ли шифрование по протокол SRTP dial - как вызвать это устройство. В нашей примере, это SIP/111, то есть набор через SIP канал номера 111. mailbox - ящик голосовой почты для устройства deny - подсеть, с которой запрещен доступ к данному устройству permit - подсеть, с которой разрешен доступ к данному устройству Теперь давайте рассмотрим раздел Recording Optoins: Inbound External Calls - записывать ли входящие из города на этот внутренний номер Outbound External Calls - записывать ли исходящие в города с этого внутреннего номера Inbound Internal Calls - записывать ли входящие с других внутренних номеров на этот номер Outbound Internal Calls - записывать ли исходящие звонки с этого внутреннего номера на другие внутренние номера On Demand Recording - разрешить ли запись по требованию на этом телефоне. Запись сохраняется, если пользователь произведет набор сервисного кода *1 Record Priority Policy - приоритет записи разговоров. Например, если произошел разговор между двумя внутренними телефонными аппаратами, и у одного из них параметр, равен 20, а у другого 10, тот, у которого параметр выше сможет сохранить запись разговора, а тот, у которого ниже – нет. Теперь разберемся с голосовой почтой: Status - включить или выключить голосовую почту. Voicemail Password - пароль доступа к голосовой почте. Пароль должен содержать только цифры Email Address - адрес электронной почты, куда будут отправляться голосовые сообщения. Email Attachment - отправлять ли аудио голосовой почты в формате вложения в электронном письме Play CID -озвучивать ли абоненту, который собирается прослушать голосовую почту, номер звонящего. Play Envelope - озвучивать ли абоненту при прослушивании голосовой почты дату и время звонка Delete Voicemail - удалять ли звуковой файл с сервера после отправки его по электронной почте. И наконец, разберем важный пункт, который называется Optional Destinations, который отвечает за маршрутизацию вызова при таких обстоятельствах как «не ответ», «занято» и «недоступен»: No Answer - куда отправлять вызов, если абонент не ответил на звонок Busy - куда отправлять вызов, если абонент занят разговором Not Reachable - куда отправлять вызов, если телефонный аппарат абонента недоступен Настройка MicroSIP Итак, после того, как мы создали учетную запись для внутреннего номера, перейдем к настройке программного телефона. Переходим по пути Меню → Добавить аккаунт SIP сервер - IP – адрес Elastix Пользователь - внутренний номер созданного абонента Домен - так же указываем IP Эластикса Логин - еще раз указываем внутренний номер абонента Пароль - копируем пароль из поля secret Нажимаем «Сохранить». Как видим, наш софтфон зарегистрировался и находится в статусе «Онлайн»:
img
Все, что вам нужно знать о Linux, можно найти в man. Это интерфейс, используемый для просмотра справочных руководств системы, отсюда и название: man - сокращение от manual. Например, можно выполнить поиск команды для выполнения задачи, даже если неизвестно, как она называется. Но как найти само руководство? В этой статье расскажем о некоторых скрытых возможностях этой команды. Встроенное руководство Linux Существует старая шутка: единственная команда, которую нужно знать в Linux это man – точка входа в руководство пользователя. Несмотря на то, что тут есть доля правды, но даже сама команда man может ввести в тупик вначале. Вернее, поиск информации с помощью этой команды. Наверное, у всех был случай, когда знали, что вы хотите сделать, но не знали какая команда поможет выполнить поставленную задачу. Это похоже на то, как искать слово в словаре при том, не зная самого слова. Итак, как же можно найти, то что нужно? С man можно легко обойти эту сложность. Цифры - еще одна сложность перед новичками. Что они означают? Вы документации или в просторах Интернета часто можно увидеть такие ссылки, man (2) или man (5). Также можно встретить ссылки на команды, за которыми следуют цифры, такие как mount (2) и mount (8). Конечно, не может быть больше одной команды mount, верно? Как мы увидим, цифры важны и их понять относительно просто. Проще говоря, вести поиск по man достаточно легко если один раз понять, как это работает. На самом деле, есть несколько способов поиска и навигации в man. Как перейти к руководству Чтобы запустить руководство по какой либо-команде достаточно в командной строке набрать команду man, а затем через пробел название команды, по которой нужно руководство. После этого система запустить руководство по команде – конечно, если найдет. Давайте посмотрим, что покажет команда man по man: man man Ниже показано руководство по команде man: Как видно, это первая страница руководства man (1). Чтобы просмотреть другие страница выполните одно из следующих действий: Чтобы прокрутить по одной строчке: используйте колесо мыши, стрелки вверх или вниз и клавишу Enter. Для перехода на следующую страницу: Нажмите клавишу пробел, или же кнопки PgUp PgDown. Для перехода в начало и конец руководства: Клавиши Home и End Если нажать H (заглавная h), то можно перейти в раздел помощи, где можно найти альтернативные комбинации, которыми можно пользоваться для навигации. Чтобы выйти из руководства нажмите Q. Структура руководства В начале страницы можно увидеть Название (Name) и Описание (Synopsis). Есть определённые правила оформления страницы руководства. Есть руководства по командам, программам, функциям и т.д. Не во всех руководствах есть эти заголовки, так как некоторые из них применимы только к конкретным командам. Ниже приведён список заголовков, которые можно встретить в руководстве. Название (Name): название команды, по которой просматривается руководство Синопсис (Synopsis): Краткое описание команды и синтаксиса Конфигурация (Configuration): Детали настройки для устройства Описание (Description): Описание основного назначения программы Опции (Ключи): опции которые принимает команда Выходной статус (Exit Status): Возможные значения, возвращаемые командой при завершении работы Возвращаемое значение (Return Value): Если руководство запущено по какой-то библиотеке, то это указывает на значение, которое вернет библиотека функции, которая вызвала ее. Ошибки (Errors): Список всех значение, которые может принимать errno в случае ошибки выполнения команды Окружение (Environment): Список переменных окружения, которые относятся к команде или программе Файлы (Files): Список файлов, которые использует команда или программа, например, конфигурационный файл Атрибуты (Attributes): Список различных атрибутов команды Версии (Versions): Список изменений в ядре Linux или библиотеке, которую использует команда Соответствие (Conforming to): Описание любых стандартов, которым может соответствовать команда, например, POSIX. Заметки (Notes): Дополнительные заметки Баги (Bugs): Известные ошибки Примеры (Examples): Один или несколько примеров использования команды Авторы (Authors): Люди, которые разработали и поддерживают команду Просмотрите также (See Also): Рекомендуемые материалы по команде Разделы руководства Прокрутив ниже на несколько страниц увидите список разделов в данном руководстве: Это следующие разделы: Основные команды (General commands): Команды, которые используются в командной строке Системные вызовы (System calls): Функции ядра, которые может вызвать программа Функции библиотек (Library functions): общий набор функций и возможностей, используемых программами Форматы файлов и соглашения (File formats and conventions): Форматы файлов как passwd, cron table, tar архивы Специальные файлы (Special files): обычно устройства, например, найденные в /dev, и их драйверы. Игры (Games): Описание команд, например, fortuna, которая при запуске показывает цитаты из БД Дополнительно (Miscellaneous): Описание таких вещей как inodes, параметры загрузку Администрирование системы (System administration): Команды и демоны, зарезервированные для использования root-ом. Распорядок ядра (Kernel Routines): Информация, касающаяся внутренних операций ядра. Сюда входят функциональные интерфейсы и переменные, которые могут быть использованы программистами, которые разрабатывает драйвера устройств. Цифры в скобках рядом с командой указывают на раздел руководства. Например, man (1) означает первый раздел руководства, которая описывает работу команды man. На скриншоте выше видна ссылка на man (7). Это значит, что подробную информацию о команде можно найти в другом разделе. Когда впервые открываем руководство по команде, оно показывает man (1). Если ввели команду man без указания раздела, команда будет искать переданные параметр во всех разделы по очереди и конечно же первым выведет первый раздел. Если нужно найти информацию в конкретном разделе нужно передать команде номер этого раздела. Например, чтобы открыть седьмой раздел руководства по команде man введем следующую команду: man 7 man Руководство откроется с седьмого раздела: Эта страница руководства содержит инструкции по созданию руководства. Она описывает формат файлов и макросы, которые можно использовать для автоматизации части работы. man (1) же в начале руководства описывает как вообще использовать саму команду man. Поиск записей в разделах В основном, если нужно просто узнать, как пользоваться той или иной командой, не надо указывать номер раздела. man найдёт стандартную запись в первом разделе руководства, которая описывает как нужно пользоваться командой. Иногда же, в поиске нестандартной информации, нужно открыть конкретный раздел, содержащий запись по команде. В Linux легко можно найти разделы, в которых встречается нужная записб. Каждое руководство обладает названием и кратким описанием. Ключ –f (whatis) ведёт поиск по заголовкам и возвращает все вхождения. Например, введем следующую команду: man -f man Команда нашла два совпадения для команды man с разделами и кратким описанием. Однако будьте осторожны - некоторые записи имеют одинаковое название, но описывают разные команды и функции. Например, введём следующую команду: man -f printf Как видно, для команды printf были найдены две записи: одна в первом разделе, и другая в третьем разделе. Однако это разные команды. Информация в разделе 1 описывает команду printf командной строки, которая форматирует данные при выводе в окно терминала. В третьем же разделе описывается семейство функций библиотеки printf в языке программирования C. Также возможен поиск по кратким описаниям, а также заголовкам страниц. Для этого используется параметр -k (apropos). Это также будет искать соответствия искомому термину поиска внутри других, более длинных слов. Вводим следующее: man -k printf Многие из этих команд описаны в одних и тех же информационных страницах, поскольку их основные функциональные возможности в основном одинаковы. Справочная страница для vprintf описывает функциональность 10 команд, перечисленных на рисунке выше. Эту функцию можно использовать для поиска информации, для выполнения конкретной задачи, даже если не знаете имя команды, которую хотите использовать. Допустим, нужно изменить пароль учетной записи пользователя. Мы можем искать любые команды, которые упоминают "user" в заголовках или описаниях страницы. Затем его можно пропустить через функцию grep для поиска записей, содержащих слово "password". Для этого нужно ввести следующую команду: man -k 'user ' | grep password Так как слово user мы выделили одинарными кавычками и в конце поставили пробел, команда будет искать только слово “user”, а не “users”. Бегло просмотрев результат, можно заметить, что самая подходящая команда это passwd. Так как правило использования указано в первом разделе руководства, не нужно указывать конкретный раздел: man passwd Допустим на нужна команда, которая выводит количество слове в текстовом файле. Набираем в командной строке, что-то подобное: man –k word | grep count Чтобы узнать все, что нужно знать о подсчете слов, введите следующую команду: man wc Говоря о wc, мы также можем в качестве значения передать параметру –k точку ., что означает любой символ. А затем передать вывод команде wc, которой передадим еще и параметр –l (lines), на выводе мы получим число страниц руководства. Чтобы сделать все это введем команду: man -k . | wc -l Итого, у нас 6 706 страниц руководства, но не пусть вас не путает, если у вас это число отличается, так как объем руководства напрямую зависит от установленных в системе программ и предустановленных справочников. Поиск по руководству Также есть возможность вести поиск по самому руководству. Например, давайте рассмотрим руководство по команде history: man history Чтобы вести поиск в следующих страницах от текущей вводим символ прямой косой черты / и набираем искомое слово. Результат этих действий будет отображаться внизу командной строки. Чтобы начать поиск нажимаем Enter. Система выведет и выделит первое совпадение по искомому слову: Чтобы перейти к следующему результату нажмите n, а чтобы перейти к предыдущим результатам – N. Включить или выключить подсветку найденного слова можно сочетанием клавиш Esc+U. Если же дошли до конца руководства, но не нашли нужную информацию, то можно вести поиск в обратном направлении. Для этого нажимаем ? и набираем нужный текст: Также можно перемещаться вперед и назад по найденным результатам. Есть другой способ поиска по руководству. Он скрывает все строки, которые не содержат совпадения с искомым словом, поэтому лучше использовать номера строк с этим методом. Если набрать –N и нажать Enter во время просмотра руководства, то радом со строками отобразятся номера строк. Теперь нажимаем на &, набираем искомое слово и нажимаем Enter. Теперь отобразятся только строки, в которых найдено искомая фраза: Просмотре вывод можно найти наиболее интересные результаты. Мы видим, что строка 292 наиболее подходящая и хотим просмотреть данный раздел руководства. Чтобы показать все снова держим нажатым & и нажимаем Enter. Теперь набираем номер строки: 292, а затем букву «g», чтобы перейти к указанной строке. Как только мы нажмем «g» нас перебросит на 292 строку (именно поэтому на скриншоте выше не показана буква «g»). Чтобы убрать нумерацию строк достаточно набрать –n и нажать Enter. Прочитайте волшебное руководство На страницах руководства много полезной информации. Даже у команд, которые вы думаете, вы хорошо знаете, есть такие возможности, о которых вы никогда не слышали. Вы также определенно найдете команды, о существовании которых вы не знали. С таким количеством различных способов поиска и отслеживания информации, потрясающе иметь под рукой такую команду.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59