============================================ Automated Cloud Provisioning with Salt Cloud ============================================ :Speaker: Christer Edwards :Date: 2013-02-23 What is it? =========== + Disclaimer: THIS IS BETA! + Public cloud provisioning tool + Integrate into cloud providers cleanly, quickly, easily + Manage via maps and profiles + Pre-installs Salt, but doesn't have to be used + Meant to be a generic cloud mgmt thingy Configuration ============= + Configs are yaml + Specify provider settings here, too. + Multiple providers works too ``/etc/salt/cloud``:: minion: master: salt.domain.tld Profiles ======== - Designate VMs inside profile config ``/etc/salt/cloud.profiles``:: centos_linode: provider: linode image: CentoOS 6.2 64bit size: Linode 512 minion: master.salt.domain.tld grains: role: webserver + Define Salt master and custom grains + Allows you to assing roles, or different masters per providers - See: Salt ``syndics`` - Syndics are tiered masters (master -> sub-masters -> minions) - e.g. one syndic master per cloud provider - Controlled by master-master Maps ==== + Specify a prfile and then machines to make from it + Example:: fedora_high: - redis1 - redis2 - redis3 centos_high: - mysql1 - mysql2 - mysql3 Then run it:: salt-cloud -m /path/to/map.file -P + ``-P`` = parallel exec + Map files can also include grains! Bootstrapping Salt ================== + Supports a few ways for strapping Salt onto new machines + ``script:`` (<0.8.4) config setting:: fedora_linode: ... script: Fedora + ``salt-bootstrap`` (>=0.8.4) utility + src:``saltcloud/deploy`` has distro-specific insall scripts (e.g. ``Fedora.sh``) + >=0.8.4 if you omit ``script:``, ``salt-bootstrap`` is used + Update manually:: salt-cloud [-u|--update-boostrap] No Deployment ============= + You can provision without deploying Salt + ``deploy: False`` or ``script: None`` in profile + CLI: ``salt-cloud --no-deploy -p `` What's coming? ============== + Salt 0.14.0 will include ``salt-virt`` + KVM support (libvirt) + ``salt.run virt.query`` + ``salt.run virt.init $name $cpu $ram $image`` + Serve images from ``salt://``, ``http://``, ``ftp://``