Ansible playbook NGINX + PHP

In this tutorial, I will deploy  Ansible playbook Nginx and PHP for remote server centos 7. Ansible the essential for DevOps Roles.

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 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 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 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 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

Ansible playbook NGINX

PHP version

Ansible playbook PHP

Conclusion

Thought the article, you can use Ansible playbook NGINX + PHP as above. I hope will this your helpful. More details refer to Ansible tutorial.

, , ,

About HuuPV

My name is Huu. I love technology and especially Devops Skill such as Docker, vagrant, git so forth. I likes open-sources. so I created DevopsRoles.com site to share the knowledge that I have learned. My Job: IT system administrator. Hobbies: summoners war game, gossip.
View all posts by HuuPV →

Leave a Reply

Your email address will not be published.

Comment moderation is enabled. Your comment may take some time to appear.

This site uses Akismet to reduce spam. Learn how your comment data is processed.