Как составить список объектов подключённых к сети хранения данных SAN .
Для удобной работы с коммуникаторами и особенно для автоматизации через
скрипты, Вам необходимо установить SSH ключи на ваши устройства. Это можно
сделать вручную или через предлагаемые утилиты,если у вас, как и у меня сеть
достаточно велика. Я опишу оба метода, но прежде всего как с генерировать ключ
(если вы это знаете, просто пропустите этот раздел)
Генерация SSH ключа ssh-keygen
В большинстве UNIX систем это делается командой ssh-keygen, она имеет
довольно много аргументов, но в нашем случае хватит -f для указания в каком
файле сохранить ключ, если вы опустите и его, то ключ будет сохранен в файле
по-умолчанию /home/<имя_пользователя>/.ssh/id_rsa что не всегда удобно,
поскольку возможно данный файл существует и используется в других целях. Итак:
ssh-keygen
-f my_key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): -- Здесь необходимо нажать ввод, иначе скрипт
остановится для запроса пароля
Enter same passphrase again:
Your identification has been saved in my_key.
Your public key has been saved in my_key.pub.
The key fingerprint is:
70:4f:9c:ab:f4:f0:8e:cf:14:24:5a:a4:47:82:1c:4e
my_user@server.com
В результате:
ls -l my_key*
-rw------- 1 user group 1675 May 24 21:01
my_key
-rw-r--r-- 1 user group 412 May 24 21:01
my_key.pub
Мы получили пару ключей файл my_key.pub содержит публичную часть ключа
которую мы пошлём в коммуникатор или другое устройство, а my_key личный ключ
который подтверждает право на подключение.
Мы готовы устанавливать ключи.
Вручную
Cisco
Тут всё достаточно просто: извлекаем ключ из файла –
cat my_key.pub
ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAQEA18qtCG8mEd0G99t7BC90PfInOONYj3XAgyIBk3jE+QruXDsyjg5AuBB/N0DTEbq8t6L3ki8DkyeGg+MgKMH/4n6kk
K/662SbJlXfHOPJxRWoW9RYBiIA75wko92PE6EHZtWxZAabStWC3XzUxYcfF0FLgg1fRdqTB2xbgmSpIvJG5W6gG8VtVTIqONqUgJ8svGARF/vvig7NCKbRT8lQvY
S9OLsf5s43YTxuHJHZSMhQ1Qtvk1/jgSTgV4FU6W3VCb7DG8VtolrDnJTqn+KWjqgsGVKf9NkmUrU8DP+HrWheK+6y9As1AbStSNM3irVGGxf2VQboEEih+sovQxM
UiQ== user@server.com
Подключаемся к коммуникатору через ssh или telnet
Вводим команду conf t для перехода в режим конфигурации
и после этого -
user admin sshkey ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAQEA18qtCG8mEd0G99t7BC90PfInOONYj3XAgyIBk3jE+QruXDsyjg5AuBB/N0DTEbq8t6L3ki8DkyeGg+MgKMH/4n6kk
K/662SbJlXfHOPJxRWoW9RYBiIA75wko92PE6EHZtWxZAabStWC3XzUxYcfF0FLgg1fRdqTB2xbgmSpIvJG5W6gG8VtVTIqONqUgJ8svGARF/vvig7NCKbRT8lQvY
S9OLsf5s43YTxuHJHZSMhQ1Qtvk1/jgSTgV4FU6W3VCb7DG8VtolrDnJTqn+KWjqgsGVKf9NkmUrU8DP+HrWheK+6y9As1AbStSNM3irVGGxf2VQboEEih+sovQxM
UiQ== user@server.com
конечно в вашим ключом :)
и наконец сохраняем конфигурацию -
copy running-config startup-config
Всё, дело сделано, можно уходить.
Brocade
Тут все к сожалению несколько сложнее, Brocade не принимает ключ как
строку, он либо сам генерирует пару, что часто не удобно, либо запрашивает
параметры сервера откуда он может получить файл ключа по FTP или SCP .
Как это происходит:
Вы подключаетесь к коммуникатору через ssh или telnet и вводите команду
-
sshutil importpubkey
коммуникатор начинает импорт ключа и запрашивает IP сервера (именно IP а
не имя) вы вводите адрес сервера где находится с генерированный вами ключ,
например 192.168.1.10 -
Enter IP address: 192.168.1.10
после этого следует запрос папки в которой лежит файл, вы вводите путь,
например /home/user/
Enter remote directory: /home/user/
следует запрос имени файла ключа, обратите внимание - его публичной
части, вводим например my_key.pub -
Enter public key name(must have .pub suffix): my_key.pub
теперь вводим имя пользователя на сервере где хранится ключ, например
user -
Enter login name: user
и его пароль, например password -
user@192.168.1.10's password: -- пароль не
отображается
Если все прошло хорошо, вы получите подтверждение успешного импорта
ключа.
Теперь ssh команда вроде -
ssh -i /home/user/my_key admin@my-switch
позволит вам подключится к коммуникатору без пароля
Всё это достаточно просто, но если вы счастливый обладатель большой
сети, и не любите повторять подобные операции по сто раз, воспользуйтесь утилитами
brc_sw_ssh_key.exp и cis_sw_ssh_key.exp которые я выкладываю здесь - util.tar.gz
Скопируйте архив в директорию программы и распакуйте, эти и некоторые
другие утилиты (о которых позже) вы найдёте в папке ./util . Для работы
программы необходим стандартный пакет expect.
Автоматическая установка ключа:
Cisco (скрипт cis_sw_ssh_key.exp)
./cis_sw_ssh_key.exp <Switch> <SW_pass>
<Key_file>
где -
<Switch> - Имя
или IP коммуникатора
<SW_pass> - Пароль
пользователя admin
<Key_file> -
Файла публичной части ключа
Пример: ./cis_sw_ssh_key.exp
switch-1 password /home/user/my_key.pub
!!! Рекомендую вам создать батч файл, и запускать команду из
него, иначе в history вашего сервера останется администраторский пароль
открытым текстом !!!
Brocade (скрипт brc_sw_ssh_key.exp)
./brc_sw_ssh_key.exp <Switch> <SW_pass>
<Server_IP> <Srv_User> <Key_Dir> <Key_file>
<Srv_pass>
где -
<Switch> - Имя
или IP коммуникатора
<SW_pass> - Пароль
пользователя admin
<Server_IP> - IP
сервера доступного по SCP и хранящего файл
публичной части ключа
<Srv_User> -
Пользователь для доступа к этому серверу
<Key_Dir> -
Папка где хранится ключ
<Key_file> -
Файла публичной части ключа
<Srv_pass> -
Пароль учётной записи пользователя на этом сервере
Например: ./brc_sw_ssh_key.exp switch-1 password 192.168.1.10 user
/home/user/ my_key.pub password
!!! Рекомендую создать батч файл, и запускать команду из него,
иначе в history вашего сервера останется администраторский пароль а так-же
пароль пользователя открытым текстом !!!
И так, SSH ключи на коммуникаторах установлены, а это значит можно
начать автоматическую работу.
Для полнофункциональной работы автоматических скриптов теперь не хватает
только библиотеки объектов, т.е. набора имён и WWN для каждого объекта
подключённого к фабрику.
Начнём с дисковых массивов, я предложу методы для EMC
symmetrix, EMC VNX, EMC
Clariion, Netapp и Hitachi хотя подход одинаков для любого другого стореджа.
Сначала руками:
symcfg -sid <SID >
list -v -FA all - команда выводит
информацию о всех front-end портах, нас интересуют те у которых Director
Connection Status - Yes т.е. подключённые к фабрику.
Результат будет примерно:
...............................
Director
Identification: FA-11G
Director Type : FibreChannel (563)
Director
Status : Online
Number of Director
Ports : 2
Director Ports
Status : [ON,ON,N/A,N/A]
Director
Connection Status : [Yes,N/A,N/A,N/A]
Director Symbolic
Number : 11G
Director Numeric
Number : 107
Director Slot
Number : 11
WWN Node Name : 5000097407145800
Что означает - порт 11G:1 подключён к фабрику.
Для портов SRDF - репликация
между массивами команда немного другая:
symcfg -sid <SID >
list -v -RA all
и результат соответственно:
Director Identification:
RF-9H
Director Type : RDF-BI-DIR
Director
Status : Online
Director Symbolic
Number : 09H
Director Numeric
Number : 121
Director Slot
Number : 9
Negotiated Speed
(GB/Second) : 4
RDF HW Compression
Supported : No
WWN Node Name : 50000974071459E0
naviseccli -password <Password> -scope 0 -user <User_Name>
-h <Host_name> port -list -sp либо
naviseccli -h <Host_name> port -list -sp если предварительно
создан SecureFile командой -
naviseccli -AddUserSecurity -password <Password> -scope 0 -user
<User_Name> -h <Host_name>
на выходе ищим линки не помеченные как "Down"
Например:
SP Name: SP A
SP Port ID: 9
SP UID:
50:06:02:60:C6:E0:5A:86:50:06:01:62:46:E3:5A:86
Link Status: Up
Port Status: Online
Switch Present: NO
SP Name: SP A
SP Port ID: 10
SP UID:
50:06:02:60:C6:E0:5A:86:50:06:01:62:46:E6:5A:87
Link Status: Down
Port Status: DISABLED
Switch Present: NO
Порт А9 подключён.
NETAPP, используем команду fcp config запускаемую через SSH или RSH
-
ищем порты ONLINE
например:
0c: ONLINE <ADAPTER
UP> PTP Fabric
host address 030380
portname
50:0a:09:85:87:e9:4c:c8 nodename
50:0a:09:80:87:e5:4c:c8
mediatype auto
speed auto
0f: OFFLINED BY
USER/SYSTEM <ADAPTER DOWN>
host address
000000
portname
50:0a:09:84:97:43:3c:75 nodename 50:0a:09:85:87:43:3c:78
mediatype auto
speed auto
Порт 0c ONLINE
находим блок: Port Information для поиска PWWN и блок: Link Status для
проверки линка.
Пример:
Port Information
Port Address
0 A
50060E8021054380
50060E8021054380 0000EF 0300A0
0 B
50060E8021054381
50060E8021054381 0000EF 282900
0 C
50060E8021054382
50060E8021054382 0000EF 000000
Link Status
0 A
LinkUp(F_Port Connected)
0 B
LinkUp(F_Port Connected)
0 C
Link Failure
0 D
Link Failure
Как видите это не слишком сложно, однако довольно хлопотно.
Для автоматизации всего процесса я написал утилиту get_stor_port.sh
которая выполняет за вас всю работу на основе файлов конфигурации. Перед её
запуском необходимо запустить утилиту get_switch_obj.sh которая отследит
информацию необходимую для распределения адресов по фабрикам.
Последними компонентами которые я заношу в библиотеку объектов являются
PWWN серверов. Эта информация может быть получена из операционной системы и
утилит поставляемых производителями оптических карт, либо извне, т.е. блэйд
центров, коммуникаторов или BIOS сервера. Как я уже говорил в первой статье я
работаю в основном с HP Blade System и написал специальную утилиту для сбора
информации обо всех серверах через неё. Если вам будет интересно я опубликую и
её, а так-же помогу разобраться как найти PWWN на уровне ОС.
Ну и в заключении как выглядит разультат работы скрипта:
./txt_get_zones.sh serv1,serv2
ALL ALL
-v
serv1_VMAX181_5F0 50:01:43:80:04:c3:6b:48 50:00:09:74:06:04:69:50
serv2_VMAX131_14E0 50:01:43:80:03:bc:1a:60 50:00:09:74:06:03 :a1:34
serv2_VMAX131_4E0
50:01:43:80:03:bc:1a:60 50:00:09:74:06:03 :a1:0c
serv2_VMAX555_5G0
50:01:43:80:03:bc:1a:60 50:00:09:74:06:16:99:90
serv2_VMAX555_6G0
50:01:43:80:03:bc:1a:60 50:00:09:74:06:16:99:94
serv2_VMX181_7G0
50:00:09:74:06:04:69:98 50:01:43:80:03:bc:1a:60
CIS_FBR : PROD1 VSAN: 1
serv1_VMAX181_7E1 50:01:43:80:04:c3:6b:4a 50:00:09:74:06:04:69:19
serv2_VMX181_FA-5G-1 50:01:43:80:03:bc:1a:62 50:00:09:74:06:04:69:91
serv2_VMAX555_5G1
50:01:43:80:03:bc:1a:62 50:00:09:74:06:16:99:91
serv2_VMAX555_6G1
50:01:43:80:03:bc:1a:62 50:00:09:74:06:16:99:95
serv2_VMAX131_13E0
50:01:43:80:03:bc:1a:62 50:00:09:74:06:03 :a1:30
serv2_VMAX131_3E0
50:01:43:80:03:bc:1a:62 50:00:09:74:06:03 :a1:08
No comments:
Post a Comment