SlideShare a Scribd company logo
1 of 21
За что мы любим Apache CloudStack?
https://cloudstack.apache.org/
За что мы любим Apache CloudStack?
Управляемость
• единый портал управления;
• универсальная VNC-консоль;
• функциональный API.
Всеядность
• гипервизоры: KVM, LXC, XEN, VMWare, Hyper-V;
• хранилища: GlusterFS, Ceph, NFS, SMB, GFS2, OCFS2, локальные хранилища и файловые системы,
доступные через общую точку монтирования.
Высокий уровень безопасности
• шифрование сетевых соединений (IPSec, HTTPS);
• генерация и назначение административных паролей к виртуальным машинам;
• брандмауеры и балансировщики (встроенный VR, NetScaler, F5, FortiGate, pfSense и другие звери).
https://cloudstack.apache.org/
За что ещё мы любим Apache CloudStack?
https://cloudstack.apache.org/
За что ещё мы любим Apache CloudStack?
Надёжность
• кластеризация, живая миграция в пределах кластера,
• аффинитивные группы;
• снимки виртуальных дисков, снимки виртуальных машин.
Быстрота и удобство развёртывания
• библиотеки ISO-образов и шаблонов виртуальных машин;
• предпочитаемые операционные системы для хостов;
• тегирование хранилищ и хостов, использование тегов в конфигурации офферингов.
Гибкость политик доступа
• домены, учётные записи, пользователи;
• лимитирование использования ресурсов;
• поддержка LDAP.
https://cloudstack.apache.org/
Пример развёртывания Apache CloudStack
Рецепт бессмертия CloudStack Server #1 CloudStack Server #2
MySQL Server #1 MySQL Server #2
M/M-replication
CARP
CARP
Storage ClusterVirtualization Cluster
GlusterFS over RDMA
InfiniBand
кластер серверов управления
кластер базы данных
кластер виртуализации
кластер хранилища
стек коммутаторов
очень желательны прямые руки 
https://cloudstack.apache.org/
MonkeyMan: оператор системы управления
Фреймворк автоматизации MonkeyMan
реализован на Perl5 с применением Moose
объекты инфраструктуры – объекты Perl
использование словарей для связи с API
использование XML и XPath
подключаемые модули и выбор
конфигурации
http://monkeyman.tucha.ua/
MonkeyMan: Perl5 и Moose
# Use Moose and be happy :)
use Moose::Role;
has 'monkeyman' => (
is => 'ro',
isa => 'MonkeyMan',
reader => 'get_monkeyman',
writer => '_set_monkeyman',
predicate => '_has_monkeyman',
required => 1
);
Что нам даёт Moose и зачем здесь этот лось?
Атрибуты
Аксессоры
Валидация
Роли
Подклассы
Расширение синтаксиса
Art by www.animalcrewshop.com
http://monkeyman.tucha.ua/
MonkeyMan: пример запроса к Apache CloudStack
my $api = $monkeyman->get_cloudstack('PRIMARY')->get_api;
my $virtualmachine = $api->perform_action(
type => 'VirtualMachine',
action => 'create',
requested => { 'element' => 'element' },
parameters => {
zoneid => 'f09fe8dd-3567-4ff6-ac3a-2f85dec2636d',
templateid => '8b53dc6a-084d-4b5a-8ac5-3f88301c6703',
serviceofferingid => '97d74503-d609-4edb-8633-748d400aad5e',
# ...skipped...
}
);
http://monkeyman.tucha.ua/
MonkeyMan: словари Apache CloudStack (запрос)
package MonkeyMan::CloudStack::API::Element::VirtualMachine;
with 'MonkeyMan::CloudStack::API::Roles::Element';
# ...skipped...
our %vocabulary_tree = (
type => 'VirtualMachine', name => 'virtual machine', entity_node => 'virtualmachine',
actions => {
create => {
request => {
command => 'deployVirtualMachine',
async => 1, paged => 0,
parameters => {
zoneid => {
required => 1,
command_parameters => { 'zoneid' => '<%VALUE%>' },
},
templateid => {
required => 1,
command_parameters => { 'templateid' => '<%VALUE%>' },
},
serviceofferingid => {
required => 1,
command_parameters => { 'serviceofferingid' => '<%VALUE%>' },
}, # ...skipped...
}, # ...skipped...
}, # ...skipped...
}, # ...skipped...
},
);
http://monkeyman.tucha.ua/
<?xml version="1.0" encoding="UTF-8"?>
<queryasyncjobresultresponse cloud-stack-version="4.8.0">
<accountid>e5447a8f-b0f1-4b00-9d1e-756ab3981987</accountid>
<userid>b77f23fa-5bfa-4c05-88c3-a00b10f6f60c</userid>
<cmd>org.apache.cloudstack.api.command.user.vm.DeployVMCmd</cmd>
<jobstatus>1</jobstatus>
<jobprocstatus>0</jobprocstatus>
<jobresultcode>0</jobresultcode>
<jobresulttype>object</jobresulttype>
<jobresult>
<virtualmachine>
<id>48bd0c95-ee6a-4730-bdc4-1b9998570685</id>
<name>VM-48bd0c95-ee6a-4730-bdc4-1b9998570685</name>
<displayname>VM-48bd0c95-ee6a-4730-bdc4-1b9998570685</displayname>
<account>monkeyman@tucha.ua</account>
<userid>b77f23fa-5bfa-4c05-88c3-a00b10f6f60c</userid>
<username>monkeyman@tucha.ua</username>
<domainid>22452f80-4af5-452c-a894-06b02db6d43c</domainid>
<domain>demo</domain>
<created>2016-09-08T06:50:44+0000</created>
<state>Running</state>
<haenable>true</haenable>
<zoneid>f09fe8dd-3567-4ff6-ac3a-2f85dec2636d</zoneid>
<zonename>las</zonename>
<templateid>8b53dc6a-084d-4b5a-8ac5-3f88301c6703</templateid>
<templatename>Ubuntu Server 15.10</templatename>
<templatedisplaytext>10GB SSD disk with Ubuntu Server 15.10</templatedisplaytext>
<?xml version="1.0" encoding="UTF-8"?>
<queryasyncjobresultresponse cloud-stack-version="4.8.0">
<accountid>e5447a8f-b0f1-4b00-9d1e-756ab3981987</accountid>
<userid>b77f23fa-5bfa-4c05-88c3-a00b10f6f60c</userid>
<cmd>org.apache.cloudstack.api.command.user.vm.DeployVMCmd</cmd>
<jobstatus>0</jobstatus>
<jobprocstatus>0</jobprocstatus>
<jobresultcode>0</jobresultcode>
<jobinstancetype>VirtualMachine</jobinstancetype>
<jobinstanceid>48bd0c95-ee6a-4730-bdc4-1b9998570685</jobinstanceid>
<created>2016-09-08T06:50:44+0000</created>
<jobid>e1973ec0-b948-4887-804d-b8320911c793</jobid>
</queryasyncjobresultresponse>
<?xml version="1.0" encoding="UTF-8"?>
<deployvirtualmachineresponse cloud-stack-version="4.8.0">
<id>48bd0c95-ee6a-4730-bdc4-1b9998570685</id>
<jobid>e1973ec0-b948-4887-804d-b8320911c793</jobid>
</deployvirtualmachineresponse>
MonkeyMan: обработка ответа Apache CloudStack
http://monkeyman.tucha.ua/
MonkeyMan: словари Apache CloudStack (ответ)
package MonkeyMan::CloudStack::API::Element::VirtualMachine;
with 'MonkeyMan::CloudStack::API::Roles::Element';
# ...skipped...
our %vocabulary_tree = (
type => 'VirtualMachine', name => 'virtual machine', entity_node => 'virtualmachine',
actions => {
create => {
response => {
response_node => 'queryasyncjobresultresponse',
results => {
element => {
return_as => [ qw( dom element id ) ],
queries => [ '/<%OUR_RESPONSE_NODE%>/jobresult/<%OUR_ENTITY_NODE%>' ],
required => 0,
multiple => 1
},
id => {
return_as => [ qw( value ) ],
queries => [ '/<%OUR_RESPONSE_NODE%>/jobresult/<%OUR_ENTITY_NODE%>/id' ],
required => 0,
multiple => 1
}, # ...skipped...
}, # ...skipped...
}, # ...skipped...
}, # ...skipped...
},
);
http://monkeyman.tucha.ua/
<?xml version="1.0"?>
<virtualmachine>
<id>48bd0c95-ee6a-4730-bdc4-1b9998570685</id>
<name>VM-48bd0c95-ee6a-4730-bdc4-1b9998570685</name>
<displayname>VM-48bd0c95-ee6a-4730-bdc4-1b9998570685</displayname>
<account>monkeyman@tucha.ua</account>
<userid>b77f23fa-5bfa-4c05-88c3-a00b10f6f60c</userid>
<username>monkeyman@tucha.ua</username>
<domainid>22452f80-4af5-452c-a894-06b02db6d43c</domainid>
<domain>demo</domain>
<created>2016-09-08T06:50:44+0000</created>
<state>Running</state>
<haenable>true</haenable>
<zoneid>f09fe8dd-3567-4ff6-ac3a-2f85dec2636d</zoneid>
<zonename>las</zonename>
<templateid>8b53dc6a-084d-4b5a-8ac5-3f88301c6703</templateid>
<templatename>Ubuntu Server 15.10</templatename>
<templatedisplaytext>10GB SSD disk with Ubuntu Server 15.10</templatedisplaytext>
<passwordenabled>true</passwordenabled>
<serviceofferingid>97d74503-d609-4edb-8633-748d400aad5e</serviceofferingid>
<serviceofferingname>Custom Compute Offering (3GHz Max)</serviceofferingname>
<cpunumber>2</cpunumber>
<cpuspeed>2000</cpuspeed>
<memory>1024</memory>
<guestosid>e4e2d9ae-0b3f-11e6-893a-005056901750</guestosid>
<rootdeviceid>0</rootdeviceid>
<rootdevicetype>ROOT</rootdevicetype>
<password>yJ4zmD</password>
<nic>
<id>7f63e4b4-128c-4399-a28f-4ef650943eb7</id>
<networkid>a3933f8c-37c3-455f-878c-a0f48337aab2</networkid>
<networkname>PublicInternetNetwork-66.209.89.128/27</networkname>
<netmask>255.255.255.224</netmask>
<gateway>66.209.89.129</gateway>
<ipaddress>66.209.89.152</ipaddress>
<isolationuri>vlan://998</isolationuri>
<broadcasturi>vlan://998</broadcasturi>
MonkeyMan: XML и XPath
http://monkeyman.tucha.ua/
MonkeyMan: работа с XML DOM
my $virtualmachine = $api->perform_action(
type => 'VirtualMachine',
action => 'create',
requested => { 'element' => 'element' },
parameters => {
zoneid => 'f09fe8dd-3567-4ff6-ac3a-2f85dec2636d',
templateid => '8b53dc6a-084d-4b5a-8ac5-3f88301c6703',
serviceofferingid => '97d74503-d609-4edb-8633-748d400aad5e',
# ...skipped...
}
);
my @passwords = $virtualmachine->qxp(
query => ‘//virtualmachine/password',
return_as => 'value‘
);
my @ipaddresses = $virtualmachine->qxp(
query => ‘//virtualmachine/nic/ipaddress',
return_as => 'value‘
);
http://monkeyman.tucha.ua/
MonkeyMan: словари Apache CloudStack (связи)
package MonkeyMan::CloudStack::API::Element::VirtualMachine;
with 'MonkeyMan::CloudStack::API::Roles::Element';
# ...skipped...
our %vocabulary_tree = (
type => 'VirtualMachine', name => 'virtual machine', entity_node => 'virtualmachine',
related => {
our_volumes => {
type => ‘Volume',
keys => {
own => { queries => [ '/<%OUR_ENTITY_NODE%>/id' ] },
foreign => { parameters => { filter_by_id => '<%OWN_KEY_VALUE%>' } },
}
}
}, # ...skipped...
);
foreach my $volume ($virtualmachine->get_related(related => 'our_volumes')) {
$logger->debugf(
"Have got the %s %s (%s)",
$volume,
$volume->get_type(noun => 1),
$volume->qxp(query => ‘//volume/name', return_as => 'value')
);
}
http://monkeyman.tucha.ua/
foreach my $virtualmachine ($api->get_elements(
type => 'VirtualMachine',
return_as => 'element',
xpaths => [ '//virtualmachine[nic/ipaddress="13.13.13.13"]' ]
)) {
# ...skipped...
}
MonkeyMan: примеры выборок
MonkeyMan::CloudStack::API::Element::VirtualMachine
http://monkeyman.tucha.ua/
foreach my $ipaddress ($api->get_elements(
type => 'VirtualMachine',
return_as => 'value',
xpaths => [ '//virtualmachine[templatename="PortOS-6.6.6"]/nic[1]/ipaddress' ]
)) {
# ...skipped...
} 10.6.6.6
57.14.91.130
192.168.13.1
72.135.4.69
8.8.8.8
195.3.204.1
172.16.16.172
193.223.98.14
10.200.50.40
66.249.66.117
1.3.1.3
217.71.45.30
192.168.1.3
193.151.90.177
MonkeyMan: примеры выборок
SCALAR
http://monkeyman.tucha.ua/
foreach my $dom ($api->get_elements(
type => 'VirtualMachine',
return_as => 'dom',
xpaths => [ '//virtualmachine' ]
)) {
# ...skipped...
}
<?xml version="1.0"?>
<virtualmachine>
<id>48bd0c95-ee6a-4730-bdc4-1b9998570685</id>
<name>VM-48bd0c95-ee6a-4730-bdc4-1b9998570685</n
<displayname>VM-48bd0c95-ee6a-4730-bdc4-1b999857
<account>monkeyman@tucha.ua</account>
<userid>b77f23fa-5bfa-4c05-88c3-a00b10f6f60c</us
<username>monkeyman@tucha.ua</username>
<domainid>22452f80-4af5-452c-a894-06b02db6d43c</
<domain>demo</domain>
<created>2016-09-08T06:50:44+0000</created>
<state>Running</state>
<haenable>true</haenable>
<zoneid>f09fe8dd-3567-4ff6-ac3a-2f85dec2636d</zo
<zonename>las</zonename>
<templateid>8b53dc6a-084d-4b5a-8ac5-3f88301c6703
<templatename>Ubuntu Server 15.10</templatename>
<templatedisplaytext>10GB SSD disk with Ubuntu S
<passwordenabled>true</passwordenabled>
<serviceofferingid>97d74503-d609-4edb-8633-748d4
<serviceofferingname>Custom Compute Offering (3G
<cpunumber>2</cpunumber>
<cpuspeed>2000</cpuspeed>
<memory>1024</memory>
<guestosid>e4e2d9ae-0b3f-11e6-893a-005056901750<
<rootdeviceid>0</rootdeviceid>
<rootdevicetype>ROOT</rootdevicetype>
<password>yJ4zmD</password>
<nic>
<id>7f63e4b4-128c-4399-a28f-4ef650943eb7</id>
MonkeyMan: примеры выборок
XML::LibXML::Document
http://monkeyman.tucha.ua/
MonkeyMan: выбор конфигурации
$ ./my_application.pl --help
...skipped...
-C <filename>, --configuration <filename>
[opt] The main configuration file
...skipped...
--default-password-generator <ID> (the default actor is PRIMARY)
[opt] The default Password Generator actor to be used
--default-cloudstack <ID> (the default actor is PRIMARY)
[opt] The default Apache CloudStack actor to be used
--default-logger <ID> (the default actor is PRIMARY)
[opt] The default Logger actor to be used
--default-zendesk <ID> (the default actor is PRIMARY)
[opt] The default Zendesk actor to be used
...skipped...
http://monkeyman.tucha.ua/
MonkeyMan: выбор конфигурации
$ ./my_application.pl -C ~monkeyman/etc.Dev13/monkeyman.conf
$ ./my_application.pl --default-cloudstack=Dev13
$ ./my_application.pl --default-cloudstack=PRIMARY
http://monkeyman.tucha.ua/
Публичный IaaS на базе ПО с открытым кодом

More Related Content

What's hot

Построение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureПостроение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureAlexander Feschenko
 
Расширенное кеширование в Doctrine2
Расширенное кеширование в Doctrine2Расширенное кеширование в Doctrine2
Расширенное кеширование в Doctrine2Ilyas Salikhov
 
Страх и ненависть в Event Bus
Страх и ненависть в Event BusСтрах и ненависть в Event Bus
Страх и ненависть в Event Bus0leGG
 
Олег Годовых «Страх и ненависть в Event Bus»
Олег Годовых «Страх и ненависть в Event Bus»Олег Годовых «Страх и ненависть в Event Bus»
Олег Годовых «Страх и ненависть в Event Bus»DevDay
 
Ec2 Rootconf2009
Ec2 Rootconf2009Ec2 Rootconf2009
Ec2 Rootconf2009Liudmila Li
 
Методы защиты Java-приложений и их обход
Методы защиты Java-приложений и их обходМетоды защиты Java-приложений и их обход
Методы защиты Java-приложений и их обходPositive Hack Days
 
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
«Изоморфные js приложения с использованием catberry.js», Денис РечкуновDevDay
 
"Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript""Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript"FDConf
 
2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервереYandex
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорьdrupalconf
 
How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)Ontico
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)7bits
 
Работа с Akka Сluster, @afiskon, scalaby#14
Работа с Akka Сluster, @afiskon, scalaby#14Работа с Akka Сluster, @afiskon, scalaby#14
Работа с Akka Сluster, @afiskon, scalaby#14Vasil Remeniuk
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Serversrit2010
 
Ice Php Framework Preview Release
Ice Php Framework Preview ReleaseIce Php Framework Preview Release
Ice Php Framework Preview ReleaseDenis Shestakov
 
Ec2 Startups Hackday09
Ec2 Startups Hackday09Ec2 Startups Hackday09
Ec2 Startups Hackday09guest967991f2
 
UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiAlexander Makarov
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Nikita Borzykh
 
Продвинутое использование Celery — Александр Кошелев
Продвинутое использование Celery — Александр КошелевПродвинутое использование Celery — Александр Кошелев
Продвинутое использование Celery — Александр КошелевYandex
 

What's hot (20)

Построение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureПостроение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows Azure
 
Расширенное кеширование в Doctrine2
Расширенное кеширование в Doctrine2Расширенное кеширование в Doctrine2
Расширенное кеширование в Doctrine2
 
Страх и ненависть в Event Bus
Страх и ненависть в Event BusСтрах и ненависть в Event Bus
Страх и ненависть в Event Bus
 
Олег Годовых «Страх и ненависть в Event Bus»
Олег Годовых «Страх и ненависть в Event Bus»Олег Годовых «Страх и ненависть в Event Bus»
Олег Годовых «Страх и ненависть в Event Bus»
 
Ec2 Rootconf2009
Ec2 Rootconf2009Ec2 Rootconf2009
Ec2 Rootconf2009
 
Методы защиты Java-приложений и их обход
Методы защиты Java-приложений и их обходМетоды защиты Java-приложений и их обход
Методы защиты Java-приложений и их обход
 
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
 
"Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript""Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript"
 
2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 
How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
 
Работа с Akka Сluster, @afiskon, scalaby#14
Работа с Akka Сluster, @afiskon, scalaby#14Работа с Akka Сluster, @afiskon, scalaby#14
Работа с Akka Сluster, @afiskon, scalaby#14
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
 
Ice Php Framework Preview Release
Ice Php Framework Preview ReleaseIce Php Framework Preview Release
Ice Php Framework Preview Release
 
Ec2 Startups Hackday09
Ec2 Startups Hackday09Ec2 Startups Hackday09
Ec2 Startups Hackday09
 
UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем Yii
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.
 
Bazhin 1 zal
Bazhin 1 zal Bazhin 1 zal
Bazhin 1 zal
 
Продвинутое использование Celery — Александр Кошелев
Продвинутое использование Celery — Александр КошелевПродвинутое использование Celery — Александр Кошелев
Продвинутое использование Celery — Александр Кошелев
 

Viewers also liked

Облачный сервис - безопасен ли он для адвокатской деятельности?
Облачный сервис - безопасен ли он для адвокатской деятельности?Облачный сервис - безопасен ли он для адвокатской деятельности?
Облачный сервис - безопасен ли он для адвокатской деятельности?Cloud IaaS Provider Tucha
 
Быль о частных облаках и зря потраченных ресурсах. Владимир мельник, СТО Tucha
Быль о частных облаках и зря потраченных ресурсах. Владимир мельник, СТО TuchaБыль о частных облаках и зря потраченных ресурсах. Владимир мельник, СТО Tucha
Быль о частных облаках и зря потраченных ресурсах. Владимир мельник, СТО TuchaCloud IaaS Provider Tucha
 
Безболезненная миграция высоконагруженных веб-приложений с хостинга на хостинг
Безболезненная миграция высоконагруженных веб-приложений с хостинга на хостингБезболезненная миграция высоконагруженных веб-приложений с хостинга на хостинг
Безболезненная миграция высоконагруженных веб-приложений с хостинга на хостингCloud IaaS Provider Tucha
 
Построение облачной СХД на базе ПО с открытым кодом (Ceph). Бюджетно и надёжно
Построение облачной СХД на базе ПО с открытым кодом (Ceph). Бюджетно и надёжноПостроение облачной СХД на базе ПО с открытым кодом (Ceph). Бюджетно и надёжно
Построение облачной СХД на базе ПО с открытым кодом (Ceph). Бюджетно и надёжноCloud IaaS Provider Tucha
 
Дрейф у суміжні області: де та як може додатково заробляти фрілансер.
Дрейф у суміжні області: де та як може додатково заробляти фрілансер.Дрейф у суміжні області: де та як може додатково заробляти фрілансер.
Дрейф у суміжні області: де та як може додатково заробляти фрілансер.Cloud IaaS Provider Tucha
 
CloudStack Networking Overview - Jan 28, 2014
CloudStack Networking Overview - Jan 28, 2014CloudStack Networking Overview - Jan 28, 2014
CloudStack Networking Overview - Jan 28, 2014Sheng Yang
 
Табор уходит в небо, или Переход в облачный офис как способ повысить эффектив...
Табор уходит в небо, или Переход в облачный офис как способ повысить эффектив...Табор уходит в небо, или Переход в облачный офис как способ повысить эффектив...
Табор уходит в небо, или Переход в облачный офис как способ повысить эффектив...Cloud IaaS Provider Tucha
 
Построение собственного вычислительного облака на базе программного обеспечен...
Построение собственного вычислительного облака на базе программного обеспечен...Построение собственного вычислительного облака на базе программного обеспечен...
Построение собственного вычислительного облака на базе программного обеспечен...Cloud IaaS Provider Tucha
 
Вебинар Tucha.ua: Шенген для серверов: грамотная миграция в облако
Вебинар Tucha.ua: Шенген для серверов: грамотная миграция в облакоВебинар Tucha.ua: Шенген для серверов: грамотная миграция в облако
Вебинар Tucha.ua: Шенген для серверов: грамотная миграция в облакоCloud IaaS Provider Tucha
 

Viewers also liked (12)

Облачный сервис - безопасен ли он для адвокатской деятельности?
Облачный сервис - безопасен ли он для адвокатской деятельности?Облачный сервис - безопасен ли он для адвокатской деятельности?
Облачный сервис - безопасен ли он для адвокатской деятельности?
 
Быль о частных облаках и зря потраченных ресурсах. Владимир мельник, СТО Tucha
Быль о частных облаках и зря потраченных ресурсах. Владимир мельник, СТО TuchaБыль о частных облаках и зря потраченных ресурсах. Владимир мельник, СТО Tucha
Быль о частных облаках и зря потраченных ресурсах. Владимир мельник, СТО Tucha
 
Безболезненная миграция высоконагруженных веб-приложений с хостинга на хостинг
Безболезненная миграция высоконагруженных веб-приложений с хостинга на хостингБезболезненная миграция высоконагруженных веб-приложений с хостинга на хостинг
Безболезненная миграция высоконагруженных веб-приложений с хостинга на хостинг
 
Построение облачной СХД на базе ПО с открытым кодом (Ceph). Бюджетно и надёжно
Построение облачной СХД на базе ПО с открытым кодом (Ceph). Бюджетно и надёжноПостроение облачной СХД на базе ПО с открытым кодом (Ceph). Бюджетно и надёжно
Построение облачной СХД на базе ПО с открытым кодом (Ceph). Бюджетно и надёжно
 
Tucha
TuchaTucha
Tucha
 
Дрейф у суміжні області: де та як може додатково заробляти фрілансер.
Дрейф у суміжні області: де та як може додатково заробляти фрілансер.Дрейф у суміжні області: де та як може додатково заробляти фрілансер.
Дрейф у суміжні області: де та як може додатково заробляти фрілансер.
 
CloudStack Networking Overview - Jan 28, 2014
CloudStack Networking Overview - Jan 28, 2014CloudStack Networking Overview - Jan 28, 2014
CloudStack Networking Overview - Jan 28, 2014
 
Табор уходит в небо, или Переход в облачный офис как способ повысить эффектив...
Табор уходит в небо, или Переход в облачный офис как способ повысить эффектив...Табор уходит в небо, или Переход в облачный офис как способ повысить эффектив...
Табор уходит в небо, или Переход в облачный офис как способ повысить эффектив...
 
Построение собственного вычислительного облака на базе программного обеспечен...
Построение собственного вычислительного облака на базе программного обеспечен...Построение собственного вычислительного облака на базе программного обеспечен...
Построение собственного вычислительного облака на базе программного обеспечен...
 
Вебинар Tucha.ua: Шенген для серверов: грамотная миграция в облако
Вебинар Tucha.ua: Шенген для серверов: грамотная миграция в облакоВебинар Tucha.ua: Шенген для серверов: грамотная миграция в облако
Вебинар Tucha.ua: Шенген для серверов: грамотная миграция в облако
 
Xen and Apache cloudstack
Xen and Apache cloudstack  Xen and Apache cloudstack
Xen and Apache cloudstack
 
CloudStack Networking
CloudStack NetworkingCloudStack Networking
CloudStack Networking
 

Similar to Публичный IaaS на базе ПО с открытым кодом

PHP Tricks
PHP TricksPHP Tricks
PHP TricksBlackFan
 
Yii2
Yii2Yii2
Yii2Noveo
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полнойОмские ИТ-субботники
 
Производительность в Django
Производительность в DjangoПроизводительность в Django
Производительность в DjangoMoscowDjango
 
React со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендерингReact со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендерингTimophy Chaptykov
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй этоRoman Dvornov
 
Александр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетикеАлександр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетикеKaspersky
 
Web осень 2013 лекция 5
Web осень 2013 лекция 5Web осень 2013 лекция 5
Web осень 2013 лекция 5Technopark
 
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow Vadim Nesterov
 
Командная разработка “толстых клиентов”
Командная разработка “толстых клиентов”Командная разработка “толстых клиентов”
Командная разработка “толстых клиентов”Open-IT
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов ИгорьPVasili
 
2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса
2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса
2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервисаОмские ИТ-субботники
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPITimur Shemsedinov
 
[ONSEC ]XSS vs waf
[ONSEC ]XSS vs waf[ONSEC ]XSS vs waf
[ONSEC ]XSS vs wafd0znp
 
Nginx Igor Sysoev
Nginx   Igor SysoevNginx   Igor Sysoev
Nginx Igor SysoevMedia Gorod
 

Similar to Публичный IaaS на базе ПО с открытым кодом (20)

PHP Tricks
PHP TricksPHP Tricks
PHP Tricks
 
Yii2
Yii2Yii2
Yii2
 
176023
176023176023
176023
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
 
Производительность в Django
Производительность в DjangoПроизводительность в Django
Производительность в Django
 
React со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендерингReact со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендеринг
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй это
 
Erlang tasty & useful stuff
Erlang tasty & useful stuffErlang tasty & useful stuff
Erlang tasty & useful stuff
 
Александр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетикеАлександр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетике
 
Web осень 2013 лекция 5
Web осень 2013 лекция 5Web осень 2013 лекция 5
Web осень 2013 лекция 5
 
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
 
Командная разработка “толстых клиентов”
Командная разработка “толстых клиентов”Командная разработка “толстых клиентов”
Командная разработка “толстых клиентов”
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
 
PowerShell
PowerShellPowerShell
PowerShell
 
2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса
2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса
2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса
 
Почему Mojolicious?
Почему Mojolicious?Почему Mojolicious?
Почему Mojolicious?
 
Mojolicious
MojoliciousMojolicious
Mojolicious
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
[ONSEC ]XSS vs waf
[ONSEC ]XSS vs waf[ONSEC ]XSS vs waf
[ONSEC ]XSS vs waf
 
Nginx Igor Sysoev
Nginx   Igor SysoevNginx   Igor Sysoev
Nginx Igor Sysoev
 

More from Cloud IaaS Provider Tucha

Building of a redundant management cluster for your Cloud
Building of a redundant management cluster for your CloudBuilding of a redundant management cluster for your Cloud
Building of a redundant management cluster for your CloudCloud IaaS Provider Tucha
 
Вся правда об облаках, или Облачные мифы, давайте, до свидания!
Вся правда об облаках, или Облачные мифы, давайте, до свидания!Вся правда об облаках, или Облачные мифы, давайте, до свидания!
Вся правда об облаках, или Облачные мифы, давайте, до свидания!Cloud IaaS Provider Tucha
 
Безопасность в облаке: что она включает в себя и как её обеспечить?
Безопасность в облаке: что она включает в себя и как её обеспечить?Безопасность в облаке: что она включает в себя и как её обеспечить?
Безопасность в облаке: что она включает в себя и как её обеспечить?Cloud IaaS Provider Tucha
 
MonkeyMan – a Perl5 framework for Apache CloudStack automation
MonkeyMan – a Perl5 framework for Apache CloudStack automation MonkeyMan – a Perl5 framework for Apache CloudStack automation
MonkeyMan – a Perl5 framework for Apache CloudStack automation Cloud IaaS Provider Tucha
 
Забег на скорость: насколько быстро можно реально перенести облачную инфрастр...
Забег на скорость: насколько быстро можно реально перенести облачную инфрастр...Забег на скорость: насколько быстро можно реально перенести облачную инфрастр...
Забег на скорость: насколько быстро можно реально перенести облачную инфрастр...Cloud IaaS Provider Tucha
 
Эволюция онлайн. Как из «скрипта-обезьянки» вырастить полноценного помощника
Эволюция онлайн. Как из «скрипта-обезьянки» вырастить полноценного помощникаЭволюция онлайн. Как из «скрипта-обезьянки» вырастить полноценного помощника
Эволюция онлайн. Как из «скрипта-обезьянки» вырастить полноценного помощникаCloud IaaS Provider Tucha
 
Совмещение матриц. Можно ли из технаря сделать управленца и наоборот?
Совмещение матриц. Можно ли из технаря сделать управленца и наоборот?Совмещение матриц. Можно ли из технаря сделать управленца и наоборот?
Совмещение матриц. Можно ли из технаря сделать управленца и наоборот?Cloud IaaS Provider Tucha
 
TuchaHost - хостинг серверов в облаке
TuchaHost - хостинг серверов в облакеTuchaHost - хостинг серверов в облаке
TuchaHost - хостинг серверов в облакеCloud IaaS Provider Tucha
 
Вебинар "Как организовать мобильный офис незаметно от окружающих"
Вебинар "Как организовать мобильный офис незаметно от окружающих"Вебинар "Как организовать мобильный офис незаметно от окружающих"
Вебинар "Как организовать мобильный офис незаметно от окружающих"Cloud IaaS Provider Tucha
 
Онлайн-сервис Yaware для учёта рабочего времени
Онлайн-сервис Yaware для учёта рабочего времениОнлайн-сервис Yaware для учёта рабочего времени
Онлайн-сервис Yaware для учёта рабочего времениCloud IaaS Provider Tucha
 
Эволюция лени, Владимир Мельник, Tucha
Эволюция лени, Владимир Мельник, TuchaЭволюция лени, Владимир Мельник, Tucha
Эволюция лени, Владимир Мельник, TuchaCloud IaaS Provider Tucha
 
Цена секунды, или Влияние скорости работы сервиса на его коммерческую эффекти...
Цена секунды, или Влияние скорости работы сервиса на его коммерческую эффекти...Цена секунды, или Влияние скорости работы сервиса на его коммерческую эффекти...
Цена секунды, или Влияние скорости работы сервиса на его коммерческую эффекти...Cloud IaaS Provider Tucha
 
Сайт неваляшка, Владимир Мельник, Tucha
Сайт неваляшка, Владимир Мельник, TuchaСайт неваляшка, Владимир Мельник, Tucha
Сайт неваляшка, Владимир Мельник, TuchaCloud IaaS Provider Tucha
 
Захват рынка через монитор, Владимир Мельник
Захват рынка через монитор, Владимир МельникЗахват рынка через монитор, Владимир Мельник
Захват рынка через монитор, Владимир МельникCloud IaaS Provider Tucha
 
Вебинар Tucha.ua: Дорога в облака: цена вопроса
Вебинар Tucha.ua: Дорога в облака: цена вопросаВебинар Tucha.ua: Дорога в облака: цена вопроса
Вебинар Tucha.ua: Дорога в облака: цена вопросаCloud IaaS Provider Tucha
 
Использование облачных технологий в учебном процессе
Использование облачных технологий в учебном процессеИспользование облачных технологий в учебном процессе
Использование облачных технологий в учебном процессеCloud IaaS Provider Tucha
 

More from Cloud IaaS Provider Tucha (16)

Building of a redundant management cluster for your Cloud
Building of a redundant management cluster for your CloudBuilding of a redundant management cluster for your Cloud
Building of a redundant management cluster for your Cloud
 
Вся правда об облаках, или Облачные мифы, давайте, до свидания!
Вся правда об облаках, или Облачные мифы, давайте, до свидания!Вся правда об облаках, или Облачные мифы, давайте, до свидания!
Вся правда об облаках, или Облачные мифы, давайте, до свидания!
 
Безопасность в облаке: что она включает в себя и как её обеспечить?
Безопасность в облаке: что она включает в себя и как её обеспечить?Безопасность в облаке: что она включает в себя и как её обеспечить?
Безопасность в облаке: что она включает в себя и как её обеспечить?
 
MonkeyMan – a Perl5 framework for Apache CloudStack automation
MonkeyMan – a Perl5 framework for Apache CloudStack automation MonkeyMan – a Perl5 framework for Apache CloudStack automation
MonkeyMan – a Perl5 framework for Apache CloudStack automation
 
Забег на скорость: насколько быстро можно реально перенести облачную инфрастр...
Забег на скорость: насколько быстро можно реально перенести облачную инфрастр...Забег на скорость: насколько быстро можно реально перенести облачную инфрастр...
Забег на скорость: насколько быстро можно реально перенести облачную инфрастр...
 
Эволюция онлайн. Как из «скрипта-обезьянки» вырастить полноценного помощника
Эволюция онлайн. Как из «скрипта-обезьянки» вырастить полноценного помощникаЭволюция онлайн. Как из «скрипта-обезьянки» вырастить полноценного помощника
Эволюция онлайн. Как из «скрипта-обезьянки» вырастить полноценного помощника
 
Совмещение матриц. Можно ли из технаря сделать управленца и наоборот?
Совмещение матриц. Можно ли из технаря сделать управленца и наоборот?Совмещение матриц. Можно ли из технаря сделать управленца и наоборот?
Совмещение матриц. Можно ли из технаря сделать управленца и наоборот?
 
TuchaHost - хостинг серверов в облаке
TuchaHost - хостинг серверов в облакеTuchaHost - хостинг серверов в облаке
TuchaHost - хостинг серверов в облаке
 
Вебинар "Как организовать мобильный офис незаметно от окружающих"
Вебинар "Как организовать мобильный офис незаметно от окружающих"Вебинар "Как организовать мобильный офис незаметно от окружающих"
Вебинар "Как организовать мобильный офис незаметно от окружающих"
 
Онлайн-сервис Yaware для учёта рабочего времени
Онлайн-сервис Yaware для учёта рабочего времениОнлайн-сервис Yaware для учёта рабочего времени
Онлайн-сервис Yaware для учёта рабочего времени
 
Эволюция лени, Владимир Мельник, Tucha
Эволюция лени, Владимир Мельник, TuchaЭволюция лени, Владимир Мельник, Tucha
Эволюция лени, Владимир Мельник, Tucha
 
Цена секунды, или Влияние скорости работы сервиса на его коммерческую эффекти...
Цена секунды, или Влияние скорости работы сервиса на его коммерческую эффекти...Цена секунды, или Влияние скорости работы сервиса на его коммерческую эффекти...
Цена секунды, или Влияние скорости работы сервиса на его коммерческую эффекти...
 
Сайт неваляшка, Владимир Мельник, Tucha
Сайт неваляшка, Владимир Мельник, TuchaСайт неваляшка, Владимир Мельник, Tucha
Сайт неваляшка, Владимир Мельник, Tucha
 
Захват рынка через монитор, Владимир Мельник
Захват рынка через монитор, Владимир МельникЗахват рынка через монитор, Владимир Мельник
Захват рынка через монитор, Владимир Мельник
 
Вебинар Tucha.ua: Дорога в облака: цена вопроса
Вебинар Tucha.ua: Дорога в облака: цена вопросаВебинар Tucha.ua: Дорога в облака: цена вопроса
Вебинар Tucha.ua: Дорога в облака: цена вопроса
 
Использование облачных технологий в учебном процессе
Использование облачных технологий в учебном процессеИспользование облачных технологий в учебном процессе
Использование облачных технологий в учебном процессе
 

Публичный IaaS на базе ПО с открытым кодом

  • 1.
  • 2. За что мы любим Apache CloudStack? https://cloudstack.apache.org/
  • 3. За что мы любим Apache CloudStack? Управляемость • единый портал управления; • универсальная VNC-консоль; • функциональный API. Всеядность • гипервизоры: KVM, LXC, XEN, VMWare, Hyper-V; • хранилища: GlusterFS, Ceph, NFS, SMB, GFS2, OCFS2, локальные хранилища и файловые системы, доступные через общую точку монтирования. Высокий уровень безопасности • шифрование сетевых соединений (IPSec, HTTPS); • генерация и назначение административных паролей к виртуальным машинам; • брандмауеры и балансировщики (встроенный VR, NetScaler, F5, FortiGate, pfSense и другие звери). https://cloudstack.apache.org/
  • 4. За что ещё мы любим Apache CloudStack? https://cloudstack.apache.org/
  • 5. За что ещё мы любим Apache CloudStack? Надёжность • кластеризация, живая миграция в пределах кластера, • аффинитивные группы; • снимки виртуальных дисков, снимки виртуальных машин. Быстрота и удобство развёртывания • библиотеки ISO-образов и шаблонов виртуальных машин; • предпочитаемые операционные системы для хостов; • тегирование хранилищ и хостов, использование тегов в конфигурации офферингов. Гибкость политик доступа • домены, учётные записи, пользователи; • лимитирование использования ресурсов; • поддержка LDAP. https://cloudstack.apache.org/
  • 6. Пример развёртывания Apache CloudStack Рецепт бессмертия CloudStack Server #1 CloudStack Server #2 MySQL Server #1 MySQL Server #2 M/M-replication CARP CARP Storage ClusterVirtualization Cluster GlusterFS over RDMA InfiniBand кластер серверов управления кластер базы данных кластер виртуализации кластер хранилища стек коммутаторов очень желательны прямые руки  https://cloudstack.apache.org/
  • 7. MonkeyMan: оператор системы управления Фреймворк автоматизации MonkeyMan реализован на Perl5 с применением Moose объекты инфраструктуры – объекты Perl использование словарей для связи с API использование XML и XPath подключаемые модули и выбор конфигурации http://monkeyman.tucha.ua/
  • 8. MonkeyMan: Perl5 и Moose # Use Moose and be happy :) use Moose::Role; has 'monkeyman' => ( is => 'ro', isa => 'MonkeyMan', reader => 'get_monkeyman', writer => '_set_monkeyman', predicate => '_has_monkeyman', required => 1 ); Что нам даёт Moose и зачем здесь этот лось? Атрибуты Аксессоры Валидация Роли Подклассы Расширение синтаксиса Art by www.animalcrewshop.com http://monkeyman.tucha.ua/
  • 9. MonkeyMan: пример запроса к Apache CloudStack my $api = $monkeyman->get_cloudstack('PRIMARY')->get_api; my $virtualmachine = $api->perform_action( type => 'VirtualMachine', action => 'create', requested => { 'element' => 'element' }, parameters => { zoneid => 'f09fe8dd-3567-4ff6-ac3a-2f85dec2636d', templateid => '8b53dc6a-084d-4b5a-8ac5-3f88301c6703', serviceofferingid => '97d74503-d609-4edb-8633-748d400aad5e', # ...skipped... } ); http://monkeyman.tucha.ua/
  • 10. MonkeyMan: словари Apache CloudStack (запрос) package MonkeyMan::CloudStack::API::Element::VirtualMachine; with 'MonkeyMan::CloudStack::API::Roles::Element'; # ...skipped... our %vocabulary_tree = ( type => 'VirtualMachine', name => 'virtual machine', entity_node => 'virtualmachine', actions => { create => { request => { command => 'deployVirtualMachine', async => 1, paged => 0, parameters => { zoneid => { required => 1, command_parameters => { 'zoneid' => '<%VALUE%>' }, }, templateid => { required => 1, command_parameters => { 'templateid' => '<%VALUE%>' }, }, serviceofferingid => { required => 1, command_parameters => { 'serviceofferingid' => '<%VALUE%>' }, }, # ...skipped... }, # ...skipped... }, # ...skipped... }, # ...skipped... }, ); http://monkeyman.tucha.ua/
  • 11. <?xml version="1.0" encoding="UTF-8"?> <queryasyncjobresultresponse cloud-stack-version="4.8.0"> <accountid>e5447a8f-b0f1-4b00-9d1e-756ab3981987</accountid> <userid>b77f23fa-5bfa-4c05-88c3-a00b10f6f60c</userid> <cmd>org.apache.cloudstack.api.command.user.vm.DeployVMCmd</cmd> <jobstatus>1</jobstatus> <jobprocstatus>0</jobprocstatus> <jobresultcode>0</jobresultcode> <jobresulttype>object</jobresulttype> <jobresult> <virtualmachine> <id>48bd0c95-ee6a-4730-bdc4-1b9998570685</id> <name>VM-48bd0c95-ee6a-4730-bdc4-1b9998570685</name> <displayname>VM-48bd0c95-ee6a-4730-bdc4-1b9998570685</displayname> <account>monkeyman@tucha.ua</account> <userid>b77f23fa-5bfa-4c05-88c3-a00b10f6f60c</userid> <username>monkeyman@tucha.ua</username> <domainid>22452f80-4af5-452c-a894-06b02db6d43c</domainid> <domain>demo</domain> <created>2016-09-08T06:50:44+0000</created> <state>Running</state> <haenable>true</haenable> <zoneid>f09fe8dd-3567-4ff6-ac3a-2f85dec2636d</zoneid> <zonename>las</zonename> <templateid>8b53dc6a-084d-4b5a-8ac5-3f88301c6703</templateid> <templatename>Ubuntu Server 15.10</templatename> <templatedisplaytext>10GB SSD disk with Ubuntu Server 15.10</templatedisplaytext> <?xml version="1.0" encoding="UTF-8"?> <queryasyncjobresultresponse cloud-stack-version="4.8.0"> <accountid>e5447a8f-b0f1-4b00-9d1e-756ab3981987</accountid> <userid>b77f23fa-5bfa-4c05-88c3-a00b10f6f60c</userid> <cmd>org.apache.cloudstack.api.command.user.vm.DeployVMCmd</cmd> <jobstatus>0</jobstatus> <jobprocstatus>0</jobprocstatus> <jobresultcode>0</jobresultcode> <jobinstancetype>VirtualMachine</jobinstancetype> <jobinstanceid>48bd0c95-ee6a-4730-bdc4-1b9998570685</jobinstanceid> <created>2016-09-08T06:50:44+0000</created> <jobid>e1973ec0-b948-4887-804d-b8320911c793</jobid> </queryasyncjobresultresponse> <?xml version="1.0" encoding="UTF-8"?> <deployvirtualmachineresponse cloud-stack-version="4.8.0"> <id>48bd0c95-ee6a-4730-bdc4-1b9998570685</id> <jobid>e1973ec0-b948-4887-804d-b8320911c793</jobid> </deployvirtualmachineresponse> MonkeyMan: обработка ответа Apache CloudStack http://monkeyman.tucha.ua/
  • 12. MonkeyMan: словари Apache CloudStack (ответ) package MonkeyMan::CloudStack::API::Element::VirtualMachine; with 'MonkeyMan::CloudStack::API::Roles::Element'; # ...skipped... our %vocabulary_tree = ( type => 'VirtualMachine', name => 'virtual machine', entity_node => 'virtualmachine', actions => { create => { response => { response_node => 'queryasyncjobresultresponse', results => { element => { return_as => [ qw( dom element id ) ], queries => [ '/<%OUR_RESPONSE_NODE%>/jobresult/<%OUR_ENTITY_NODE%>' ], required => 0, multiple => 1 }, id => { return_as => [ qw( value ) ], queries => [ '/<%OUR_RESPONSE_NODE%>/jobresult/<%OUR_ENTITY_NODE%>/id' ], required => 0, multiple => 1 }, # ...skipped... }, # ...skipped... }, # ...skipped... }, # ...skipped... }, ); http://monkeyman.tucha.ua/
  • 13. <?xml version="1.0"?> <virtualmachine> <id>48bd0c95-ee6a-4730-bdc4-1b9998570685</id> <name>VM-48bd0c95-ee6a-4730-bdc4-1b9998570685</name> <displayname>VM-48bd0c95-ee6a-4730-bdc4-1b9998570685</displayname> <account>monkeyman@tucha.ua</account> <userid>b77f23fa-5bfa-4c05-88c3-a00b10f6f60c</userid> <username>monkeyman@tucha.ua</username> <domainid>22452f80-4af5-452c-a894-06b02db6d43c</domainid> <domain>demo</domain> <created>2016-09-08T06:50:44+0000</created> <state>Running</state> <haenable>true</haenable> <zoneid>f09fe8dd-3567-4ff6-ac3a-2f85dec2636d</zoneid> <zonename>las</zonename> <templateid>8b53dc6a-084d-4b5a-8ac5-3f88301c6703</templateid> <templatename>Ubuntu Server 15.10</templatename> <templatedisplaytext>10GB SSD disk with Ubuntu Server 15.10</templatedisplaytext> <passwordenabled>true</passwordenabled> <serviceofferingid>97d74503-d609-4edb-8633-748d400aad5e</serviceofferingid> <serviceofferingname>Custom Compute Offering (3GHz Max)</serviceofferingname> <cpunumber>2</cpunumber> <cpuspeed>2000</cpuspeed> <memory>1024</memory> <guestosid>e4e2d9ae-0b3f-11e6-893a-005056901750</guestosid> <rootdeviceid>0</rootdeviceid> <rootdevicetype>ROOT</rootdevicetype> <password>yJ4zmD</password> <nic> <id>7f63e4b4-128c-4399-a28f-4ef650943eb7</id> <networkid>a3933f8c-37c3-455f-878c-a0f48337aab2</networkid> <networkname>PublicInternetNetwork-66.209.89.128/27</networkname> <netmask>255.255.255.224</netmask> <gateway>66.209.89.129</gateway> <ipaddress>66.209.89.152</ipaddress> <isolationuri>vlan://998</isolationuri> <broadcasturi>vlan://998</broadcasturi> MonkeyMan: XML и XPath http://monkeyman.tucha.ua/
  • 14. MonkeyMan: работа с XML DOM my $virtualmachine = $api->perform_action( type => 'VirtualMachine', action => 'create', requested => { 'element' => 'element' }, parameters => { zoneid => 'f09fe8dd-3567-4ff6-ac3a-2f85dec2636d', templateid => '8b53dc6a-084d-4b5a-8ac5-3f88301c6703', serviceofferingid => '97d74503-d609-4edb-8633-748d400aad5e', # ...skipped... } ); my @passwords = $virtualmachine->qxp( query => ‘//virtualmachine/password', return_as => 'value‘ ); my @ipaddresses = $virtualmachine->qxp( query => ‘//virtualmachine/nic/ipaddress', return_as => 'value‘ ); http://monkeyman.tucha.ua/
  • 15. MonkeyMan: словари Apache CloudStack (связи) package MonkeyMan::CloudStack::API::Element::VirtualMachine; with 'MonkeyMan::CloudStack::API::Roles::Element'; # ...skipped... our %vocabulary_tree = ( type => 'VirtualMachine', name => 'virtual machine', entity_node => 'virtualmachine', related => { our_volumes => { type => ‘Volume', keys => { own => { queries => [ '/<%OUR_ENTITY_NODE%>/id' ] }, foreign => { parameters => { filter_by_id => '<%OWN_KEY_VALUE%>' } }, } } }, # ...skipped... ); foreach my $volume ($virtualmachine->get_related(related => 'our_volumes')) { $logger->debugf( "Have got the %s %s (%s)", $volume, $volume->get_type(noun => 1), $volume->qxp(query => ‘//volume/name', return_as => 'value') ); } http://monkeyman.tucha.ua/
  • 16. foreach my $virtualmachine ($api->get_elements( type => 'VirtualMachine', return_as => 'element', xpaths => [ '//virtualmachine[nic/ipaddress="13.13.13.13"]' ] )) { # ...skipped... } MonkeyMan: примеры выборок MonkeyMan::CloudStack::API::Element::VirtualMachine http://monkeyman.tucha.ua/
  • 17. foreach my $ipaddress ($api->get_elements( type => 'VirtualMachine', return_as => 'value', xpaths => [ '//virtualmachine[templatename="PortOS-6.6.6"]/nic[1]/ipaddress' ] )) { # ...skipped... } 10.6.6.6 57.14.91.130 192.168.13.1 72.135.4.69 8.8.8.8 195.3.204.1 172.16.16.172 193.223.98.14 10.200.50.40 66.249.66.117 1.3.1.3 217.71.45.30 192.168.1.3 193.151.90.177 MonkeyMan: примеры выборок SCALAR http://monkeyman.tucha.ua/
  • 18. foreach my $dom ($api->get_elements( type => 'VirtualMachine', return_as => 'dom', xpaths => [ '//virtualmachine' ] )) { # ...skipped... } <?xml version="1.0"?> <virtualmachine> <id>48bd0c95-ee6a-4730-bdc4-1b9998570685</id> <name>VM-48bd0c95-ee6a-4730-bdc4-1b9998570685</n <displayname>VM-48bd0c95-ee6a-4730-bdc4-1b999857 <account>monkeyman@tucha.ua</account> <userid>b77f23fa-5bfa-4c05-88c3-a00b10f6f60c</us <username>monkeyman@tucha.ua</username> <domainid>22452f80-4af5-452c-a894-06b02db6d43c</ <domain>demo</domain> <created>2016-09-08T06:50:44+0000</created> <state>Running</state> <haenable>true</haenable> <zoneid>f09fe8dd-3567-4ff6-ac3a-2f85dec2636d</zo <zonename>las</zonename> <templateid>8b53dc6a-084d-4b5a-8ac5-3f88301c6703 <templatename>Ubuntu Server 15.10</templatename> <templatedisplaytext>10GB SSD disk with Ubuntu S <passwordenabled>true</passwordenabled> <serviceofferingid>97d74503-d609-4edb-8633-748d4 <serviceofferingname>Custom Compute Offering (3G <cpunumber>2</cpunumber> <cpuspeed>2000</cpuspeed> <memory>1024</memory> <guestosid>e4e2d9ae-0b3f-11e6-893a-005056901750< <rootdeviceid>0</rootdeviceid> <rootdevicetype>ROOT</rootdevicetype> <password>yJ4zmD</password> <nic> <id>7f63e4b4-128c-4399-a28f-4ef650943eb7</id> MonkeyMan: примеры выборок XML::LibXML::Document http://monkeyman.tucha.ua/
  • 19. MonkeyMan: выбор конфигурации $ ./my_application.pl --help ...skipped... -C <filename>, --configuration <filename> [opt] The main configuration file ...skipped... --default-password-generator <ID> (the default actor is PRIMARY) [opt] The default Password Generator actor to be used --default-cloudstack <ID> (the default actor is PRIMARY) [opt] The default Apache CloudStack actor to be used --default-logger <ID> (the default actor is PRIMARY) [opt] The default Logger actor to be used --default-zendesk <ID> (the default actor is PRIMARY) [opt] The default Zendesk actor to be used ...skipped... http://monkeyman.tucha.ua/
  • 20. MonkeyMan: выбор конфигурации $ ./my_application.pl -C ~monkeyman/etc.Dev13/monkeyman.conf $ ./my_application.pl --default-cloudstack=Dev13 $ ./my_application.pl --default-cloudstack=PRIMARY http://monkeyman.tucha.ua/