По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Софт DevOps (англ. development и operations) имеет очень большое значение для огромного количества людей, которые занимаются разработкой программного обеспечения. Для того, чтобы разобраться, что такое программа/путь DevOps и как правильно ее использовать на практике, стоит подробнее поговорить о происхождении этого набора техник. Что такое DevOps, что нужно знать и сколько получают DevOps - специалисты? Что такое практика DevOps? DevOps является одним из самых популярных способов взаимодействия между разработчиками того или иного программного обеспечения. При этом, данная практика включает в себя совокупность процессов по созданию, поддержанию и дальнейшему обслуживанию программного обеспечения. Следует сказать, что каждый процесс не может существовать друг без друга, так как именно на этом строится вся суть взаимодействия между разработчиками программного обеспечения. DevOps состоит из следующих задач, которые необходимо решить разработчикам: Непосредственное создание программного обеспечения, направленного на решение тех или иных производственных задач. Тестирование промежуточных версий или уже готовых продуктов программного обеспечения. Эксплуатация и тестирование готовой продукции на практике. Коротко: DevOps специалист должен знать сети (маршрутизацию, коммутацию) хотя бы на уровне CCNA, знать и уметь пользоваться Linux (знать CLI, основные принципы) и уметь программировать. Желательно фуллстэк – то есть фронтенд часть и бэкенд. Идеально уметь программировать на Python :) Вот что такое DevOps. Именно из этих фаз и состоит DevOps. В результате разработки, тестирования и эксплуатации и создаются все условия, которые так необходимы для качественного использования того или иного софта. Чаще всего используются следующие инструменты: Kubernetes Docker, Ansible Logstash Все эти программы предназначены для работы и управления контейнеризированными приложениями. Кроме того, Logstash позволяет искать информацию, полученную с помощью логов. Графический интерфейс Azure DevOps имеет следующий внешний вид: Для чего нужны циклы DevOps? DevOps является последовательной программой, с помощью которой можно добиться максимального количества полученной прибыли в результате того или иного действия, связанного с разработкой программного обеспечения. Практика показала, что если использовать циклы DevOps, то дневные релизы могут выйти на нормальный уровень. Это приведет к тому, что определенная компания, занимающаяся разработкой программного обеспечения, сможет подтянуть свои производственные мощности и как следует наладить получение прибыли без каких-либо негативных проявлений и последствий. Именно для оптимизации внутреннего цикла релизов программного обеспечения и прочих манипуляций, связанных с разработкой, следует использовать совокупность циклов DevOps. В том случае, если организация выпускает несколько проектов одновременно, с помощью DevOps можно увеличить количество и интенсивность выпускаемого продукта. Чем более разнообразные приложения, тем сильнее компании-разработчика помогут инструменты из DevOps. В чём суть DevOps? Суть данного производства заключается в том, чтобы использовать стандартизированное окружение для разработчиков с целью упростить процесс взаимодействия между элементами. Также внедрение стандартных элементов в классическую в среду разработки приводит к тому, что процесс начинает приобретать более стандартизированную и автоматизированную форму. Именно поэтому крупные предприятия с множественными производственными мощностями обращаются к практике DevOps для того, чтобы получить гораздо более оптимизированную производительную мощность. При этом, идеальным примером практики DevOps является автоматизация не только процессов, но ещё и даты. Для того, чтобы производство не занимало много времени, необходимо четко обозначить даты. Эти даты нельзя нарушать, так как дедлайн должен обязательно дисциплинировать разработчиков и не давать им возможности срывать сроки. Какие инструменты имеются в наборе DevOps? Сам по себе, набор практик под названием DevOps включает в себя несколько десятков различных инструментов. На сегодняшний день в список данных инструментов входят следующие варианты: Code - набор полезных инструментов, используемых в качестве основных способов анализа кода в программе; Build - набор инструментов, благодаря которым можно получать огромное количество информация касательно интеграции одного элемента программы в другой, а также получать статус сборки; Тест - пакет программ для всестороннего изучения промежуточных версий или готового продукта. При этом, данные инструменты включают в себя различные возможности, направленные на тестирование программы под разными нагрузками. Для создания промежуточных версий подойдёт инструмент под названием Пакет. При этом, в пакет входит набор артефактов и автоматическая установка приложения. С помощью данного набора программ можно создать всевозможные условия, под которыми основной продукт будет распространяться на персональные компьютеры или мобильные телефоны конечного потребителя. Релиз - ещё один пакет программ, позволяющий управлять изменениями в готовом продукте. Самое интересное, что сюда входят пакеты программ, предназначенных для налаживания выпуска и утверждения определённых партий. Для управления конфигурациями нужно налаживать инфраструктуру. Одноимённой пакет программ нужен для того, чтобы положить определенную коммуникацию между элементами производства. Всё, что с этим связано, может быть использовано в качестве основных инструментов для реализации ряда идей, связанных с прокладывания инфраструктуры. И, наконец, сюда входит так называемый мониторинг, целиком и полностью предназначенной для отладки ошибок, использования готового продукта, а также создания различных условий для его эксплуатации. Сюда можно отнести различные тесты и прочие синтетические инструменты определения эффективности работы программы. Главные участники DevOps Практика включает в себя следующих участников: Прежде всего, в DevOps можно включить все изменения, которые были проведены в штате разработчиков, а также самой программе. Само собой, сюда нужно включить и самих разработчиков, которые трудятся над данной программой. Наборы операций с элементами программ. Сюда входит отдел, занимающийся оценкой качества того или иного продукта. Сюда можно отнести также гарантию качества конечного изделия. Административный отдел осуществляет управление и поддержку готового продукта, а также создание благоприятных условий для оптимизации производства. Сюда также стоит включить координаторов операций. Все действия, которые происходят внутри пакета DevOps, направленный на полную автоматизацию и оптимизацию производства и разработки программного обеспечения и прочих продуктов. В отличие от своих конкурентов, пакет DevOps не ограничивает разработку, а всего лишь привносит в процесс больше порядка и логики. Для чего нужно использовать DevOps? DevOps решает следующие цели: Перво-наперво, это максимальное сокращение затраченного на разработку времени. При этом, сокращение ведёт не только к удешевлению конечного продукта, но ещё и отсутствию срывов дедлайна. Таким образом, конечные продукты смогут выходить гораздо чаще и стабильнее. При этом, это касается как полноценных программ, так и всевозможных патчей вместе с исправлениями. Те компании, которые практиковали DevOps, теперь реже отказываются от новых разработок и релизов. Само собой, с первым пунктом также уменьшилось количество исправлений, связанных с критическими ошибками. Теперь выпускать патчи стало гораздо удобнее для разработчика и издателя. В том случае, если во время создания того или иного продукта произошёл сбой, восстановиться гораздо проще, нежели это было раньше. Это неудивительно, ведь автоматизированное производство позволяет заменить недостающие элементы на другие, при этом не подставив весь штат. В чём заключаются основные преимущества DevOps? Преимуществ использования DevOps масса. Так, например, практика показала, что данный набор действий позволяет автоматизировать и оптимизировать производство таким образом, чтобы все эти манипуляции не коснулись непосредственно самого процесса создания конечного продукта. При этом, архитектура DevOps позволяет разработчикам экспериментировать с различными деталями и элементами системы, тем самым, не ограничивая разработчиков в полете творческой мысли. Теперь разрабатывать конечные продукты гораздо проще, чем это было раньше.
img
Команда ip - это сетевой инструмент Linux для системных и сетевых администраторов. IP означает Интернет-протокол и, как следует из названия, инструмент используется для настройки сетевых интерфейсов. В старых дистрибутивах Linux использовалась команда ifconfig, которая работает аналогично. Однако ifconfig имеет ограниченный диапазон возможностей по сравнению с командой ip. В этом руководстве мы рассмотрим все важные операции, которые команда ip может выполнять в Linux. Как использовать команду ip Команда ip имеет следующий синтаксис: ip [OPTION] OBJECT {COMMAND | help} К объектам OBJECT (или подкомандам), которые вы будете использовать чаще всего, относятся: link (l) - используется для отображения и изменения сетевых интерфейсов address (addr/a) - используется для отображения и изменения адресов протокола (IP, IPv6) route (r) - используется для отображения и изменения таблицы маршрутизации neigh (n) - используется для отображения и управления соседними объектами (таблица ARP) Они могут использоваться как в полной, так и сокращенной форме. Есть много других доступных объектов и команд. Чтобы увидеть полный список, введите следующую команду: ip help Для выполнения команд вы можете использовать либо полную, либо сокращенную формы. Например, ip link и ip l будут давать одинаковые результаты. При настройке сетевых интерфейсов вы должны запускать команды как пользователь root или пользователь с привилегиями sudo. В противном случае вы увидите сообщение RTNETLINK answers: Operation not permitted Предупреждение: по умолчанию система не сохраняет изменения перманентно. После перезапуска Linux-сервера вновь измененное состояние будет потеряно. Есть два способа сделать ваши настройки постоянными: добавить команды в сценарий запуска или отредактировать дистрибутивные файлы конфигурации. Управление и отображение сетевых интерфейсов Вы можете получить список всех параметров команды link, набрав: ip link help Получить информацию о сетевом интерфейсе Чтобы увидеть информацию канального уровня обо всех доступных устройствах (у которых загружен драйвер), используйте команду: ip link show Пример вывода: 1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 12:24:01:8c:67:45 brd ff:ff:ff:ff:ff:ff Если вы хотите, чтобы команда отображала информацию для одного конкретного устройства, введите следующее: ip link show dev [device] Чтобы просмотреть статистику по всем сетевым интерфейсам (такие детали, как переданные или отброшенные пакеты или даже ошибки), используйте: ip -s link Вы также можете увидеть аналогичную информацию для отдельного сетевого интерфейса: ip -s link ls [interface] Если вам нужно больше подробностей, добавьте еще -s в синтаксис: ip -s -s link ls [interface] Чтобы увидеть список только работающих интерфейсов, используйте: ip link ls up Изменить статус сетевого интерфейса Если вы хотите включить сетевой интерфейс, используйте команду: ip link set [interface] up Отключите интерфейс, введя: ip link set [interface] down Команда ip link позволяет вам изменять очередь передачи, ускоряя или замедляя интерфейсы в соответствии с вашими потребностями и аппаратными возможностями. ip link set txqueuelen [number] dev [interface] Вы можете установить MTU (Maximum Transmission Unit) для улучшения производительности сети: ip link set mtu [number] dev [interface] Чтобы узнать все опции команды link, наберите: ip link help Мониторинг и управление IP-адресами Узнайте все команды address, набрав следующее: ip addr help Мониторинг IP-адресов Выведите все устройства с помощью следующей команды: ip addr Чтобы вывести список всех сетевых интерфейсов и связанных IP-адресов, используйте команду: ip addr show Пример вывода: 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 51:55:07:8a:62:44 brd ff:ff:ff:ff:ff:ff inet 192.168.120.24/24 brd 192.168.120.255 scope global dynamic eth0 valid_lft 2900sec preferred_lft 2900sec inet6 fe80::5054:ff:fe8c:6244/64 scope link valid_lft forever preferred_lft forever Вы также можете увидеть информацию об отдельной сети: ip addr show dev [interface] Чтобы получить список всех IPv4 адресов, используйте: ip -4 addr Чтобы получить список всех IPv6 адресов, используйте: ip -6 addr Как добавить IP-адрес в Linux Добавьте IP-адрес в интерфейс с помощью команды: ip addr add [ip_address] dev [interface] Если указанный интерфейс не существует, отобразится сообщение: Cannot find device [interface] Чтобы добавить два адреса на один интерфейс также используйте эту команду: ip address add 192.168.1.41/24 dev eth0 ip address add 192.168.1.40/24 dev eth0 Если вам нужно добавить широковещательный (broadcast) адрес для интерфейса, используйте команду: ip addr add brd [ip_address] dev [interface] Чтобы удалить IP-адрес из интерфейса, выполните следующие действия. ip addr del [ip_address] dev [interface] Управление и отображение таблицы IP-маршрутизации Просмотрите полный список команд ip routeс помощью следующей команды: ip route help Показать таблицу маршрутизации IP Для просмотра всех записей в таблице маршрутизации используйте одну из следующих команд: ip route ip route list Пример вывода: default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.241 metric 100 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.241 192.168.1.1 dev eth0 proto dhcp scope link src 192.168.1.241 metric 100 С помощью команд, приведенных выше, выходные данные отображают все записи маршрута в ядре. Если вам нужно сузить поиск, добавьте объект SELECTOR: ip route list SELECTOR Чтобы просмотреть маршрутизацию для отдельной сети, используйте следующий синтаксис: ip route list [ip_address] Изменить таблицу IP-маршрутизации Чтобы добавить новую запись в таблицу маршрутизации, введите команду: ip route add [ip_address] dev [interface] Или вы можете добавить новый маршрут через шлюз, набрав: ip route add [ip_address] via [gateway_IP] Также команда позволяет добавить маршрут для всех адресов через локальный шлюз, добавив параметр default: ip route add default [ip_address] dev [device] ip route add default [network/mask] via [gateway_IP] Чтобы удалить существующую запись в таблице маршрутизации, используйте команды: ip route del [ip_address] ip route del default ip route del [ip_address] dev [interface] Отображение и изменение IP-записей соседей При помощи команды ip neigh можно манипулировать таблицами ARP (Address Resolution Protocol). Это аналог команды arp Для получения полного списка всех параметров команды neigh используйте: ip neigh help Отображение IP-адресов соседей Чтобы отобразить таблицы соседей, используйте следующую команду: ip neigh show Выходные данные показывают MAC-адреса устройств, которые являются частью системы, и их состояние. Состояние устройства может быть: REACHABLE - означает валидную, достижимую запись до истечения таймаута. PERMANENT - означает постоянную запись, которую может удалить только администратор STALE - означает действительную, но недоступную запись DELAY - означает, что ядро все еще ожидает проверки из устаревшей записи Изменить IP-записи соседей Добавьте новую запись в таблицу с помощью команды: ip neigh add [ip_address] dev [interface] Или удалите существующую запись ARP: ip neigh del [ip_address] dev [interface]
img
Сегодня хотим рассказать про любопытный сценарий, которой наверняка может быть полезен в сфере E-commerce. Речь пойдет про автоматизацию клиентского обслуживания, а именно: /p> Клиент звонит в интернет – магазин и ему предлагают ввести номер заказа; Введенные абонентом значения по DTMF передаются в AGI скрипт; По номеру заказа, мы формируем SQL – запрос к базе данных, где храним информацию о заказах. Из соответствующей таблицы мы получаем статус заказа и имя клиента; Мы формируем строку, которую необходимо озвучить клиенту и отправляем ее на аудио-генерацию в сторону API Yandex.SpeechKit (TTS технология – text to speech); Получаем аудио файл от Yandex, декодируем его в нужный нам формат (.wav, 8k) и воспроизводим клиенту; Удаляем воспроизведенный файл и завершаем звонок клиента; На наш взгляд это любопытная автоматизация. Приступаем к настройке? :) Получение API - токена Yandex.SpeechKit Для знакомства с технологией Яндекс предоставляет бесплатный тестовый период в 1 месяц с момента отправки первого запроса. После этого, чтобы продолжить использование Yandex. SpeechKit Cloud нужно заключить договор. Подробности условия использования можно прочитать здесь. Первым делом перейдите в кабинет разработчика по ссылке https://developer.tech.yandex.ru и нажмите Получить ключ: Имя ключа - введите имя для ключа. Например, Asterisk + TTS; Подключение - выберите из списка SpeechKit Cloud; Запоминаем значение, которое выделено красным на скриншоте выше – это и есть ваш токен. Переходим к настройке AGI – скрипта. Создаем таблицу с заказами Создадим SQL – таблицу, в которой будем хранить данные о заказах. В лабораторных целях, мы развернем ее на том же хосте, что и IP – АТС Asterisk (+ это снизит задержку и процессинг по времени). Итак, вводим следующие команды в консоли сервера (предварительно подключитесь по SSH): use asteriskcdrdb; CREATE TABLE zakazy(name varchar(20),phone varchar(20),nomerzakaza varchar(20),status varchar(20)); INSERT INTO zakazy (name, phone, nomerzakaza, status) VALUES ("Александр", "79257777777", 300388, "Отправлен"); INSERT INTO zakazy (name, phone, nomerzakaza, status) VALUES ("Иван", "79251111111", 476656, "Оплачен"); INSERT INTO zakazy (name, phone, nomerzakaza, status) VALUES ("Сергей", "79252222222", 0089822, "Доставлен"); Мы создали и наполнили таблицу. Теперь необходимо создать пользователя, который сможет иметь SELECT – доступ к таблице: CREATE USER 'логин_mysql'@'localhost' IDENTIFIED BY 'пароль_mysql'; GRANT SELECT ON asteriskcdrdb.zakazy TO 'логин_mysql'; Запомните ваш логин и пароль и переходите к следующему шагу – адаптации скрипта AGI. Традиционно, комментарии к коду после двойного слеша //: AGI - скрипт Ниже представлена структура скрипта: #!/usr/bin/php -q <?php error_reporting(0); require('phpagi.php'); $agi = new AGI(); $result = $agi->get_data('custom/generate', 6000, 10); //принимаем DTMF от клиента; $number= $result['result']; //записываем в переменную введенный клиентом номер заказа; $hostname = "localhost"; // у нас localhost. У вас может быть IP адрес сервера, на котором хранится БД с заказами (настройте предварительно pg_hba.conf на удаленном хосте); $username = "логин_mysql"; // логин, который вы создали этапом ранее; $password = "пароль_mysql"; // пароль, который вы создали этапом ранее; $dbName = "asteriskcdrdb"; mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); mysql_select_db($dbName) or die(mysql_error()); $query = "SELECT * FROM zakazy WHERE `nomerzakaza`='$number';"; // подключаемся и парсим данные по номеру заказа; $res=mysql_query($query) or die(mysql_error()); while ($row = mysql_fetch_assoc($res)) { $status = $row['status']; $name = $row['name']; // имя и статус, полученные из SQL пишем в переменные; }; $str = 'Дорогой '.$name.'! Статус вашего заказа '.$status.' Спасибо за обращение, всего доброго!'; // формируем строку, которую необходимо синтезировать; $qs = http_build_query(array("format" => "wav","lang" => "ru-RU","speaker" => "jane","key" => "ваш_токен","emotion" => "good", "text" => $str)); //описываем переменные, которые будем отправлять в сторону API Яндекса. Вы можете регулировать формат файла, локаль, спикера (мужской или женский голоса) и эмоциональный окрас. Заменить "ваш_токен" на ключ, полученный от API Yandex. SpeechKit Cloud; $ctx = stream_context_create(array("http"=>array("method"=>"GET","header"=>"Referer: "))); $soundfile = file_get_contents("https://tts.voicetech.yandex.net/generate?".$qs, false, $ctx); $file = fopen("file1.wav", "w"); fwrite($file, $soundfile); fclose($file); // получаем аудио файл (сохраняем его как file1.wav); shell_exec('sox -t raw -r 48k -e signed-integer -b 16 -c 1 file1.wav -t wav -r 8k -c 1 /var/lib/asterisk/sounds/ru/custom/output1.wav'); // выполняем преобразование аудио в нужный для Asterisk аудио-формат и копируем его в директорию /var/lib/asterisk/sounds/ru/custom/; shell_exec('chown asterisk:asterisk /var/lib/asterisk/sounds/ru/custom/output1.wav'); shell_exec('chmod 775 /var/lib/asterisk/sounds/ru/custom/output1.wav'); // даем файлу нужные пермишны; $agi->exec('Playback',"custom/output1"); // передаем в AGI команду проиграть полученный аудио – файл; shell_exec('rm -f /var/lib/asterisk/sounds/ru/custom/output1.wav'); shell_exec('rm -f file1.wav'); // удаляем оба файла; Скачать скрипт AGI После загрузки файла, сохраните его с расширением .php Сохраните скрипт под именем tts.php в директории /var/lib/asterisk/agi-bin и дайте следующие команды в консоль сервера: dos2unix /var/lib/asterisk/agi-bin/tts.php chown asterisk:asterisk /var/lib/asterisk/agi-bin/tts.php chmod 775 /var/lib/asterisk/agi-bin/tts.php Адаптируем функционал в «продакшн» Итак, первым делом, открываем файл /etc/asterisk/extensions_custom.conf для редактирования и добавляем в него следующую запись: [tts_menu] exten => s,1,Answer() exten => s,2,AGI(tts.php) Очень хорошо. Сделаем вызов кастомного контекста из FreePBX. Для этого воспользуемся модулем Custom Destinations. Переходим по пути Admin → Custom Destinations и нажимаем Add Destination: Нажимаем Submit и Apply Config. Мы хотим чтобы из главного IVR – меню клиент при нажатии 4 мог бы узнать статус своего заказа. Переходим в главный IVR и в секции IVR Entries добавляем следующее: Готово. Если что – либо не получилось, напишите нам в комментариях, постараемся помочь :)
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59