Ansible角色:安装nginx
CentOS7安装nginx角色
一、版本要求
被控节点:CentOS7
控制节点:Ansible2.9
二、如何使用
1、进入Ansible默认角色目录
cd /etc/ansible/roles
如果在ansible.cfg中更改了默认的角色目录,根据你自己角色目录进行更改
2、创建一个角色
ansible-galaxy init nginx_install
3、下载
4、解压
tar zxvf nginx_install.tar.gz
5、主机清单
vim /etc/ansible/hosts
ansible_ssh_host 填写被控主机地址
ansible_ssh_user 填写被控主机用户
ansible_ssh_pass 填写被控主机登录密码
[CentOS]
host_A ansible_ssh_host=
[CentOS:vars]
ansible_ssh_user=
ansible_ssh_pass=
ansible_ssh_port= 22
三、实例剧本
1、主剧本
---
- hosts: CentOS
remote_user: root
roles:
- nginx_install
四、角色详解
1、角色目录
defaults
└─main.yml
files
└─nginx-1.12.0.tar.gz
handlers
meta
tasks
├─free_ports.yml
├─install.yml
└─main.yml
templates
tests
└─test.yml
vars
2、任务
主任务
main.yml
---
# tasks file for nginx_install
- include: install.yml
- include: free_ports.yml
安装任务
install.yml
---
#安装依赖包任务
- name: install dependency packages
yum:
name: "{{ packages }}"
state: present
#创建临时文件夹任务
- name: create nginx folder
file:
path: "{{ temp_nginx_path }}"
state: directory
#解压缩安装包文件任务
- name: unzip nginx install package
unarchive:
src: "{{ nginx_install_file }}"
dest: "{{ temp_nginx_path }}"
#在安装之前配置nginx,拷贝配置文件模板任务
- name: configure nginx
template:
src: nginx.conf.j2
dest: "{{pre_nginx_conf}}"
#执行配置nginx文件任务
- name: configure nginx
shell: ./configure chdir="{{temp_nginx_install_path}}"
#源码安装nginx任务
- name: make install
shell: make & make install chdir="{{temp_nginx_install_path}}"
#启动nginx任务
- name: start the nginx
shell: "{{nginx_path}}"
开放端口任务
free_ports.yml.yml
---
#开放80端口任务
- name: firewalld free http port
firewalld:
port: 80/tcp
permanent: yes
state: enabled
#开放443端口任务
- name: firewalld free https port
firewalld:
port: 443/tcp
permanent: yes
state: enabled
#更改完防火墙配置,重启防火墙任务
- name: restart firewall
service:
name: firewalld
state: restarted
3、变量
---
# defaults file for nginx_install
#nginx版本
nginx_version: 1.12.0
#nginx安装压缩包
nginx_install_file: nginx-{{nginx_version}}.tar.gz
#压缩包下载地址
nginx_download_url: https://nginx.org/download/{{nginx_install_file}}
#依赖
packages:
- gcc-c++
- pcre
- pcre-devel
- zlib
- zlib-devel
- openssl
- openssl-devel
#临时文件路径
temp_nginx_path: /etc/temp/nginx
#临时安装路径
temp_nginx_install_path: /etc/temp/nginx/nginx-{{nginx_version}}
#安装前配置文件
pre_nginx_conf: /etc/temp/nginx/nginx-{{nginx_version}}/conf/nginx.conf
#nginx启动目录
nginx_path: /usr/local/nginx/sbin/nginx