Как создать задачу крон (планировщика) в VMware vSphere Management Assistant (vMA). Печать
29.12.14 03:42
29/12/2014 Реклама:
Как создать задачу крон (планировщика) в VMware vSphere Management Assistant (vMA).

Пост:

Как знают многие администраторы VMware vSphere, есть такое удобное средство vSphere Management Assistant (vMA), которое представляет собой виртуальный модуль (готовую виртуальную машину), средствами которой очень удобно управлять скриптами, исполняемыми на нескольких хостах VMware ESXi через интерфейс ESXCLI или Perl.

При выполнении различных сценариев на Linux-машине vMA иногда требуется создать задачу планировщика (крон-таску), чтобы запустить скрипт в назначенное время. Ниже мы опишем, как это нужно делать.

1. Чтобы запускать скрипты без аутентификации, нужно добавить хосты ESXi в vi-fastpass. Вы можете добавить только хосты ESXi, либо хост vCenter Server (или всех их). Используйте команду vifp addserver в интерактивном режиме (конфигурация сохраняется при перезагрузках):

vi-admin@vma:~> vifp addserver esx1.virten.local --username root --password 'vmware'
vi-admin@vma:~> vifp addserver esx2.virten.local --username root --password 'vmware'
vi-admin@vma:~> vifp addserver esx3.virten.local --username root --password 'vmware'
vi-admin@vma:~> vifp addserver vcsa.virten.local --username root --password 'vmware'

Используйте команду vifp listservers для того, чтобы посмотреть список сконфигурированных хостов для быстрого доступа:

vi-admin@vma:~> vifp listservers
esx1.virten.local ESXi
esx2.virten.local ESXi
esx3.virten.local ESXi
vcsa.virten.local vCenter

2. Используйте механизм vi-fastpass внутри скрипта. Это делается вот так (сценарий размещайте, где написано #do something):

#!/usr/bin/perl -w

use VMware::VIRuntime;
use VMware::VmaTargetLib;

my $service_content;
my @targets = VmaTargetLib::enumerate_targets();
foreach my $target(@targets) {
$target->login();
$service_content = Vim::get_service_content();
#do something
$target->logout();
}

Также примеры скриптов можно найти в папке /opt/vmware/vma/samples/perl:

vi-admin@vma:~> ls -l /opt/vmware/vma/samples/perl
total 24
-r--r--r-- 1 root root 2660 Jul 15 2013 README
-r-xr-xr-x 1 root root 9023 Jul 15 2013 bulkAddServers.pl
-r-xr-xr-x 1 root root 1282 Jul 15 2013 listTargets.pl
-r-xr-xr-x 1 root root 2452 Jul 15 2013 mcli.pl

Для примера также посмотрите скрипты отсюда (можете на них и поэкспериментировать, например, с esxcfg-perf.pl).

3. Создаем таску в кроне (cron job).

Синтаксис команды прост:

* * * * * command
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

Открываем крон в режиме редактирования:

vi-admin@vma:~> crontab -e

Нажмите <i>, чтобы перейти в режим вставки в crontab, после чего добавьте нужный путь к библиотеке и команду:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/vmware/vma/lib64:/opt/vmware/vma/lib
*/5 * * * * /home/vi-admin/scripts/esxi-perf.pl

Как создать задачу крон (планировщика) в VMware vSphere Management Assistant (vMA).

Затем выходим из режима редактирования, нажав <ESC> : w q <ENTER>

Если при выполнении команды вы получаете вот такую ошибку:

vi-admin@vma:~> crontab -e
-bash: /usr/bin/crontab: Permission denied

То вам нужно предварительно выполнить sudo (юзер vi-admin в vMA 5.5 не имеет пермиссий на crontab):

vi-admin@vma:~> ll /usr/bin/crontab
-rwsr-x--- 1 root trusted 40432 Apr 2 2013 /usr/bin/crontab
vi-admin@vma:~> sudo chmod +rx /usr/bin/crontab
vi-admin@vma:~> ll /usr/bin/crontab
-rwsr-xr-x 1 root trusted 40432 Apr 2 2013 /usr/bin/crontab

4. Если крон-таска упадет, то вывод ошибок будет направляться сюда:

/var/mail/vi-admin

Вывод ошибки может быть таким:

Can’t load ‘/usr/lib/perl5/site_perl/5.10.0/libvmatargetlib_perl.so’ for module vmatargetlib_perl: libtypes.so: cannot open shared object file: No such file or directory at /usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/DynaLoader.pm line 203.
at /usr/lib/perl5/site_perl/5.10.0/VMware/VmaTargetLib.pm line 10
Compilation failed in require at /usr/lib/perl5/site_perl/5.10.0/VMware/VIFPLib.pm line 9.
BEGIN failed–compilation aborted at /usr/lib/perl5/site_perl/5.10.0/VMware/VIFPLib.pm line 9.
Compilation failed in require at /home/vi-admin/graphite/esxi-perf-graphite.pl line 5.
BEGIN failed–compilation aborted at /home/vi-admin/graphite/esxi-perf-graphite.pl line 5.

Это значит вы некорректно добавили путь к библиотеке (/opt/vmware/vma/lib64:/opt/vmware/vma/lib).

Если же вы получаете вот такую ошибку:

“Server version unavailable at ‘https://[host]:443/sdk/vimService.wsdl’ at /usr/lib/perl5/5.10.0/VMware/VICommon.pm line 545.”

Это из-за непрошедшей SSL-аутентификации. Если у вас нет валидных SSL-сертификатов, отключите авторизацию через SSL в вашем скрипте:

# Disable SSL Verification
export PERL_LWP_SSL_VERIFY_HOSTNAME=0

Источник статьи

Read more http://feedproxy.google.com/~r/Vmguru-tech/~3/MuiGv6Py_d8/vmware-vsphere-vma-cronjob