Ansible Playbook Example: Deploying a Web Application
---
- name: Deploy Web Application
hosts: webservers
become: yes
vars:
http_port: 80
max_clients: 200
tasks:
- name: Install nginx web server
apt:
name: nginx
state: present
update_cache: yes
- name: Upload the nginx configuration file
template:
src: templates/nginx.conf.j2
dest: /etc/nginx/nginx.conf
notify:
- restart nginx
- name: Ensure nginx is running
service:
name: nginx
state: started
enabled: true
- name: Copy website files
copy:
src: /src/webfiles/
dest: /var/www/html/
owner: www-data
group: www-data
mode: 0644
handlers:
- name: restart nginx
service:
name: nginx
state: restarted
Explanation of the Playbook:
- Hosts: Targets the
webservers
group, which should be defined in your inventory file. - Become: Executes tasks with administrative (
sudo
) privileges. - Vars: Defines variables for use within the playbook.
http_port
andmax_clients
can be used in configuration templates. - Tasks:
- Install nginx: Uses the
apt
module to install Nginx on Debian-based systems. Ensures the package cache is updated before installation. - Upload the nginx configuration file: Uses the
template
module to push a customized nginx configuration from a local template (nginx.conf.j2
). - Ensure nginx is running: Ensures that the Nginx service is started and enabled to start on boot using the
service
module. - Copy website files: Transfers files from a local directory to the web server’s root directory. Sets the appropriate permissions and ownership.
- Install nginx: Uses the
- Handlers:
- restart nginx: Defined to restart Nginx whenever the nginx configuration file changes. This is triggered by the
notify
directive in the template task.
- restart nginx: Defined to restart Nginx whenever the nginx configuration file changes. This is triggered by the
This playbook is a basic example for deploying a static web application using Nginx. It demonstrates the use of modules like apt
, template
, service
, and copy
, which are commonly used in real-world scenarios to manage web servers and deploy applications. Handlers are particularly useful for restarting services only when necessary, optimizing resource usage during playbook runs.
No comments:
Post a Comment