Ansible 2 Ansible Galaxy 2
Jeff Geerling (geerlingguy)
Ansible St. Louis Meetup - 2016-03-09
Ansible 2 - Motivation
New YAML parsing engine
100% backwards compatibility (playbooks)
Ran out of Van Halen songs
Task Blocks---- hosts: all
tasks: - block: - name: Script to connect the app to a monitoring service. script: monitoring-connect.sh rescue: - name: This will only run in case of an error in the block. debug: msg="There was an error in the block." always: - name: This will always run no matter what. debug: msg="This always executes." when: ansible_os_family == 'RedHat' become: yes tags: ['monitoring', 'redhat']
(Actually) Helpful Errors
$ ansible-playbook test.yml ERROR! Syntax Error while loading YAML.
The error appears to have been in '/Users/jeff.geerling/test/test.yml':line 9, column 1, but may be elsewhere in the file depending on the exactsyntax problem.
- include: test.yml with_items: - 1 - 2 - 3 when: runtime_variable_is_true
linear - standard one-by-one, wait for all hosts
free - hosts go as fast as they can
More for OpenStack, AWS, VMware, Windows, etc
apk, bundler, expect, find, iptables, pear, puppet...
Variable Improvements Settable with vars at play, block, role, task levels
Scoped to tasks contained within
tasks: - block: - name: Script to connect the app to a monitoring service. script: monitoring-connect.sh rescue: - name: This will only run in case of an error in the block. debug: msg="There was an error in the block." vars: workspace: "/tmp"
Added meta: refresh_inventory to force reload
Template code (doesn't turn bools/numbers into strings)
Empty/null variables (doesn't turn into strings)
More on Ansible 2
Ansible 2.0 Launch (Ansible Blog)
Ansible 2.0 Changelog
Ansible 2.0 and Windows
Galaxy 2 - Motivation
Galaxy was more or less unchanged since launch in 2014.
Role maintainers had to do a lot of manual work.
Best practices started forming in the community (e.g. testing).
'Organizations' weren't a thing; everything namespaced to individuals.
GitHub stars and watchers
Travis test status built in
Better role import UX Roles can be imported from Organizations or
individual users on GitHub. Easy as clicking 'import'
To switch a role from username to organization, delete then import again
Better role management Role management on Galaxy is much better
Travis CI Integration
Use Travis CI notification: to automatically notify Galaxy on role updates and new tags:
1. Add Travis token to your Galaxy role settings
2. Enable the repo in Travis CI
3. Add notification config to .travis.yml
notifications: webhooks: https://galaxy.ansible.com/api/v1/notifications/
Role scaffold (init) includes basic Travis integration
Better search, import, delete, setup and login
More on Galaxy 2
Ansible Galaxy 2.0 Launches
__________ < the end! > ---------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||