In this tutorial, I will deploy Ansible playbook Nginx and PHP for remote server centos 7. Ansible the essential for DevOps Roles.
Table of Contents
My system:
Control server: DevopsRoles —–> Remote server: webserver
Control server:
Installed Ansible “I use root account running Ansible, You are understand? Please careful “
Remote server:
- Install webserver Nginx and PHP
- Create a user huupv with sudo privileges ( more details ref to linux create user )
Ansible playbook NGINX + PHP
Create a folder and file for Ansible Nginx
[root@DevopsRoles ~]# pwd /root [root@DevopsRoles ~]# mkdir ansible-nginx [root@DevopsRoles ~]# mkdir ansible-nginx/inventory [root@DevopsRoles ~]# vi ansible-nginx/webserver-main.yml
The content webserver-main.yml file as below
- name: install and configure the web server hosts: webserver remote_user: huupv become: yes roles: - nginx - php
Create file hosts
[root@DevopsRoles ~]# vi ansible-nginx/inventory/hosts
The content is as below:
[webserver] 192.168.1.113
In this command, checking for communication use the ping module ansible.
[root@DevopsRoles ansible-nginx]# ansible all -i inventory/hosts -m ping 192.168.1.113 | SUCCESS => { "changed": false, "ping": "pong" }
Ansible roles Nginx and PHP
[root@DevopsRoles ~]# mkdir ansible-nginx/roles [root@DevopsRoles ~]# cd ansible-nginx/roles [root@DevopsRoles roles]#
create the role for Nginx and PHP. Using ansible-galaxy creates a template
[root@DevopsRoles roles]# ansible-galaxy init nginx - nginx was created successfully [root@DevopsRoles roles]# ansible-galaxy init php - php was created successfully
Ansible roles Nginx create by ansible-galaxy
Ansible structure folder and file as below
nginx ├── defaults │ └── main.yml ├── files ├── handlers │ └── main.yml ├── meta │ └── main.yml ├── README.md ├── tasks │ └── main.yml ├── templates ├── tests │ ├── inventory │ └── test.yml └── vars └── main.yml 8 directories, 8 files
Setting ansible task Nginx
The modify nginx/tasks/main.yml for role Nginx
[root@DevopsRoles roles]# vi nginx/tasks/main.yml
The content main.yml file as below
# tasks file for nginx - name: Install NGINX. yum: name=nginx - command: chkconfig nginx on - command: service nginx restart - name: Install NGINX. yum: name={{ item }} with_items: - http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm # enabled=0 - replace: dest=/etc/yum.repos.d/{{ item }} regexp="enabled *= *1" replace="enabled=0" with_items: - nginx.repo - yum: name=nginx - command: chkconfig nginx on - command: service nginx restart
Ansible roles PHP create by ansible-galaxy
Ansible structure folder and file as below
php ├── defaults │ └── main.yml ├── files ├── handlers │ └── main.yml ├── meta │ └── main.yml ├── README.md ├── tasks │ └── main.yml ├── templates ├── tests │ ├── inventory │ └── test.yml └── vars └── main.yml 8 directories, 8 files
Setting ansible task PHP
The Modify php/tasks/main.yml for role PHP
[root@DevopsRoles roles]# vi php/tasks/main.yml
The content is as below:
# tasks file for php - name: Install PHP yum: name={{ item }} state=present enablerepo=epel with_items: - php70u-cli - php70u-common - php70u-fpm - php70u-fpm-nginx - php70u-json - php70u-mysqlnd - php70u-opcache - php70u-pdo
Ansible tasks/main.yml installed modules of PHP from yum in succession. Convenient!
Run ansible playbook
Run check the syntax of the Ansible playbook
[root@DevopsRoles ansible-nginx]# ansible-playbook -C -i inventory/hosts webserver-main.yml
Checking result syntax ok run ansible-playbook again
[root@DevopsRoles ansible-nginx]# ansible-playbook -i inventory/hosts webserver-main.yml
The confirm installed Nginx and PHP on a host web server
Nginx version
PHP version
Remember to customize the playbook and PHP-FPM configuration based on your specific requirements.
Conclusion
Through the article, you can use the Ansible playbook NGINX + PHP as above. I hope will this your helpful. For more details refer to the Ansible tutorial.