Ansible Galaxy is the hub of ansible scripts contributed by users.
To follow this article its important that you know about ansible. We have a simple, easy to follow blog about ansible scripting here(https://micropyramid.com/blog/how-to-deploy-django-with-uwsgi-and-nginx-using-ansible-play-book/).
Run: ansible-galaxy init my_playbook
This command creates the following structure:
my_playbook
defaults/
files/
handlers/
meta/
tasks/
templates/
vars/
README.md
defaults: You can declare default configurations or variables.
handlers: Similar to tasks but get invoked by a notifier. Eg: if a task has changed some settings then it will notify this handler to restart a service.
meta: This file contains information about dependencies the current task has to resolve first, author info etc..
tasks: It contains the core logic.
templates: These are jinja2 templates which are simple configuration files.
vars: Contains all the local variables
Lets install mysql over Ubuntu server.
First we need to provide password to install mysql. So you can provide password through defaults file or vars file.
In vars/main.yml
---
# vars file for mysql_server
mysql_server_password: mysql_server_password
Now create a task which sets password and installs mysql.
In tasks/main.yml:
---
# tasks file for mysql_server
- name: Setting MySQL root password before installing
debconf: "name='mysql-server' question='mysql-server/root_password' value='{{mysql_server_password | quote}}' vtype='password'"
- name: Confirm MySQL root password before installing
debconf: "name='mysql-server' question='mysql-server/root_password_again' value='{{mysql_server_password | quote}}' vtype='password'"
- name: Install MySQL
apt: "package='{{ item }}' state=present force=yes"
when: ansible_os_family == 'Debian'
with_items:
- mysql-server
- libmysqlclient-dev
In test.yml (this file should be in the path of my_playbook directory)
---
- hosts: my_server
remote_user: root
roles:
- { role: my_playbook }
Run: ansible-playbook test.yml
MySQL server will be installed over server.
From now on you can simply use "ansible-galaxy pull your_role_name" to access your role.