По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Ansible один из двух (наряду с SaltStack) наиболее популярных программных комплексов третьей волны, которые позволяют удалённо управлять конфигурациями. Тем не менее, в сегменте сетевого оборудования лидирует наш сегодняшний герой (если о ПО можно так сказать). В первую очередь это вызвано тем, что Ansible не поставит перед пользователем задачи устанавливать агент на хостинги, требующие от него управления. Тем паче ежели Ваш аппарат взаимодействует с ними через CLI, то Ansible это то, что доктор прописал.
Одним выстрелом три "электронных зайца"
Вообще, прежде чем знакомить уважаемых читателей со сценарием работы в данном программном комплексе, позвольте перечислить несколько его достоинств:
Ansible позволяет параллельно подключать по SSH к устройствам (пользователь может сам определить их число).
Ansible может передавать задачи на подключённые машины.
Ansible способен разбивать машины, входящих в систему, на подгруппы и передавать специальных задачи для каждой подгруппы.
Конечно, указаны не все достоинства Ansible. Просто в данных 3 пунктах, как мне кажется, отражена основная суть работы в данной среде. Выполняя эти три задачи, система автоматически освобождает Вас от головной боли по делегированию задач и функций в компании. Время деньги, как говорится.
Сценарии
Ну и переходим к основному блюду нашего материала - сценариям (playbook). Они состоят из двух частей набора команд для выполнения (play) и конкретных команд (task). Они выполняются друг за другом.
Все записи данных осуществляются с помощью YAMLа. К несомненным плюсам его использования следует отнести то, что он гораздо лучше воспринимается людьми, нежели тот же самый JSON. Ежели Вы больше привыкли Вы к Python, то тут у Вас не возникнет проблем с адаптацией, так как синтаксис у них схожий.
А вот так происходит процесс написания сценария (комментарии даны построчно к выводу):
Имя сценария обязательный элемент для любого сценария;
Сценарий применяется к машинам в подгруппе cisco-routers;
Выключение режима сбора событий в конкретной машине (если не выключить данный режим, то система потратит много времени на решение ненужных задач);
В разделе task указывается список команд для каждого конкретного случая;
После чего происходит выполнение команды:
PLAY [Run show commands on routers] ***************************************************
TASK [run sh ip int br] ***************************************************************
changed: [192.168.100.1]
changed: [192.168.100.3]
changed: [192.168.100.2]
TASK [run sh ip route] ****************************************************************
changed: [192.168.100.1]
changed: [192.168.100.3]
changed: [192.168.100.2]
PLAY [Run show commands on switches] **************************************************
TASK [run sh int status] **************************************************************
changed: [192.168.100.100]
TASK [run sh vlans] *******************************************************************
changed: [192.168.100.100]
PLAY RECAP ****************************************************************************
192.168.100.1 : ok=2 changed=2 unreachable=0 failed=0
192.168.100.100 : ok=2 changed=2 unreachable=0 failed=0
192.168.100.2 : ok=2 changed=2 unreachable=0 failed=0
192.168.100.3 : ok=2 changed=2 unreachable=0 failed=0
И запускаем проверку выполнения команд:
SSH password:
PLAY [Run show commands on routers] ***************************************************
TASK [run s hip int br] ***************************************************************
Changed: [192.168.100.1] => {“changed”: true, “rc”: 0, “stderr”: “Shared connection
To 192.168.100.1 closed.
”, “stdout”: “
Interface IP-Address
OK? Method Status Protocol
Ethernet0/0 192.
168.100.1 YES NVRAM up up
Ethernet0/1
192.168.200.1 YES NVRAM up up
Loopback0
10.1.1.1 YES manual up up
”, “stdout_lines
“: [“”, “Interface IP-Address OK? Method Status
Protocol”, “Ethernet0/0 192.168.100.1 YES NVRAM up
up “, “Ethernet0/1 192.168.200.1 YES NVRAM up
up “, “Loopaback0 10.1.1.1 YES manual up
up “]}
А что внутри?
А теперь поговорим о начинке сценария. Основу составляют переменные. Это могут быть данные о машине, выводы команд, а также их можно вводить вручную.
Главное не забывать правила написания имён. Их всего два:
имена всегда должны состоять из букв, цифр и нижнего подчёркивания;
имена всегда должны начинаться с буквы.
Переменные могут быть определены разными способами:
Инвентарным файлом
[cisco-routers]
192.168.100.1
192.168.100.2
192.168.100.3
[cisco-switches]
192.168.100.100
[cisco-routers:vars]
ntp_server=192.168.255.100
log_server=10.255.100.1
PLAYBOOKом
-name: Run show commands on router:
hosts: cisco-routers
gather_facts: false
vars:
ntp_server: 192.168.255.100
log_server: 10.255.100.1
tasks:
-name: run sh ip int br
raw: s hip int br | ex unass
-name: run s hip route
raw: sh ip route
Специальными файлами, созданными для групп:
[cisco-routers]
192.168.100.1
192.168.100.2
192.168.100.3
[cisco-switches]
192.168.100.100
Или группами каталогов
|– group_vars _
| |– all.yml |
| |–cisco-routers.yml | Каталог с переменными для групп устройств
| |–cisco-switches.yml _|
|
|–host vars _
| |–192.168.100.1 |
| |–192.168.100.2 |
| |–192.168.100.3 | Каталог с переменными для устройств
| |–192.168.100.100 _|
|
|–myhosts | Инвертарный файл
Команда register позволяет сохранять результаты выполнений модулей в переменные. После чего переменная может быть использована в шаблонах, принятиях решений о выполнении заданного сценария.
---
- name: Run show commands on routers
hosts: cisco-routers
gather_facts: false
tasks:
-name: run s hip int br
raw: s hip int br | ex unass
register: sh_ip_int_br_result
---
debug отображает информацию в стандартном потоке вывода в виде произвольной строки, переменной или фактах о машине.
---
- name: Run show commands on routers
hosts: cisco-routers
gather_facts: false
tasks:
-name: run s hip int br
raw: sh ip int br | ex unass
register: sh_ip_int_br_result
-name: Debug registered var
debug: var=sh_ip_int_br_result.stdout_lines
После чего результатом работы станет следующее:
SSH password:
PLAY [Run show commands on routers] ***************************************************
TASK [run sh ip int br] ***************************************************************
changed: [192.168.100.1]
changed: [192.168.100.2]
changed: [192.168.100.3]
TASK [Debug registered var] ***********************************************************
ok: [192.168.100.1] => {
“sh_ip_int_br_result.stdout_lines”: [
“”,
“Interface IP-Address OK? Method Status Protocol”,
“Ethernet0/0 192.168.100.1 YES NVRAM up up “,
“Ethernet0/1 192.168.200.1 YES NVRAM up up “,
“Loopback0 10.1.1.1 YES manual up up “
]
}
ok: [192.168.100.2] => {
“sh_ip_int_br_result.stdout_lines”: [
“”,
“Interface IP-Address OK? Method Status Protocol”,
“Ethernet0/0 192.168.100.1 YES NVRAM up up “,
“Ethernet0/2 192.168.200.1 YES NVRAM administratively down down “,
“Loopback0 10.1.1.1 YES manual up up “
]
}
ok: [192.168.100.3] => {
“sh_ip_int_br_result.stdout_lines”: [
“”,
“Interface IP-Address OK? Method Status Protocol”,
“Ethernet0/0 192.168.100.3 YES NVRAM up up “,
“Ethernet0/2 192.168.200.1 YES NVRAM administratively down down “,
“Loopback0 10.1.1.1 YES manual up up “,
“Loopback10 10.255.3.3 YES manual up up “
]
}
PLAY RECAP ****************************************************************************
192.168.100.1 : ok=2 changed=1 unreachable=0 failed=0
192.168.100.2 : ok=2 changed=1 unreachable=0 failed=0
192.168.100.3 : ok=2 changed=1 unreachable=0 failed=0
Вместо заключения
Можно ещё долго приводить примеры работы в системе, но ещё один факт так сказать "вишенка на торте". К плюсам Ansible следует отнести и то, что заданную команду система может выполнять практически до бесконечности. Пока не наступит требуемый результат трансформации не прекратятся. Пользователю можно не беспокоиться - программа сама всё сделает за Вас, а Вы можете заниматься другими делами.
Привет, дорогой друг! На днях на AstriCon 2018 в Орландо, компания Sangoma (которая разрабатывает FreePBX) и компания Digium (которая разрабатывает Asterisk), которую, кстати, ранее приобрела компания Sangoma, сделали совместное заявление, в котором сообщили о выходе мажорных версий своих продуктов - Asterisk 16 и FreePBX 15.
Теперь они – Sang*ma
Asterisk 16 действительно доступен на сайте разработчика, а вот если Вы хотите попробовать FreePBX 15, то в привычном месте, где лежат актуальные версии Distro, Вы его не найдёте. Почему так получилось и как всё-таки попробовать 15 версию FreePBX – мы сейчас расскажем!
Дело в том, что FreePBX 15 c 29.08.18 находится в стадии альфа-тестирования. Это когда продукт отлаживают квалифицированные специалисты, которые обладают соответствующими навыками и знанием методик в области тестирования. После этапа альфа-тестирования, наступает этап бэта-тестирования, когда продукт почти готов для конечных пользователей. Обычно, такую версию делают доступной для всех желающих, чтобы простые пользователи могли дать фидбэк по доработкам. После этого идёт этап RC (Release Candidate), это такой период, когда продукт считается готовым к финальному релизу, только если за это время не будет найден какой-нибудь серьёзный баг. И, наконец – финальная версия, полностью отлаженная и готовая к массовому использованию.
Однако, это альфа-тестирование абсолютно открытое и каждый желающий может принять в нём участие. Важно понимать, что на данном этапе продукт ещё полон багов и недоработок, поэтому его ни в коем случае нельзя использовать для продакшен систем!.
Итак, чтобы «попробовать» FreePBX 15, нужно найти на форуме пост от разработчика FreePBX Andrew Nagy от 29.08.18 – вот он и следовать описанным в нём инструкциям.
Суть заключается в том, что необходимо вручную скачать модуль для FreePBX, который позволит нам обновиться до 15 версии. Перед началом данного процесса, у нас установлен FreePBX 14 из Distro SNG7-PBX-64bit-1805-1.
Внимание! Не повторяйте данный метод на инсталляциях, которые используются в продакшне! В настоящий момент FreePBX 15 ещё не готов для боевой эксплуатации! Создайте отдельный тестовый сервер, прежде чем продолжать.
Откройте вэб-интерфейс FreePBX Admin → Module Admin
Выберите в поле Type опцию Download (From Web) и вставьте следующую ссылку http://mirror1.freepbx.org/modules/packages/versionupgrade/versionupgrade-14.0.1.1.tgz в поле Download Remote Module
Нажмите Download (From Web)
Вернитесь к списку модулей, нажав Manage local modules
В пункте Admin найдите и настройте модуль PBX Upgrader. В поле Action выберите опцию Install, затем нажмите кнопку Process в самом низу
В открывшейся вкладке подтвердите установку кнопкой Confirm
По завершению установки во вкладке Admin появится новый модуль 14 to 15 Upgrade Tool, зайдите в него
В открывшемся окне нажмите Check the Requirements
Убедитесь, что система соответствует всем требованиям перед обновлением.
У нас не соответствует, нам необходимо:
Зарегистрировать и активировать систему
Обновить локальные модули
Обновить коммерческие модули
О том, как обновлять модули, читайте в нашей статье
Когда все требования выполнены, снова откройте 14 to 15 Upgrade Tool там должна появиться кнопка Proceed to upgrade process
В открывшемся окне выберите свой дистрибутив
На втором шаге у нас возникла ошибка, нам предложили ввести команду amportal && fwconsole ma upgradeall через CLI. Вводите именно команду fwconsole ma upgradeall, amportal он не поймёт.
После того, как мы ввели команду fwconsole ma upgradeall, мы ещё раз запустили Proceed to upgrade process и обновление продолжилось.
Дождитесь завершения установки и нажмите клавишу Refresh
Поздравляем, Вы успешно установили АЛЬФА версию FreePBX 15, Вы – удивительны!
Ещё раз напоминаем, что данную версию ни в коем случае нельзя использовать в качестве боевой АТС, а вот тестировать и делиться фидбэками – Welcome!
Все мы знаем, что время – самый ценный ресурс. Сегодня мы рассмотрим 5 способов, которые помогут сэкономить немного времени, при работе в командной строке Cisco IOS. Не будем терять время и рассмотрим их!
exec-timeout 0 0
Эта команда позволяет не терять соединение с вашим роутером или коммутатором при достижении времени таймаута, выставив его на ноль минут и ноль секунд. Если ее применить на консольных линиях и VTY, то IOS интерпретирует это, как никогда не истекающий таймаут.
Конечно, ни в коем случае нельзя использовать эту команду в продакшне из соображений безопасности, но она прекрасно подойдет, чтобы сэкономить ваше время в лаборатории, избавив от необходимости повторного входа на несколько устройств в течение дня.
logging synchronous
Наверняка вы были в ситуации, когда посреди набора вашей команды Cisco IOS чувствовала сильную необходимость отправить сообщение Syslog в консоль? :) Это может сильно отвлекать. Способ предотвращения такого вторжения заключается в применении команды logging synchronous. После ввода этой команды, если IOS понадобится отправить Syslog сообщение, то после его отправки, консоль вернет в сеанс терминала то, что вы уже набрали, чтобы продолжить там, где вы остановились.
no ip domain-lookup
Эта команда позволяет отключить интерпретацию команды как DNS имя, если в ней была сделана ошибка. Еще два менее радикальных метода как обойти это можно найти в этой статье.
alias exec
В качестве еще одного способа экономии времени можно создать несколько команд псевдонимов (alias). Это относительно короткие команды, которые транслируются в IOS в длинные команды. Например, если вам часто приходится смотреть конфигурацию протоколов маршрутизации при помощи команды show run | s router, то можно создать ее короткую версию используя команду alias exec src show run | s router. Теперь вместо всей длинной команды нам нужно будет набрать просто ее псевдоним – src.
Сохраненная начальная конфигурация
И в качестве окончательного способа по экономии времени можно рассмотреть сохранения начальной конфигурации в текстовый файл и вставить текст при запуске оборудования «из коробки» или после сброса. Например, можно завести документ со всеми командами из этой статьи и вставлять его в начале работы.
conf t
line con 0
exec-timeout 0 0
logging synchronous
exit
line vty 0 15
exec-timeout 0 0
logging synchronous
exit
no ip domain-lookup
alias exec src show run | s router
alias exec sib show ip interface brief
end
Надеемся, что это поможет сохранить вам пару драгоценных минут!