SlideShare a Scribd company logo
1 of 26
What do we like in Apache CloudStack?
Manageability
• unified management portal;
• browser-compatible VNC-interface;
• powerful API.
Omnivorousness
• hypervisors: KVM, LXC, XEN, VMWare, Hyper-V;
• storages: any filesystems, including clustered filesystems that could be accessed by a shared-
mountpoint GlusterFS, Ceph, NFS, SMB, GFS2, OCFS2.
Security
• encrypted networking (IPSec, HTTPS);
• firewalls and load-balancers (internal VR, NetScaler, F5, FortiGate, pfSense and other beasts);
• open source ideology.
https://cloudstack.apache.org/
What else do we like in Apache CloudStack?
Reliablity
• clusterisation, live migration;
• high-availability, affinity groups;
• volume and VM snapshots.
Rapid deployment
• ISO-images and templates;
• OS preferences for the host;
• host and storage tags, which can be used in the service and storage offerings.
Flexible access policies
• domains, accounts, users;
• resouce limits;
• LDAP support.
https://cloudstack.apache.org/
MonkeyMan: the cloud manager
MonkeyMan - the automation framework
Implemented in Perl5 with Moose
All ACS objects are Perl objects
Flexible API vocabularies
XML and XPath
Pluggable and replaceable modules
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
);
Why use Moose?
Attributes
Accessors
Validation
Roles
Subclasses
Syntax extentions
Art by www.animalcrewshop.com
http://monkeyman.tucha.ua/
MonkeyMan: some of utilities
MonkeyMan: a sample ACS query
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: API vocabularies (composing a request)
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/
MonkeyMan: ACS vocabularies (parsing a response)
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/
MonkeyMan: logging and debugging
http://monkeyman.tucha.ua/
$logger->debugf(’The %s %s is %s‘,
$vm_object,
$vm_object->get_type(noun => 1),
$vm_object->qxp(’/status’)
);
Thanks for your interest!
http://monkeyman.tucha.ua/

More Related Content

What's hot

Openstack glance
Openstack glanceOpenstack glance
Openstack glance
SHAMEEM F
 
N:1 Replication meets MHA
N:1 Replication meets MHAN:1 Replication meets MHA
N:1 Replication meets MHA
do_aki
 
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
Tom Croucher
 
MongoDB on Azure - Tips, Tricks and Examples
MongoDB on Azure - Tips, Tricks and ExamplesMongoDB on Azure - Tips, Tricks and Examples
MongoDB on Azure - Tips, Tricks and Examples
MongoDB
 

What's hot (20)

MySQL High Availability Deep Dive
MySQL High Availability Deep DiveMySQL High Availability Deep Dive
MySQL High Availability Deep Dive
 
Designing High Availability for HashiCorp Vault in AWS
Designing High Availability for HashiCorp Vault in AWSDesigning High Availability for HashiCorp Vault in AWS
Designing High Availability for HashiCorp Vault in AWS
 
Openstack glance
Openstack glanceOpenstack glance
Openstack glance
 
Sails.js Model / ORM introduce
Sails.js Model / ORM introduceSails.js Model / ORM introduce
Sails.js Model / ORM introduce
 
Neil Saunders (Beamly) - Securing your AWS Infrastructure with Hashicorp Vault
Neil Saunders (Beamly) - Securing your AWS Infrastructure with Hashicorp Vault Neil Saunders (Beamly) - Securing your AWS Infrastructure with Hashicorp Vault
Neil Saunders (Beamly) - Securing your AWS Infrastructure with Hashicorp Vault
 
Terraform bootstrap code_execute
Terraform bootstrap code_executeTerraform bootstrap code_execute
Terraform bootstrap code_execute
 
Shield talk elasticsearch meetup Zurich 27.05.2015
Shield talk elasticsearch meetup Zurich 27.05.2015Shield talk elasticsearch meetup Zurich 27.05.2015
Shield talk elasticsearch meetup Zurich 27.05.2015
 
Cassandra and security
Cassandra and securityCassandra and security
Cassandra and security
 
A Introduction of Packer
A Introduction of PackerA Introduction of Packer
A Introduction of Packer
 
Slides Cassandra
Slides CassandraSlides Cassandra
Slides Cassandra
 
Node.js
Node.jsNode.js
Node.js
 
Ansible
AnsibleAnsible
Ansible
 
N:1 Replication meets MHA
N:1 Replication meets MHAN:1 Replication meets MHA
N:1 Replication meets MHA
 
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
 
MySQL NDB 8.0 clusters in your laptop with dbdeployer
MySQL NDB 8.0 clusters in your laptop with dbdeployerMySQL NDB 8.0 clusters in your laptop with dbdeployer
MySQL NDB 8.0 clusters in your laptop with dbdeployer
 
Forget MAMP and WAMP, Use Virtual Box to Have a Real Ubuntu Server
Forget MAMP and WAMP, Use Virtual Box to Have a Real Ubuntu ServerForget MAMP and WAMP, Use Virtual Box to Have a Real Ubuntu Server
Forget MAMP and WAMP, Use Virtual Box to Have a Real Ubuntu Server
 
OpenStack Glance
OpenStack GlanceOpenStack Glance
OpenStack Glance
 
Secret Management with Hashicorp’s Vault
Secret Management with Hashicorp’s VaultSecret Management with Hashicorp’s Vault
Secret Management with Hashicorp’s Vault
 
MongoDB on Azure - Tips, Tricks and Examples
MongoDB on Azure - Tips, Tricks and ExamplesMongoDB on Azure - Tips, Tricks and Examples
MongoDB on Azure - Tips, Tricks and Examples
 
Test complex database systems in your laptop with dbdeployer
Test complex database systems in your laptop with dbdeployerTest complex database systems in your laptop with dbdeployer
Test complex database systems in your laptop with dbdeployer
 

Similar to MonkeyMan – a Perl5 framework for Apache CloudStack automation

Using Apache as an Application Server
Using Apache as an Application ServerUsing Apache as an Application Server
Using Apache as an Application Server
Phil Windley
 
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Carlos Sanchez
 
Iris: Inter-cloud Resource Integration System for Elastic Cloud Data Center
Iris: Inter-cloud Resource Integration System for Elastic Cloud Data CenterIris: Inter-cloud Resource Integration System for Elastic Cloud Data Center
Iris: Inter-cloud Resource Integration System for Elastic Cloud Data Center
Ryousei Takano
 
2020-02-20 - HashiTalks 2020 - HashiCorp Vault configuration as code via Hash...
2020-02-20 - HashiTalks 2020 - HashiCorp Vault configuration as code via Hash...2020-02-20 - HashiTalks 2020 - HashiCorp Vault configuration as code via Hash...
2020-02-20 - HashiTalks 2020 - HashiCorp Vault configuration as code via Hash...
Andrey Devyatkin
 

Similar to MonkeyMan – a Perl5 framework for Apache CloudStack automation (20)

Monkey man
Monkey manMonkey man
Monkey man
 
Using Apache as an Application Server
Using Apache as an Application ServerUsing Apache as an Application Server
Using Apache as an Application Server
 
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
 
Chickens & Eggs: Managing secrets in AWS with Hashicorp Vault
Chickens & Eggs: Managing secrets in AWS with Hashicorp VaultChickens & Eggs: Managing secrets in AWS with Hashicorp Vault
Chickens & Eggs: Managing secrets in AWS with Hashicorp Vault
 
Securing Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTPSecuring Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTP
 
AWS Lambda with Serverless Framework and Java
AWS Lambda with Serverless Framework and JavaAWS Lambda with Serverless Framework and Java
AWS Lambda with Serverless Framework and Java
 
Secure Kafka at scale in true multi-tenant environment ( Vishnu Balusu & Asho...
Secure Kafka at scale in true multi-tenant environment ( Vishnu Balusu & Asho...Secure Kafka at scale in true multi-tenant environment ( Vishnu Balusu & Asho...
Secure Kafka at scale in true multi-tenant environment ( Vishnu Balusu & Asho...
 
StackWatch: A prototype CloudWatch service for CloudStack
StackWatch: A prototype CloudWatch service for CloudStackStackWatch: A prototype CloudWatch service for CloudStack
StackWatch: A prototype CloudWatch service for CloudStack
 
Reusable, composable, battle-tested Terraform modules
Reusable, composable, battle-tested Terraform modulesReusable, composable, battle-tested Terraform modules
Reusable, composable, battle-tested Terraform modules
 
Iris: Inter-cloud Resource Integration System for Elastic Cloud Data Center
Iris: Inter-cloud Resource Integration System for Elastic Cloud Data CenterIris: Inter-cloud Resource Integration System for Elastic Cloud Data Center
Iris: Inter-cloud Resource Integration System for Elastic Cloud Data Center
 
App fabric introduction
App fabric introductionApp fabric introduction
App fabric introduction
 
Create a Varnish cluster in Kubernetes for Drupal caching - DrupalCon North A...
Create a Varnish cluster in Kubernetes for Drupal caching - DrupalCon North A...Create a Varnish cluster in Kubernetes for Drupal caching - DrupalCon North A...
Create a Varnish cluster in Kubernetes for Drupal caching - DrupalCon North A...
 
AWS as platform for scalable applications
AWS as platform for scalable applicationsAWS as platform for scalable applications
AWS as platform for scalable applications
 
2020-02-20 - HashiTalks 2020 - HashiCorp Vault configuration as code via Hash...
2020-02-20 - HashiTalks 2020 - HashiCorp Vault configuration as code via Hash...2020-02-20 - HashiTalks 2020 - HashiCorp Vault configuration as code via Hash...
2020-02-20 - HashiTalks 2020 - HashiCorp Vault configuration as code via Hash...
 
Securing your Pulsar Cluster with Vault_Chris Kellogg
Securing your Pulsar Cluster with Vault_Chris KelloggSecuring your Pulsar Cluster with Vault_Chris Kellogg
Securing your Pulsar Cluster with Vault_Chris Kellogg
 
Running an openstack instance
Running an openstack instanceRunning an openstack instance
Running an openstack instance
 
Nodejs web,db,hosting
Nodejs web,db,hostingNodejs web,db,hosting
Nodejs web,db,hosting
 
Обмен учетными данными между iOS 8 приложениями и вебом, Константин Чернухо, ...
Обмен учетными данными между iOS 8 приложениями и вебом, Константин Чернухо, ...Обмен учетными данными между iOS 8 приложениями и вебом, Константин Чернухо, ...
Обмен учетными данными между iOS 8 приложениями и вебом, Константин Чернухо, ...
 
Monitoring on Kubernetes using prometheus
Monitoring on Kubernetes using prometheusMonitoring on Kubernetes using prometheus
Monitoring on Kubernetes using prometheus
 
Monitoring on Kubernetes using Prometheus - Chandresh
Monitoring on Kubernetes using Prometheus - Chandresh Monitoring on Kubernetes using Prometheus - Chandresh
Monitoring on Kubernetes using Prometheus - Chandresh
 

More from Cloud IaaS Provider Tucha

Совмещение матриц. Можно ли из технаря сделать управленца и наоборот?
Совмещение матриц. Можно ли из технаря сделать управленца и наоборот?Совмещение матриц. Можно ли из технаря сделать управленца и наоборот?
Совмещение матриц. Можно ли из технаря сделать управленца и наоборот?
Cloud IaaS Provider Tucha
 

More from Cloud IaaS Provider Tucha (20)

Вся правда об облаках, или Облачные мифы, давайте, до свидания!
Вся правда об облаках, или Облачные мифы, давайте, до свидания!Вся правда об облаках, или Облачные мифы, давайте, до свидания!
Вся правда об облаках, или Облачные мифы, давайте, до свидания!
 
Безопасность в облаке: что она включает в себя и как её обеспечить?
Безопасность в облаке: что она включает в себя и как её обеспечить?Безопасность в облаке: что она включает в себя и как её обеспечить?
Безопасность в облаке: что она включает в себя и как её обеспечить?
 
Быль о частных облаках и зря потраченных ресурсах. Владимир мельник, СТО Tucha
Быль о частных облаках и зря потраченных ресурсах. Владимир мельник, СТО TuchaБыль о частных облаках и зря потраченных ресурсах. Владимир мельник, СТО Tucha
Быль о частных облаках и зря потраченных ресурсах. Владимир мельник, СТО Tucha
 
Публичный IaaS на базе ПО с открытым кодом
Публичный IaaS на базе ПО с открытым кодомПубличный IaaS на базе ПО с открытым кодом
Публичный IaaS на базе ПО с открытым кодом
 
Облачный сервис - безопасен ли он для адвокатской деятельности?
Облачный сервис - безопасен ли он для адвокатской деятельности?Облачный сервис - безопасен ли он для адвокатской деятельности?
Облачный сервис - безопасен ли он для адвокатской деятельности?
 
Построение облачной СХД на базе ПО с открытым кодом (Ceph). Бюджетно и надёжно
Построение облачной СХД на базе ПО с открытым кодом (Ceph). Бюджетно и надёжноПостроение облачной СХД на базе ПО с открытым кодом (Ceph). Бюджетно и надёжно
Построение облачной СХД на базе ПО с открытым кодом (Ceph). Бюджетно и надёжно
 
Построение собственного вычислительного облака на базе программного обеспечен...
Построение собственного вычислительного облака на базе программного обеспечен...Построение собственного вычислительного облака на базе программного обеспечен...
Построение собственного вычислительного облака на базе программного обеспечен...
 
Безболезненная миграция высоконагруженных веб-приложений с хостинга на хостинг
Безболезненная миграция высоконагруженных веб-приложений с хостинга на хостингБезболезненная миграция высоконагруженных веб-приложений с хостинга на хостинг
Безболезненная миграция высоконагруженных веб-приложений с хостинга на хостинг
 
Tucha
TuchaTucha
Tucha
 
Забег на скорость: насколько быстро можно реально перенести облачную инфрастр...
Забег на скорость: насколько быстро можно реально перенести облачную инфрастр...Забег на скорость: насколько быстро можно реально перенести облачную инфрастр...
Забег на скорость: насколько быстро можно реально перенести облачную инфрастр...
 
Эволюция онлайн. Как из «скрипта-обезьянки» вырастить полноценного помощника
Эволюция онлайн. Как из «скрипта-обезьянки» вырастить полноценного помощникаЭволюция онлайн. Как из «скрипта-обезьянки» вырастить полноценного помощника
Эволюция онлайн. Как из «скрипта-обезьянки» вырастить полноценного помощника
 
Совмещение матриц. Можно ли из технаря сделать управленца и наоборот?
Совмещение матриц. Можно ли из технаря сделать управленца и наоборот?Совмещение матриц. Можно ли из технаря сделать управленца и наоборот?
Совмещение матриц. Можно ли из технаря сделать управленца и наоборот?
 
Дрейф у суміжні області: де та як може додатково заробляти фрілансер.
Дрейф у суміжні області: де та як може додатково заробляти фрілансер.Дрейф у суміжні області: де та як може додатково заробляти фрілансер.
Дрейф у суміжні області: де та як може додатково заробляти фрілансер.
 
Табор уходит в небо, или Переход в облачный офис как способ повысить эффектив...
Табор уходит в небо, или Переход в облачный офис как способ повысить эффектив...Табор уходит в небо, или Переход в облачный офис как способ повысить эффектив...
Табор уходит в небо, или Переход в облачный офис как способ повысить эффектив...
 
TuchaHost - хостинг серверов в облаке
TuchaHost - хостинг серверов в облакеTuchaHost - хостинг серверов в облаке
TuchaHost - хостинг серверов в облаке
 
Вебинар "Как организовать мобильный офис незаметно от окружающих"
Вебинар "Как организовать мобильный офис незаметно от окружающих"Вебинар "Как организовать мобильный офис незаметно от окружающих"
Вебинар "Как организовать мобильный офис незаметно от окружающих"
 
Онлайн-сервис Yaware для учёта рабочего времени
Онлайн-сервис Yaware для учёта рабочего времениОнлайн-сервис Yaware для учёта рабочего времени
Онлайн-сервис Yaware для учёта рабочего времени
 
Эволюция лени, Владимир Мельник, Tucha
Эволюция лени, Владимир Мельник, TuchaЭволюция лени, Владимир Мельник, Tucha
Эволюция лени, Владимир Мельник, Tucha
 
Цена секунды, или Влияние скорости работы сервиса на его коммерческую эффекти...
Цена секунды, или Влияние скорости работы сервиса на его коммерческую эффекти...Цена секунды, или Влияние скорости работы сервиса на его коммерческую эффекти...
Цена секунды, или Влияние скорости работы сервиса на его коммерческую эффекти...
 
Сайт неваляшка, Владимир Мельник, Tucha
Сайт неваляшка, Владимир Мельник, TuchaСайт неваляшка, Владимир Мельник, Tucha
Сайт неваляшка, Владимир Мельник, Tucha
 

Recently uploaded

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 

MonkeyMan – a Perl5 framework for Apache CloudStack automation

  • 1.
  • 2. What do we like in Apache CloudStack? Manageability • unified management portal; • browser-compatible VNC-interface; • powerful API. Omnivorousness • hypervisors: KVM, LXC, XEN, VMWare, Hyper-V; • storages: any filesystems, including clustered filesystems that could be accessed by a shared- mountpoint GlusterFS, Ceph, NFS, SMB, GFS2, OCFS2. Security • encrypted networking (IPSec, HTTPS); • firewalls and load-balancers (internal VR, NetScaler, F5, FortiGate, pfSense and other beasts); • open source ideology. https://cloudstack.apache.org/
  • 3. What else do we like in Apache CloudStack? Reliablity • clusterisation, live migration; • high-availability, affinity groups; • volume and VM snapshots. Rapid deployment • ISO-images and templates; • OS preferences for the host; • host and storage tags, which can be used in the service and storage offerings. Flexible access policies • domains, accounts, users; • resouce limits; • LDAP support. https://cloudstack.apache.org/
  • 4. MonkeyMan: the cloud manager MonkeyMan - the automation framework Implemented in Perl5 with Moose All ACS objects are Perl objects Flexible API vocabularies XML and XPath Pluggable and replaceable modules http://monkeyman.tucha.ua/
  • 5. 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 ); Why use Moose? Attributes Accessors Validation Roles Subclasses Syntax extentions Art by www.animalcrewshop.com http://monkeyman.tucha.ua/
  • 6. MonkeyMan: some of utilities
  • 7.
  • 8.
  • 9. MonkeyMan: a sample ACS query 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: API vocabularies (composing a request) 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.
  • 12.
  • 13.
  • 14. MonkeyMan: ACS vocabularies (parsing a response) 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/
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23. MonkeyMan: logging and debugging http://monkeyman.tucha.ua/ $logger->debugf(’The %s %s is %s‘, $vm_object, $vm_object->get_type(noun => 1), $vm_object->qxp(’/status’) );
  • 24.
  • 25.
  • 26. Thanks for your interest! http://monkeyman.tucha.ua/