diff --git a/Ansible/Ansible_PlayBook.md b/Ansible/Ansible_PlayBook.md new file mode 100644 index 0000000..fe252e6 --- /dev/null +++ b/Ansible/Ansible_PlayBook.md @@ -0,0 +1,115 @@ + + +# Ansible Playbook Guide + +Ansible Playbooks are YAML files that define a series of tasks to automate server configuration, deployment, and management. This guide provides instructions on how to run a playbook and includes several examples to help you get started. + +## Running an Ansible Playbook + +To execute an Ansible Playbook, use the following command: + +```bash +ansible-playbook -i +``` + +- **``**: The path to your playbook file. +- **``**: The path to your inventory file (can be in INI or YAML format). + +## Example Playbooks + +### 1. Simple APT Cache Update + +This example demonstrates a basic playbook that updates the APT package cache on all specified hosts. + +```yaml +- name: Update APT Cache Playbook + hosts: all # Specifies that the playbook runs on all hosts defined in the inventory + become: yes # Use sudo to execute tasks with elevated privileges + tasks: + - name: Update apt-cache + ansible.builtin.apt: + update_cache: yes +``` + +### 2. Update APT Cache and Install Nginx + +This playbook not only updates the APT cache but also installs the Nginx web server on all specified hosts. + +```yaml +- name: Install Nginx and Update APT Cache + hosts: all # Run on all hosts defined in the inventory + become: yes # Use sudo for elevated privileges + tasks: + - name: Update apt-cache and install Nginx + ansible.builtin.apt: + name: nginx + state: present + update_cache: yes +``` + +### 3. Install Nginx and Copy Configuration File + +In addition to installing Nginx, this playbook copies a custom Nginx configuration file from the Ansible server to the target hosts. + +```yaml +- name: Install Nginx and Copy Configuration + hosts: all # Run on all hosts defined in the inventory + become: yes # Use sudo for elevated privileges + tasks: + - name: Update apt-cache and install Nginx + ansible.builtin.apt: + name: nginx + state: present + update_cache: yes + + - name: Copy Nginx configuration file + ansible.builtin.copy: + src: /root/ansible/nginx.conf + dest: /etc/nginx/nginx.conf +``` + +### 4. Full Nginx Deployment: Install, Configure, and Restart + +This playbook provides a complete example of deploying Nginx: updating the APT cache, installing Nginx, copying the configuration file, and restarting the Nginx service to apply the changes. + +```yaml +- name: Full Nginx Deployment + hosts: all # Run on all hosts defined in the inventory + become: yes # Use sudo for elevated privileges + tasks: + - name: Update apt-cache and install Nginx + ansible.builtin.apt: + name: nginx + state: present + update_cache: yes + + - name: Copy Nginx configuration file + ansible.builtin.copy: + src: /root/ansible/nginx.conf + dest: /etc/nginx/nginx.conf + + - name: Restart Nginx service + ansible.builtin.service: + name: nginx + state: restarted +``` + +### Explanation of Key Components + +- **`hosts: all`**: This indicates that the playbook should be executed on all hosts listed in the inventory file. +- **`become: yes`**: Ensures that tasks requiring elevated privileges (sudo) are executed as the root user. +- **Tasks**: + - **`Update apt-cache`**: Uses the APT module to update the package cache. + - **`Install Nginx`**: Installs the Nginx web server. + - **`Copy Configuration File`**: Copies a custom configuration file to the appropriate directory on the target hosts. + - **`Restart Nginx`**: Restarts the Nginx service to apply the new configuration. + +### Running the Playbooks + +Save the desired playbook as a YAML file (e.g., `deploy_nginx.yaml`), and then run it using: + +```bash +ansible-playbook deploy_nginx.yaml -i inventory.ini +``` + +Make sure your inventory file (`inventory.ini`) includes all necessary hosts and connection details.