title |
---|
Ansible Roles |
Follow along: http://robertdebock.nl/
- Server provisioning tool
- Ansible Roles are sharable
- High quality roles are great
- Easier to write roles
- Easier to consume roles
Inspiration/suggestions:
- ansible-role-httpd
- ansible-role-browsers
- ansible-role-devtools
- ansible-role-opstools
molecule init role \
--driver-name docker \
--verifier-name goss \
--role-name ansible-role-httpd
- No reboot or systemctl, but fast.
molecule init role \
--driver-name vagrant \
--verifier-name goss \
--role-name ansible-role-httpd
vi ansible-role-httpd/molecule/default/molecule.yml
Note:
box: centos/7
vi ansible-role-httpd/molecule/default/playbook.yml
Note:
- name: Converge
hosts: all
become: true
roles:
- role: ansible-role-httpd
tasks:
- name: test connection
wait_for:
port: 80
vi ansible-role-httpd/molecule/default/tests/test_default.yml
Note:
package:
httpd:
installed: true
service:
httpd:
enabled: true
running: true
process:
httpd:
running: true
port:
tcp6:80
listening: true
ip:
- '::'
vi ansible-role-httpd/tasks/main.yml
Note:
# tasks file for ansible-role-httpd
- name: install apache
package:
name: httpd
- name: start apache
service:
name: httpd
state: started
enabled: true
molecule init role \
--driver-name docker \
--verifier-name goss \
--role-name ansible-role-browsers
- No reboot or systemctl, but fast.
molecule init role \
--driver-name vagrant \
--verifier-name goss \
--role-name ansible-role-browsers
vi ansible-role-browsers/molecule/default/molecule.yml
Note:
box: centos/7
vi ansible-role-browsers/molecule/default/playbook.yml
Note:
- name: Converge
hosts: all
become: true
roles:
- role: ansible-role-browsers
tasks:
- name: test browsers
command: "{{ item.name }} {{ item.argument }}"
changed_when: no
with_items:
- name: firefox
argument: -version
- name: chrome
argument: --version
vi ansible-role-browsers/molecule/default/tests/test_default.yml
Note:
package:
firefox:
installed: true
package:
chrome:
installed: true
vi ansible-role-browsers/tasks/main.yml
Note:
# tasks file for ansible-role-browsers
- name: install browser
package:
name: firefox
with_items:
- firefox
- chrome
molecule init role \
--driver-name docker \
--verifier-name goss \
--role-name ansible-role-devtools
- No reboot or systemctl, but fast.
molecule init role \
--driver-name vagrant \
--verifier-name goss \
--role-name ansible-role-devtools
vi ansible-role-devtools/molecule/default/molecule.yml
Note:
box: centos/7
vi ansible-role-devtools/molecule/default/playbook.yml
Note:
- name: Converge
hosts: all
become: true
roles:
- role: ansible-role-devtools
tasks:
- name: test software
command: "{{ item.name }} {{ item.argument }}"
changed_when: no
with_items:
- name: vim
argument: --version
vi ansible-role-devtools/molecule/default/tests/test_default.yml
Note:
package:
vim:
installed: true
vi ansible-role-devtools/tasks/main.yml
Note:
# tasks file for ansible-role-devtools
- name: install devtool
package:
name: "{{ item }}"
with_items:
- vim
molecule init role \
--driver-name docker \
--verifier-name goss \
--role-name ansible-role-opstools
- No reboot or systemctl, but fast.
molecule init role \
--driver-name vagrant \
--verifier-name goss \
--role-name ansible-role-opstools
vi ansible-role-opstools/molecule/default/molecule.yml
Note:
box: centos/7
vi ansible-role-opstools/molecule/default/playbook.yml
Note:
- name: Converge
hosts: all
become: true
roles:
- role: ansible-role-opstools
tasks:
- name: test opstool
command: "{{ item.name }} {{ item.argument }}"
changed_when: no
with_items:
- name: tcpdump
argument: --version
- name: strace
argument: -V
vi ansible-role-opstools/molecule/default/tests/test_default.yml
Note:
package:
tcpdump:
installed: true
package:
strace:
installed: true
vi ansible-role-opstools/tasks/main.yml
Note:
# tasks file for ansible-role-opstools
- name: install opstool
package:
name: "{{ item }}"
with_items: "{{ opstools_packages }}"
vi ansible-role-opstools/vars/main.yml
opstools_packages:
- tcpdump
- strace
cd ansible-role-MYROLE/
molecule test
Go to GitHub, create a repository. Go to Travis CI, enable builds. Go to Galaxy add your role.