Scaling Experiments.

Slides:



Advertisements
Similar presentations
Sponsored by the National Science Foundation Lab Zero: A First Experiment.
Advertisements

Sponsored by the National Science Foundation Systematic Experimentation Case Study: Virtual Router Failure Restoration Xuan Liu UMKC/GENI Project Office.
Useful Tools for Testing
Using the jFed tool to experiment from zero to hero Brecht Vermeulen FGRE, July 7 th, 2015.
Sponsored by the National Science Foundation Configuration Management For Experimenters Sarah Edwards, GPO Max Ott, NICTA.
Building service testbeds on FIRE D5.2.5 Virtual Cluster on Federated Cloud Demonstration Kit August 2012 Version 1.0 Copyright © 2012 CESGA. All rights.
Sponsored by the National Science Foundation Scaling Up: Growing the Topology of an Existing Experiment in GENI Sarah Edwards GENI Project Office Xuan.
Working Out with KURL! Shayne Koestler Kinetic Data.
Sponsored by the National Science Foundation Configuration Management For Experimenters: Ansible Hands-On Sarah Edwards, GPO.
Using the jFed tool to experiment from zero to hero Brecht Vermeulen Thijs Walcarius GEC 22, March 24 th, 2015.
Cloud Standard API and Contextualization
K. Harrison CERN, 20th April 2004 AJDL interface and LCG submission - Overview of AJDL - Using AJDL from Python - LCG submission.
Sponsored by the National Science Foundation Scaling Up: Growing the Topology of an Existing Experiment in GENI Sarah Edwards GENI Project Office with.
Sponsored by the National Science Foundation 1 September 15, 2015 Are you ready for the tutorial? 1.Grab a Worksheet and instructions 2.Did you do the.
Sponsored by the National Science Foundation Behind the Scenes of GENI Experimentation An Introduction to GENI Tools Sarah Edwards, GENI Project Office.
Sponsored by the National Science Foundation 1 GREESC15– May 25, 2015 Are you ready for the tutorial? 1.Grab a Worksheet and instructions 2.Did you do.
Sponsored by the National Science Foundation Lab Zero: A First Experiment using GENI Sarah Edwards, GENI Project Office.
Sponsored by the National Science Foundation LabWiki Tutorial (OMF/OML) Divya Bhat, Mike Zink, Pieter Becue, Brecht Vermeulen GEC20 July 8 th 2014, Ghent,
Sponsored by the National Science Foundation 1 Last updated April 1, 2013 Are you ready for the tutorial? 1.Sign In 2.Grab a Worksheet 3.Did you do the.
Sponsored by the National Science Foundation Tutorial: Introduction to Omni Niky Riga GENI Project Office GREESC13 $ omni.py createsliver aliceslice myRSpec.xml.
Systematic Experimentation: Automating Experiments and ExoGENI Image Snapshots Paul Ruth, RENCI / UNC Chapel Hill.
Sponsored by the National Science Foundation 1 ICDCS13: July 8, 2013 Are you ready for the tutorial? 1.Grab a Worksheet and instructions 2.Did you do the.
Ansible with vCloud Air Workshop
Sponsored by the National Science Foundation Lab Zero: A First Experiment using GENI.
Behind the Scenes of GENI Experimentation Understanding GENI AM API and RSpec Sponsored by the National Science Foundation
Sponsored by the National Science Foundation Systematic Experimentation in GENI Sarah Edwards GENI Project Office.
Linux Services Configuration
Behind the Scenes of GENI Experimentation Understanding GENI AM API and RSpec Sponsored by the National Science Foundation
Sponsored by the National Science Foundation Behind the Scenes of GENI Experimentation An Introduction to GENI Tools Sarah Edwards, GENI Project Office.
Maite Barroso - 10/05/01 - n° 1 WP4 PM9 Deliverable Presentation: Interim Installation System Configuration Management Prototype
Sponsored by the National Science Foundation Today’s Exercise.
Linux Operations and Administration
UNDERSTANDING YOUR OPTIONS FOR CLIENT-SIDE DEVELOPMENT IN OFFICE 365 Mark Rackley
Sponsored by the National Science Foundation Behind the Scenes of GENI Experimentation An Introduction to GENI Tools Sarah Edwards GENI Project Office.
EGI-InSPIRE RI EGI Webinar EGI-InSPIRE RI Porting your application to the EGI Federated Cloud 17 Feb
Automating Legacy Network Devices
Ansible and Ansible Tower 1 A simple IT automation platform November 2015 Leandro Fernandez and Blaž Zupanc.
Cloud Installation & Configuration Management. Outline  Definitions  Tools, “Comparison”  References.
Sponsored by the National Science Foundation Systematic Experimentation Sarah Edwards GENI Project Office.
Introduction to Ansible
Sponsored by the National Science Foundation 1 GEC16: March 19, 2013 Are you ready for the tutorial? 1.Sign In 2.Grab a Worksheet 3.Did you do the pre-work?
1 Policy Based Systems Management with Puppet Sean Dague
BY: SALMAN 1.
Introduction to Ansible
Core LIMS Training: Project Management
@ Bucharest DevOps Hacker Meetup
Using the jFed tool to experiment from zero to hero
Essentials of UrbanCode Deploy v6.1 QQ147
Useful Tools for Testing
Site Administration Tools: Ansible
Modernize Your Operations
BY: SALMAN.
CMS DCS: WinCC OA Installation Strategy
Spark Presentation.
Understanding the AM API through a simple experiment
GLAST Release Manager Automated code compilation via the Release Manager Navid Golpayegani, GSFC/SSAI Overview The Release Manager is a program responsible.
IT Atoumation / Conf. Mgmt...
Configuration Management
Intro to Config Management Using Salt Open Source
Ansible and Zabbix Rushikesh Prabhune (Software Technical Consultant)
Introduction to Ansible
OpenStack-alapú privát felhő üzemeltetés
Presented By - Avinash Pawar
Module 01 ETICS Overview ETICS Online Tutorials
Basic Tutorial Part II 31/12/2018.
Basic Tutorial Part II: Virtual Wall
Basic Tutorial Part II: w-iLab.t
Cloud Computing.
GENI Exploring Networks of the Future
Configuration management suite
Presentation transcript:

Scaling Experiments

Contents of this tutorial Recommended workflow for creating and scaling up experiments Overview of available tools for automation Overview of available tools for scaling up Hands-on with Ansible 18/11/2018

Recommended workflow 1. Build the smallest reasonable topology 2. Orchestrate and automate 3. Iterate and save your progress 4. Scale your experiment 18/11/2018

1. Build the smallest reasonable topology client server host OVS switch router worker master 18/11/2018

2. Automate as you go Use Configuration Management Systems to automate installation and configuration of software Many tools available for this job: Ansible, Chef, Puppet, … 18/11/2018

3. Save your progress Log all of your experimental artifacts for every experiment that works RSpec image install script custom software measurements etc. Use version control to store your artifacts Always know the last configuration that worked 18/11/2018

4. Scale your experiment Only scale up when your smallest reasonable experiment is working Adapt your request RSpec to add more nodes Roll your own scaling script: mostly copy/pasting with minimal editing required Use geni-lib 18/11/2018

Some Definitions Configuration Management Ensure a computer system is in a specified state Software Deployment Install software onto a system Push vs Pull Server pushes onto the resource Resource pulls configuration onto itself Agent Client software

CM Systems are Idempotent CM systems are usually idempotent Repeated runs generates the same state Contrast to a shell script which encodes how to transition between two known states The state is usually easy to describe. iperf should be (or not be) installed File foo.html should exist (or not) Describing all possible transitions from every possible previous state is hard. If iperf is not already installed, then install it, else do nothing Unknown State A Known State B ? CM CM Idempotent Known State A State B Shell script A -> B Idempotent

Compare/Contrast Puppet Ansible Chef Salt Fabric Push/Pull Pull Push Push OR Push, pull and peer-to-peer Agent/Agentless Agent None Authentication/Authorization Certificates SSH PKI Languages ~ruby YAML Jinga2 Python ruby YAML

Ansible requirements On the servers: Your public key  Done by testbed On the experiment controller: Your private key on your “controller” Inventory file which describes the experiment Both provided by jFed Ansible installed    18/11/2018

Ansible Characteristics Push-based from a machine of choice Manage nodes on-demand from any host with an ssh client Can set up a server with recurring Ansible task Facts are gathered for managed nodes before making changes to the node Agentless on managed nodes ssh is used for transport of config and code Modules are run on nodes based on a playbook Ansible modules are idempotent 18/11/2018

Bottom Line: Characteristics There is no need for you to do anything special to your experiment in order for you to use Ansible! 18/11/2018

Ansible components Inventory file Contains ssh information, aliases, and groups File format similar to ini [ofx] ofx1 ansible_ssh_host=ofx1.example.com ofx2 ansible_ssh_host=ofx2.example.com [clients] client1 ansible_ssh_host=client1.example.com client2 ansible_ssh_host=client2.example.com client3 ansible_ssh_host=client3.example.com 18/11/2018

Ansible components Ansible modules Idempotent functional building blocks Many existing core and third-party modules Users can write their own modules No specific language required Shortcuts exist for Python 18/11/2018

Ansible components Playbooks Glue modules together and map to (set of) nodes Mostly written in YAML with module-specific details Template files written in Jinja2 --- - hosts: all tasks: - name: Install Nginx apt: pkg=nginx state=installed update_cache=true 18/11/2018

Bottom Line: Components You can pick up basic Ansible by looking at examples. The languages are relatively simple and common. If you know basic Python, you have the tools to be an Ansible power user! 18/11/2018

Using Ansible in your experiment 2 scenario’s supported: Run Ansible locally on your workstation  Best option for active development of your experiment Add an extra node which acts as Ansible controller  Best option for creating a reproducible experiment 18/11/2018

Ansible workflow on testbeds Reserve resources Run experiment Dev-Test cycle Create Ansible inventory Create or modify playbook Run playbook Ansible modules Use jFed export function Testbed resources 18/11/2018

Retrieving Ansible configuration files from jFed 18/11/2018

Do it yourself! http://doc.ilabt.iminds.be/jfed-documentation/tutorials/helloansible.html 18/11/2018

Ansible-service <node client_id="ansible" exclusive="true" component_manager_id="urn:publicid:IDN+wall2.ilabt.iminds.be+authority+cm" xmlns:jfed="http://jfed.iminds.be/rspec/ext/jfed/1" > <sliver_type name="raw-pc"/> <services> <install install_path="/local" url="http://users.ugent.be/~twalcari/hello-geni.tar.gz"/> <execute shell="sh" command="cd /local && sudo /bin/bash install-ansible.sh" jfed:finished_flag="/tmp/ansible-install-finished"/> <jfed:ansible inventory="/local/hosts" execute_playbook="/local/install-all.yml" /> </services> </node> 18/11/2018

Ansible-service <node client_id="serverA" exclusive="true" component_manager_id="urn:publicid:IDN+wall2.ilabt.iminds.be+authority+cm"> <sliver_type name="raw-pc"/> <jfed:ansible_group name="server"/> </node> Adds a node to a group in the inventory-file ansible ansible_host=n063-16a.wall2.ilabt.iminds.be [server] serverA ansible_host=n063-17a.wall2.ilabt.iminds.be [client] client ansible_host=n063-18a.wall2.ilabt.iminds.be 18/11/2018

Distribute SSH-keypair <jfed:distribute_ssh_keypair user="my_user_id" /* defaults to YOUR userId */ location="/local/my_id_rsa" /* defaults to ~/.ssh/id_rsa */ /> Generates an SSH-keypair Registers public-key for login access Uploads private-key to all nodes in the experiment In practice the default values are the ones you want: <jfed:distribute_ssh_keypair /> 18/11/2018

Scaling manually: nodes <rspec type="request" xmlns=…> <node client_id="node0" exclusive="true" component_manager_id="urn:publicid:IDN+wall2.ilabt.iminds.be+authority+cm"> <sliver_type name="raw-pc"/> </node> </rspec> Copy paste <node>-element with all its child elements Change client_id of node to be unique 18/11/2018

Scaling manually: nodes <rspec type="request" xmlns=…> <node client_id="node0" exclusive="true" component_manager_id="urn:publicid:IDN+wall2.ilabt.iminds.be+authority+cm"> <sliver_type name="raw-pc"/> </node> <node client_id="node1" exclusive="true" component_manager_id="urn:publicid:IDN+wall2.ilabt.iminds.be+authority+cm"> </rspec> 18/11/2018

Scaling manually: nodes with links <rspec type="request" xmlns=…> <node client_id="node0" exclusive="false" component_manager_id="urn:publicid:IDN+utahddc.geniracks.net+authority+cm"> <sliver_type name="default-vm"/> <interface client_id="node0:if0"> <ip address="192.168.0.1" netmask="255.255.255.0" type="ipv4"/> </interface> </node> <node client_id="node1" exclusive="false" component_manager_id="urn:publicid:IDN+utahddc.geniracks.net+authority+cm"> <interface client_id="node1:if0"> <ip address="192.168.0.2" netmask="255.255.255.0" type="ipv4"/> <link client_id="link0"> <component_manager name="urn:publicid:IDN+utahddc.geniracks.net+authority+cm"/> <interface_ref client_id="node0:if0"/> <interface_ref client_id="node1:if0"/> <link_type name="lan"/> </link> </rspec> 18/11/2018

Pay attention to the details! Scaling manually Copy paste <node>-element with all its child elements Change client_id of node and interface to be unique Change IP-addresses of interface to prevent duplicates Add extra interface-reference in <link> Pay attention to the details! 18/11/2018

What is geni-lib? Python library for creating RSpecs and querying the GENI Aggregate Manager API Has additional tools to ease scaling up  http://groups.geni.net/geni/wiki/GEC21Agenda/ScalingUp Allows you to: Create RSpec requests programatically List resources; Create experiments; Change experiments; Query experiments; …

Advantages / Disadvantages Very powerful Gives low-level access to the various resources Requires a deep understanding of how the GENI AM API works Little support for Fed4FIRE resources 18/11/2018

Example: Create an request 18/11/2018

Example: Query available resources 18/11/2018

Additional resources on geni-lib Documentation: https://geni-lib.readthedocs.io Tutorial on scaling: http://groups.geni.net/geni/wiki/GEC21Agenda/ScalingUp 18/11/2018