============================== Salt Cloud 0.8.5 Release Notes ============================== Welcome to 0.8.5! Some important things have happened in this release, that you'll want to take note of. The first thing that may trip you up when installing directly is that Paramiko is no longer a dependency, and botocore and sshpass are new dependencies. Read on to see what else has happened. Documentation ============= The documentation for Salt Cloud can be found on Read the Docs: https://salt-cloud.readthedocs.io Download ======== Salt Cloud can be downloaded and install via pypi: https://pypi.python.org/packages/source/s/salt-cloud/salt-cloud-0.8.5.tar.gz Some packages have been made available for salt-cloud and more on their way. Packages for Arch and FreeBSD are being made available thanks to the work of Christer Edwards, and packages for RHEL and Fedora are being created by Clint Savage. The Ubuntu PPA is being managed by Sean Channel. Package availability will be announced on the salt mailing list. Salt Bootstrap ============== In 0.8.4, the default deploy script was set to bootstrap-salt-minion. Since then, the Salt Boostrap script has been extended to be able to install more than just minions, and as such, has been renamed. It is now called bootstrap-salt, and has been renamed in Salt Cloud accordingly. Check out the salt-bootstrap project for more details: https://github.com/saltstack/salt-bootstrap Just another reminder: For those of you still using "os" in your profiles, this option was renamed to "script" in 0.8.2, and your configuration should be updated accordingly. Updating Salt Bootstrap ======================= If you like running the latest and greatest version of salt-bootstrap, but you're sick of tracking down the source directory to update it, a new option has been added to update it for you. .. code-block:: bash salt-cloud -u salt-cloud --update-bootstrap Bear in mind that this updates to the latest (unstable) version, so use with caution. Modify AWS Tags =============== One of the features of AWS is the ability to tag resources. In fact, under the hood, the names given to EC2 instances by salt-cloud are actually just stored as a tag called Name. The ability to manage tags on AWS instances has now been added to Salt Cloud. .. code-block:: bash salt-cloud -a get_tags mymachine salt-cloud -a set_tags mymachine tag1=somestuff tag2='Other stuff' salt-cloud -a del_tags mymachine tag1,tag2,tag3 Rename AWS Instances ==================== As mentioned above, AWS instances are named via a tag. However, renaming an instance by renaming its tag will cause the salt keys to mismatch. A rename function has been added which renames both the instance, and the salt keys. .. code-block:: bash salt-cloud -a rename mymachine newname=yourmachine AWS Termination Protection ========================== AWS allows the user to enable and disable termination protection on a specific instance. An instance with this protection enabled cannot be destroyed. .. code-block:: bash salt-cloud -a enable_term_protect mymachine salt-cloud -a disable_term_protect mymachine Setting up New Salt Masters =========================== It has become increasingly common for users to set up multi-hierarchal infrastructures using Salt Cloud. This sometimes involves setting up an instance to be a master in addition to a minion. With that in mind, you can now law down master configuration on a machine by specifying master options in the profile or map file. .. code-block:: yaml make_master: True This will cause Salt Cloud to generate master keys for the instance, and tell salt-bootstrap to install the salt-master package, in addition to the salt-minion package. The default master configuration is usually appropriate for most users, and will not be changed unless specific master configuration has been added to the profile or map: .. code-block:: yaml master: user: root interface: 0.0.0.0 Keeping /tmp/ Files =================== When Salt Cloud deploys an instance, it uploads temporary files to /tmp/ for salt-bootstrap to put in place. After the script has run, they are deleted. To keep these files around (mostly for debugging purposes), the --keep-tmp option can be added: .. code-block:: bash salt-cloud -p myprofile mymachine --keep-tmp For those wondering why /tmp/ was used instead of /root/, this had to be done for images which require the use of sudo, and therefore do not allow remote root logins, even for file transfers (which makes /root/ unavailable). Deploy Script Arguments ======================= Custom deploy scripts are unlikely to need custom arguments to be passed to them, but salt-bootstrap has been extended quite a bit, and this may be necessary. script_args can be specified in either the profile or the map file, to pass arguments to the deploy script: .. code-block:: yaml aws-amazon: provider: aws image: ami-1624987f size: Micro Instance ssh_username: ec2-user script: bootstrap-salt script_args: -c /tmp/ This has also been tested to work with pipes, if needed: .. code-block:: yaml script_args: '| head' Remove Old SSH Keys =================== When an instance is destroyed, its IP address is usually recycled back into the IP pool. When such an IP is reassigned to you, and the old key is still in your known_hosts file, the deploy script will fail due to mismatched SSH keys. To mitigate this, add the following to your main cloud configuration: .. code-block:: yaml delete_sshkeys: True