ansible:安装nginx1.18.0(使用role功能)

时间:2022-08-24 23:52:55

一,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功能)的更多相关文章

  1. centos8平台编译安装nginx1.18.0

    一,nginx的官网: http://nginx.org/ 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest 对应的源码 ...

  2. 手动编译部署LNMP环境(CentOS7.5+Nginx-1.18.0+MySQL-5.7.30+PHP-7.4.14)

    在平时运维工作中,经常需要用到LNMP应用框架.LNMP环境是指在Linux系统下,由Nginx + MySQL + PHP组成的网站服务器架构. 可参考前面的文章: 如何在CentOS 7上搭建LA ...

  3. nginx集群:nginx配置负载均衡集群(nginx1.18.0)

    一,nginx的负载均衡集群的特点: 1,nginx集群和lvs的不同? lvs集群:工作在第4层(传输层) nginx集群:工作在第7层(应用层) lvs集群:性能更强 nginx集群:功能更强:可 ...

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

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

  6. CentOS 7.0编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14方法分享

    一.配置防火墙,开启80端口.3306端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop fi ...

  7. CentOS6.7上安装nginx1.8.0

    主题: CentOS6.7上安装nginx1.8.0 环境准备: 1.gcc-c++ 示例:yum install gcc-c++ 安装:gcc-c++ gcc-c++编译工具 2.PCRE(Perl ...

  8. nginx优化:配置gzip压缩页面提高访问速度(nginx1.18.0)

    一,为什么nginx要使用gzip 1,压缩的作用: 页面使用gzip压缩之后, 页面大小可以压缩到原来的1/7左右, 传输速度和页面打开时间都可以大幅度提高, 有利于用户访问页面体验的提升 2,Ng ...

  9. nginx安全:修改对外的服务软件名称并隐藏版本号(nginx1.18.0)

    一,为什么要隐藏nginx真实的软件名称? 1,nginx响应的Server头部都会携带上服务软件的名字和版本信息, 服务器软件的版本信息暴光在外部,很容易被黑客了解到,就通过相应版本的漏洞来攻击服务 ...

随机推荐

  1. CURL HELP

    CURL下载 在windows的系统环境变量中,将CURL的路径(curl.exe存放的路径)复制到"Path"变量的结尾 Usage: curl [options...] &lt ...

  2. LLC 逻辑链路控制

    LLC  协  议 4.2.1 LLC帧格式 LLC协议定义了LLC层之间通信的帧格式,参见图4.3. 图4.3  LLC帧格式 LLC帧格式中各个字段的含义如下: ① 服务访问点(SAP)地址:SA ...

  3. linux下查找包含BOM头的文件和清除BOM头命令

    查找包含BOM头的文件,命令如下:   grep -r -I -l $'^\xEF\xBB\xBF' ./   这条命令会查找当前目录及子目录下所有包含BOM头的文件,并把文件名在屏幕上输出.   但 ...

  4. OpenFlow硬件交换机制作及刷机教程

    1.目的 将普通路由器升级成为一台支持OpenFlow的交换机. 具体哪些路由器可以刷OpenFlow可以参考:OpenWRT:http://wiki.openwrt.org/toh/start#su ...

  5. Spring基础学习(五)—事务管理

    一.事务基本认识 1.事务的概述      为了保证数据库中数据的一致性,数据的操作应当是离散的成组的逻辑单元.当它全部完成时,数据的一致性可以保持,而当这个单元中的一部分操作失败,整个事务应当全部视 ...

  6. a标签实现文件下载

    如果想通过纯前端技术实现文件下载,直接把a标签的href属性设置为文件路径即可,如下: <a href="https://cdn.shopify.com/s/files/1/1545/ ...

  7. &ast;CTF——shellcode

    一看题目是利用shellcode解决问题 伪代码: checksec:开启了NX exp: from pwn import*   context(os='linux',arch='amd64',log ...

  8. background属性冲突导致的部分浏览器背景图片不显示问题

    前几天在项目中遇到了一个让人摸不着头脑的bug,测试说页面显示有点问题并发了截图, 正常的显示状态是这样 首先我自信地用自己的手机检查了一下,没有问题,问清楚后得知是UC浏览器中出现的,UC的内核是u ...

  9. mysql 安装成功以及第一次安装成功初始化密码操作

    一 把文件解压到一个目录下 这是解压后的目录 将my.ini文件考进去 双击打开my.ini 找到这两行更改成自己的解压路径保存 右键此电脑属性 找到高级系统设置配置环境变量 环境变量   新建 变量 ...

  10. 学习C&num;&lpar;一&rpar;

    赶紧好好学学自己的C#,,要不然要给做的东西说拜拜了,,,时间紧迫,,,真担心会食言..................... 在C#中以为只要类有构造方法,,,,原来结构也有 using Syste ...