Ansible playbook "main_Ansible" is a powerful configuration management tool that automates the deployment, configuration, and management of applications across multiple servers. It simplifies the process by using YAML files to define tasks and roles, allowing for easy customization and reusability. This playbook can be executed on any machine with Ansible installed, making it an essential tool for managing complex IT infrastructures.
In this document, we provide a sample Ansible playbook called "main_Ansible." The purpose of this playbook is to deploy a web application on target hosts.
main_Ansible/ ├── playbook.yml ├── roles/ │ ├── common/ │ │ ├── tasks/ │ │ │ └── main.yml │ │ └── vars/ │ │ └── main.yml │ └── webapp/ │ ├── tasks/ │ │ ├── install_dependencies.yml │ │ ├── setup_webapp.yml │ │ └── start_webapp.yml │ └── vars/ │ └── main.yml └── hosts.ini
This is the main playbook file that defines the tasks and roles to be executed. In this example, we use two roles: "common" and "webapp".
name: Deploy Web Application hosts: webservers roles: - common - webapp
This role contains some common tasks such as installing Python and updating software packages. These tasks will run before any other role.
name: Install Python and Update Packages apt: update_cache: yes upgrade: yes cache_valid_time: 3600
This role contains variables used to configure the common tasks. You can set software package sources in this file.
source_list: "deb http://us.archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse"
This role contains tasks to install dependencies required for the web application. In this example, we install Nginx and Gunicorn.
name: Install Nginx and Gunicorn Dependencies apt: name: ["nginx", "gunicorn"] state: present
This role contains tasks to set up the web application. In this example, we create a new Nginx configuration file and restart Nginx.
name: Create Nginx Configuration for Web App template: src: nginx_config.j2 dest: /etc/nginx/sitesavailable/webapp.conf mode: 0644 owner: root group: root validate: nofollowsymlinks create: yes force: yes backup: yes enable: yes state: directory recurse: yes use_module: default allow_world_readable: no allow_world_writeable: no allow_anon_write: no anon_owner: root anon_group: root anon_mode: 0644 anon_umask: 0000 anon_rw_device: null anon_create_device: null anon_dir_owner: root anon_dir_group: root anon_dir_mode: 0755 anon_dir_umask: 0000 anon_symlink_expiration: 0 anon_mkdir_p_privileges: 0 anon_mknod_mode: 0600 anon_fcronjob_user: root anon_fcronjob_group: root anon_max_requests: 1024 anon_max_instances: 512 anon_keepalive_timeout: 5 anon_keepalive_requests: 10 anon_http_timeout: 300 anon_tcp_nodelay: yes anon_client_body_timeout: 300 anon_client_header_timeout: 15 anon_sendfile: yes anon_tcp_nopush: yes anon_fastcgi_connect_timeout: 300 anon_fastcgi_read_timeout: 300 anon_fastcgi_send_timeout: 300 anon_fastcgi_buffers: 8 anon_fastcgi_buffer_size: 1k anon_fastcgi_busy_buffers_size: 1k anon_fastcgi_temp_file_write_size: 1k anon_fastcgi_next_upstream_timeout: 1k anon
In conclusion, the Ansible playbook "main_Ansible" is a versatile tool for automating configuration management. It allows for efficient deployment, configuration, and management of web applications. By utilizing roles, tasks, and variables, complex IT infrastructures can be effectively managed. Feel free to explore and customize the playbook according to your specific needs.