我这里直接部署的,环境已经搭建好,如果不知道的小伙伴可以看上一遍ansible搭建,都写好了,这里是根据前面环境部署的

192.168.30.21     ansible

192.168.30.25     client1

192.168.30.26     client2

  1. 创建目录结构

[root@ansible ~]# mkdir -pv /etc/ansible/roles/nginx/{files,handlers,tasks,templates,vars}

mkdir: 已创建目录 "/etc/ansible/roles/nginx"

mkdir: 已创建目录 "/etc/ansible/roles/nginx/files"

mkdir: 已创建目录 "/etc/ansible/roles/nginx/handlers"

mkdir: 已创建目录 "/etc/ansible/roles/nginx/tasks"

mkdir: 已创建目录 "/etc/ansible/roles/nginx/templates"

mkdir: 已创建目录 "/etc/ansible/roles/nginx/vars"

2,把Nginx的压缩包放到 /etc/ansible/roles/nginx/files/文件下

[root@ansible files]# ls -l /etc/ansible/roles/nginx/files/nginx-1.16.0.tar.gz

-rw-r--r--. 1 root root 1032345 5月  16 16:57 /etc/ansible/roles/nginx/files/nginx-1.16.0.tar.gz

3.定义一个主调用文件

[root@ansible ansible]# vim /etc/ansible/nginx.yaml

- hosts: cloud

gather_facts: True

remote_user: root

roles:

- nginx

4.handlers:此目录至少应该包含一个名为main.yml文件,用来定义handers

其他的文件需要由main.yml进行“包含”调用

[root@ansible files]# vim /etc/ansible/roles/nginx/handlers/main.yaml

- name: start nginx

raw: /usr/local/nginx/sbin/nginx

5.tasks:目录至少应该有一个名为main.yml的文件,用来定义各task,其他的需要main.yml进行“包含”调用(这里我把配置文件中的用户默认登录为nginx)

[root@ansible files]# vim /etc/ansible/roles/nginx/tasks/main.yaml

- name: yum install

yum: name={{ item }} state=latest

with_items:

- openssl-devel

- pcre-devel

- zlib-devel

- gcc

- gcc-c++

- make

- name: user nginx

shell: useradd -M -s /sbin/nologin nginx

- name: package

copy: src=nginx-1.16.0.tar.gz dest=/usr/src

- name: install nginx

shell: cd /usr/src ;tar xf nginx-1.16.0.tar.gz -C /usr/src; cd /usr/src/nginx-1.16.0; ./configure --prefi

x=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_stu

b_status_module --with-http_gzip_static_module --with-pcre && make && make install

- name: copy conf file

template: src=nginx.conf dest=/usr/local/nginx/conf/nginx.conf

notify:

- start nginx

6.templates: 存储由template 模块调用的模块文本,(这里我添加一个基于识别CPU的模块)会在客户端配置文件中显示)(建议修改或者添加自己的CPU数量

这样我们的自动化更智能)

[root@ansible files]# vim /etc/ansible/roles/nginx/templates/nginx.conf

user nginx;

worker_proccesses {{ ansible_processor_vcpus }};

{% if ansible_processor_vcpus == 1%}

worker_cpu_affinity 10;

{% elif ansible_processor_vcpus == 2%}

worker_cpu_affinity 01 10;

{% elif ansible_processor_vcpus == 4%}

worker_cpu_affinity 0001 0010 0100 1000;

{% elif ansible_processor_vcpus == 8%}

worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 0

0100000 01000000 10000000;{% else %}

worker_cpu_affinity 0001 0010 0100 1000;

{% endif %}

error_log logs/error.log;

pid logs/nginx.pid;

events {

use epoll;

worker_connections 65535;

}

http {

include       mime.types;

default_type  application/octet-stream;

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  logs/access.log  main;

sendfile        on;

keepalive_timeout  65;

gzip on;

server {

listen       {{ nginxport }};

server_name  {{ server_name }};

location / {

root   html;

index  index.html index.htm;

}

error_page   500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

}

7.vars :此目录至少应该有一个名为main.yml的文件,用于定义各variable,其他的文件

需要由main.yml 进行“包含”调用;

[root@ansible files]# vim /etc/ansible/roles/nginx/vars/main.yaml

nginxport: "80"

server_name: "www.ansible.com"

8.meta :此目录中至少应该有一个名为main.yml 的文件,定义当前角色的特殊设定及依赖关系,其他的文件需要由main.yml进行“包含”调用

Default :此目录中至少应该有一个名为main.yml的文件,用于设定默认变量

9测试部署

[root@ansible templates]# ansible-playbook  /etc/ansible/nginx.yaml

[root@client1 ~]# netstat -anpt |grep 80

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      9483/nginx: master

[root@client2 ~]# netstat -anpt |grep 80

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      9483/nginx: master

查完之后CPU会自动调试,执行完毕可以去客户端测试查看配置文件cpu和用户

Ansible 利用playbook批量部署Nginx的更多相关文章

  1. Ansible 利用playbook批量部署mariadb

    环境说一下 192.168.30.21     ansible 192.168.30.25     client1 192.168.30.26     client2 这里我的ansible环境已经部 ...

  2. ansible结合playbook批量部署war包项目上线

    批量部署jenkins.war包实现上线 用于测试war包上线 [root~localhost]~#vim /etc/ansible/test.yml - hosts: test vars:     ...

  3. 使用Playbook批量部署多台LAMP环境

    1. 安装ansible yum install epel-release -y yum install ansible -y Playbook是一个不同于使用ansible命令行执行方式的模式,功能 ...

  4. Ansible基于playbook批量修改主机名实战

    Ansible基于playbook批量修改主机名 安装Ansible,相信这里也不用多说,大家都知道 说一下环境:这里的主机名是修改之后的,我先把其他两台的主机名改为别的 192.168.30.21 ...

  5. ansible批量部署nginx

    1.1 将nginx的安装包,和安装脚本copy到客户端,并安装脚本 vim /ansible/roles/nginx/tasks/main.yml - name: copy nginx_tar_gz ...

  6. ansible:playbook详解

    Blog:博客园 个人 概述 playbook是由一个或者多个play组成的列表. 主要功能是将预定义的一组主机装扮成事先通过ansible中的task定义好的角色.task实际是调用ansible的 ...

  7. Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(6)

    前言 在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx–技术流ken>,<Git+Gitlab+An ...

  8. Git+Gitlab+Ansible剧本实现一键部署动态网站(5)

    项目前言 之前已经写了一篇关于git和ansible的博客<Git+Gitlab+Ansible剧本实现一键部署Nginx–技术流ken>.关于git,gitliab,ansible在我以 ...

  9. 利用ansible批量部署zabbix-agent

    应用环境:Linux运维工作少不了一个好的监控,zabbix就是目前比较好的一款开源监控软件. 监控类型多种多样,如果不介意或者系统支持安装,那么agent方式是首选. 当主机数量较多时,可以利用相关 ...

随机推荐

  1. Solidworks如何整体缩放零件

    比如我有一个飞机模型,当前长度有20000mm,即20M,我想要整体缩放   点击插入-特征-缩放比例   在左侧的框中输入所有要缩放的零部件(如果全部缩放,则全部框选所有零件,就可以把所有零件都放到 ...

  2. iOS中的枚举:enum, NS_ENUM, NS_OPTIONS的使用区别

    1.enum可以声明一般类型和位掩码(bitmasked)类型 例如: enum Test{// 一般枚举 TestA, TestB, TestC, }; enum{// 匿名枚举 TestA, Te ...

  3. cocos2d-x-3.1 数据结构之Vector (coco2d-x 学习笔记六)

    介绍 cocos2d::Vector<T>是一个封装好的能动态增长顺序訪问的容器. cocos2d::Vector<T>中的元素是按序存取的,它的低层实现数据结构是标准模版库中 ...

  4. spring装配集合

    前面我们已经了解了怎样使用spring装备简单的属性(使用value属性)和引用其它bean的属性(使用ref属性).可是value和ref仅在Bean的属性值是单个值的情况下才实用.当bean的属性 ...

  5. MyBatis逆向工程生成的Example类的方法总结

    很早之前就在项目开发中多次使用MyBatis逆向工程生成的Example类,但一直没有对其下的方法做一个简单的总结,现总结如下:一.mapper接口中的方法解析mapper接口中的部分常用方法及功能如 ...

  6. debian网络静态ip配置

    本配置适合于服务器上的静态ip配置,该方法简单可靠. 1 临时配置 ifconfig eth0 192.168.1.97 netmask 255.255.255.0 broadcast 192.168 ...

  7. sql_server_action

    ''' SELECT * FROM Info_Roles WHERE Flag=1 LIMIT 2; select top y * from 表 where 主键 not in(select top ...

  8. bzoj3175: [Tjoi2013]攻击装置&&4808: 马

    终于知道为啥网络流这么受欢迎了. 其实就是构个图模板一下的事儿,比较好打是吧. 然后这题网络流黑白染色(其实感觉上匈牙利更加直接好想啊,但是实际上黑白染色给人感觉就是二分图) st连白而ed连黑,流量 ...

  9. HDU4336:Card Collector

    题意 有n张卡片,每一次 有pi的概率买到第i张卡.求买到所有卡的期望购买次数. n<=20 解析 Solution 1:大力状压(就是步数除以方案数) #include<iostream ...

  10. astgo 老版本免激活完整安装包带安装命令脚本

    astgo是个国产的老牌经典软交换服务器,主要用来当回拨网络电话服务端,同时也具备群呼.传真等功能! 这个需要安装在centos 5.x 32位系统.带安装脚本,上传到root目录后执行安装脚本即可等 ...