ansible:安装nginx1.18.0(使用role功能)
一,ansible使用role的用途?
roles分别将变量/文件/任务/模板/handler等放置于单独的目录中,
并可以方便的include各目录下的功能
roles使playbook能实现代码被调用,避免了代码的重复
说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest
对应的源码可以访问这里获取: https://github.com/liuhongdi/
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,ansible例子:安装nginx
1,配置hosts
[root@centos8 roles]# vi /etc/ansible/hosts
内容:
[web]
172.18.1.1:22
172.18.1.2:22
172.18.1.3:22
2,role的目录结构
[root@centos8 roles]# tree
.
├── nginx
│ ├── files
│ │ ├── installnginx.sh
│ │ ├── nginx-1.18.0.tar.gz
│ │ └── nginx.service
│ ├── tasks
│ │ └── main.yml
│ ├── templates
│ │ └── nginx.conf.j2
│ └── vars
└── webinstallnginx.yml 5 directories, 6 files
各文件的用途说明:
webinstallnginx.yml是nginx这个role被执行的playbook的入口文件
tasks目录下的main.yml是task的执行入口文件
files目录存放需要用到的文件
installnginx.sh是安装nginx的脚本
nginx-1.18.0.tar.gz是下载好的nginx源码
nginx.conf:配置文件
nginx.service: 供systemd管理用的service文件
三,role目录下各文件的代码
1,webinstallnginx.yml
# roles: 调用role
[root@centos8 roles]# more webinstallnginx.yml
- hosts: web
remote_user: root
roles:
- nginx
2,nginx/tasks/main.yml
#gcc,make,pcre-devel,openssl-devel是编译nginx需要的软件
#/usr/local/soft: 软件安装目录
#/usr/local/source: 源文件、安装包保存的目录
#/data/nginx/logs: 保存nginx日志的目录
#user/group:添加用户nginx,用来运行nginx服务
[root@centos8 roles]# more nginx/tasks/main.yml
- name: install gcc
dnf: name=gcc disable_gpg_check=yes
- name: install make
dnf: name=make disable_gpg_check=yes
- name: install pcre-devel
dnf: name=pcre-devel disable_gpg_check=yes
- name: install openssl-devel
dnf: name=openssl-devel disable_gpg_check=yes
- name: Configure soft dir
file: path=/usr/local/soft/ state=directory mode=0755
- name: Configure source dir
file: path=/usr/local/source/ state=directory mode=0755
- name: copy nginx source file
copy: src=nginx-1.18.0.tar.gz dest=/usr/local/source/
- name: install nginx
script: installnginx.sh
- name: Configure log dir
file: path=/data/nginx/logs/ state=directory mode=0755
- name: add group:nginx
group: name=nginx
- name: add user:nginx
user: name=nginx group=nginx createhome=no shell=/sbin/nologin
- name: template conf file
template: src=nginx.conf.j2 dest=/usr/local/soft/nginx-1.18.0/conf/
- name: copy service file
copy: src=nginx.service dest=/usr/lib/systemd/system/
- name: start service
service: name=nginx state=started enabled=yes
3,nginx/files/installnginx.sh
#--with-http_stub_status_module:查看http状态的模块
#--with-http_ssl_module:实现对https的支持
[root@centos8 roles]# more nginx/files/installnginx.sh
cd /usr/local/source/;
tar -zxvf nginx-1.18.0.tar.gz;
cd /usr/local/source/nginx-1.18.0/;
./configure --prefix=/usr/local/soft/nginx-1.18.0 --with-http_stub_status_module --with-http_ssl_module;
make && make install;
4,nginx/templates/nginx.conf.j2
说明:在nginx.conf后加j2,表示这是一个jinja2文件,
也可以不加,不会影响ansible对它的处理
说明:{{ ansible_processor_cores }} 这个变量代表受控端机器的核心数量,
是供nginx优化使用的,因为受控机上的核心数量可能并不一致
这个变量的值通过setup模块可以看到,例子:
[root@centos8 roles]# ansible 172.18.1.1 -m setup | grep processor_cores
"ansible_processor_cores": 1,
nginx.conf.j2 的内容:
[root@centos8 roles]# more nginx/templates/nginx.conf.j2
user nginx nginx;
worker_processes {{ ansible_processor_cores }};
error_log /data/nginx/logs/error.log;
pid logs/nginx.pid; events {
worker_connections 1024;
} http {
include mime.types;
default_type application/octet-stream;
server_tokens off;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /data/nginx/logs/access.log main;
sendfile on;
keepalive_timeout 60 45; gzip on;
gzip_disable "MSIE [1-6]\.";
gzip_comp_level 9;
gzip_types application/json text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_http_version 1.1;
gzip_vary on;
gzip_proxied any; server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
5,nginx/files/nginx.service
[root@centos8 roles]# more nginx/files/nginx.service
[Unit]
Description=nginx-The High-performance HTTP Server
After=network.target [Service]
Type=forking
PIDFile=/usr/local/soft/nginx-1.18.0/logs/nginx.pid
ExecStartPre=/usr/local/soft/nginx-1.18.0/sbin/nginx -t -c /usr/local/soft/nginx-1.18.0/conf/nginx.conf
ExecStart=/usr/local/soft/nginx-1.18.0/sbin/nginx -c /usr/local/soft/nginx-1.18.0/conf/nginx.conf
ExecReload=/usr/local/soft/nginx-1.18.0/sbin/nginx -s reload
ExecStop=/usr/local/soft/nginx-1.18.0/sbin/nginx -s stop
PrivateTmp=true [Install]
WantedBy=multi-user.target
四,安装nginx功能的执行效果:
1,执行playbook
[root@centos8 roles]# ansible-playbook webinstallnginx.yml
2,完成后登录到服务器,检查状态
[root@web2 sbin]# systemctl status nginx
● nginx.service - nginx-The High-performance HTTP Server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-05-14 09:24:59 UTC; 1h 18min ago
...
五,查看ansible的版本
[root@centos8 roles]# ansible --version
ansible 2.9.7
config file = /etc/ansible/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.6/site-packages/ansible
executable location = /usr/bin/ansible
python version = 3.6.8 (default, Nov 21 2019, 19:31:34) [GCC 8.3.1 20190507 (Red Hat 8.3.1-4)]
ansible:安装nginx1.18.0(使用role功能)的更多相关文章
- centos7 安装 nginx-1.18.0 并设置开机自启动
一.到官网下载nginx Mainline version: nginx主力版本,为开发版 Stable version: 稳定版,在生产环境中选择此版本进行安装 Legacy versions: ...
- centos8平台编译安装nginx1.18.0
一,nginx的官网: http://nginx.org/ 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest 对应的源码 ...
- 手动编译部署LNMP环境(CentOS7.5+Nginx-1.18.0+MySQL-5.7.30+PHP-7.4.14)
在平时运维工作中,经常需要用到LNMP应用框架.LNMP环境是指在Linux系统下,由Nginx + MySQL + PHP组成的网站服务器架构. 可参考前面的文章: 如何在CentOS 7上搭建LA ...
- nginx集群:nginx配置负载均衡集群(nginx1.18.0)
一,nginx的负载均衡集群的特点: 1,nginx集群和lvs的不同? lvs集群:工作在第4层(传输层) nginx集群:工作在第7层(应用层) lvs集群:性能更强 nginx集群:功能更强:可 ...
- CentOS 7.0编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14
准备篇: CentOS 7.0系统安装配置图解教程 http://www.osyunwei.com/archives/7829.html 一.配置防火墙,开启80端口.3306端口 CentOS 7. ...
- CentOS 6.2编译安装Nginx1.2.0+MySQL5.5.25+PHP5.3.13
CentOS 6.2编译安装Nginx1.2.0+MySQL5.5.25+PHP5.3.132013-10-24 15:31:12标签:服务器 防火墙 file 配置文件 written 一.配置好I ...
- CentOS 7.0编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14方法分享
一.配置防火墙,开启80端口.3306端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop fi ...
- CentOS6.7上安装nginx1.8.0
主题: CentOS6.7上安装nginx1.8.0 环境准备: 1.gcc-c++ 示例:yum install gcc-c++ 安装:gcc-c++ gcc-c++编译工具 2.PCRE(Perl ...
- nginx优化:配置gzip压缩页面提高访问速度(nginx1.18.0)
一,为什么nginx要使用gzip 1,压缩的作用: 页面使用gzip压缩之后, 页面大小可以压缩到原来的1/7左右, 传输速度和页面打开时间都可以大幅度提高, 有利于用户访问页面体验的提升 2,Ng ...
随机推荐
- Educational Codeforces Round 95(A-C题解)
A. Buying Torches 题目:http://codeforces.com/contest/1418/problem/A 题解:计算一个公式:1+n*(x-1)=(y+1)*k,求满足该条件 ...
- Js获取某个节点的类名
1. document.querySelectorAll(".style-color")[0].getAttribute("class") 2. $('.s ...
- spring boot之AOP
首先,aop是面向对象切面,嗯,就是说不面向静态方法,我做测试demo的时候controller方法有个加了static,尴尬的是就用了那个方法测,检查了几遍配置... 参看这篇文章https://m ...
- 使用swagger遇到的问题
1.定义全局的请求参数时, defaultValue不能是中文,不然一直是请求中 ParameterBuilder userName = new ParameterBuilder(); Paramet ...
- hystrix(5) 使用
这一节我们开始了解hystrix执行的主流程,在讲解主流程之前,我们先来看一下怎么使用hystrix. 引入jar <dependency> <groupId>com.netf ...
- ribbon源码(2) 负载均衡器
负载均衡器对外提供负载均衡的功能,本质上是是维护当前服务的服务器列表和服务器状态,通过负载均衡算法选取合适的服务器地址. 用户可以通过实现ILoadBalancer来实现自己的负载均衡器,ribbon ...
- gRPC-go 入门(1):Hello World
摘要 在这篇文章中,主要是跟你介绍一下gRPC这个东西. 然后,我会创建一个简单的练习项目,作为gRPC的Hello World项目. 在这个项目中,只有很简单的一个RPC函数,用于说明gRPC的工作 ...
- pwnable.kr-uaf-witeup
没错,这道题超纲了,代码调试能力很差很差. 一些相关小笔记. UAF是在内存释放后,原指针仍然指向此内存,可通过其他填充操作将此内存值设为指定的值,使得指针指向特定值. 分析程序.本程序中,可输入1. ...
- xss利用——BeEF#stage1
全文概览 简介 BeEF( The Browser Exploitation Framework) 是由Wade Alcorn 在2006年开始创建的,至今还在维护.是由ruby语言开发的专门针对浏览 ...
- 手撸Mysql原生语句--增删改查
mysql数据库的增删改查有以下的几种的情况, 1.DDL语句 数据库定义语言: 数据库.表.视图.索引.存储过程,例如CREATE DROP ALTER SHOW 2.DML语句 数据库操纵语言: ...