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 ...
随机推荐
- db2错误代码可能的原因
一. SQL5005C运行cmd未用管理员权限打开 SQLCODE-303 数据类型不兼容 SQLCODE-305 查出的数据有NULL未处理直接写入接收变量 二.应该不会有人直接写sql用这个 ...
- docker导出导入镜像docker save和docker load的用法
1.百度搜的第一步是先将容器提交为镜像,然后用你提交的镜像去做上面的备份操作,提交为镜像后会新增一个镜像,但是感觉没有必要,直接做上面的save操作也是可以用的 百度的:docker commit 容 ...
- Android端代码染色原理及技术实践
导读 高德地图开放平台产品不断迭代,代码逻辑越来越复杂,现有的测试流程不能保证完全覆盖所有业务代码,测试不到的代码及分支,会存在一定的风险.为了保证测试全面覆盖,需要引入代码覆盖率做为测试指标,需要对 ...
- Vue中vue.config的配置
vue-cli 3.x 脚手架搭建完成后,项目目录中没有 vue.config.js 文件,需要手动在根目录中创建 vue.config.js. vue.config.js 是一个可选的配置文件,如果 ...
- js实现隔行变色
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Java新特性:数据类型可以扔掉了?
在很久很久以前,我们写代码时要慎重的考虑变量的数据类型,比如下面这些: 枚举:尽管在 JDK 5 中增加了枚举类型,但是 Class 文件常量池的 CONSTANT_Class_info 类型常量并没 ...
- Redis5设计与源码分析读后感(二)简单动态字符串SDS
一.引言 学习之前先了解几个概念: SDS定义:简单动态字符串,Redis的基本数据结构之一,用于储存字符串和整型数据. 二进制安全:C语言中用"\0"表示字符串结束,如果字符串本 ...
- svg的学习
svg的学习 1,初步了解 1,大致看了一下svg的简介,在图形的操作和展示上有很大的优势,例如不会失精:灵活的dom操作:很好的兼容性(IE需要下载插件).so,是一门值得深究的前端课程: 2,看了 ...
- 《Java从入门到失业》第四章:类和对象(4.6):类路径
4.6类路径 4.6.1什么是类路径 前面我们讨论过包,知道字节码文件最终都会被放到和包名相匹配的树状结构子目录中.例如上一节的例子: 其实类还有一种存放方式,就是可以归档到一个jar文件中,jar文 ...
- (转)Java中的值传递和引用传递
Java中的值传递和引用传递 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递.Java 编程语言只有值 ...