1.创建roles文件夹

mkdir roles

2.在roles文件夹里面创建文件夹

  cd roles/

  mkdir {nginx,uwsgi,redis,mysql}

3.cd nginx

4.mkdir tasks/

5.cd tasks/

6.vi install.yml

- name: install
yun:name=nginx

vi copyfile.yml

- name : copyfile
template:src=nginx.conf dest=/etc/nginx/nginx.conf

vi start.yml

- name: start
service:name=nginx state=started enabled=yes

vi main.yml

- import_tasks: install.yml
- import_tasks: copyfile.yml
- import_tasks: start.yml

7.在nginx目录下安装nginx            yum install -y nginx

8. 创建一个templates目录,和tasks目录同级   mkdir templates

9.cd templates/

10.cp /etc/nginx/nginx.conf .   将nginx配置文件拷贝到templtes文件夹下

ansible 127.0.0.1 -m setup -a "filter=*process*"   #查询cpu个数

11.vi nginx.conf

  #改变两个参数

  worker_processes {{ansible_processor_vapus*2}}       #这里设置为cpu的个数或者cpu个数的两倍

   events{

                 worker_connections 102400;                  #这是连接数,可以调大

}

  server{   #介绍

    listen# 第一个监听ipv4

    listen #第二个监听ipv6
}

12.如果不需要传变量需要创建一个files的目录,和tasks在同一级目录下

mkdir files

以下是实例

  cd files/

  echo "test">>c.txt

  cd ..

  vi tasks/main.yml

- name :file
copy:dest=/tmp/aaa.txt src=c.txt

13.如果要是传变量的话,在tasks的同级目录下创建一个vars的目录

mkdir vars

vi vars/main.yml

{"user":alex}

vi tasks/main.yml

- name:createuser
user: name={{user}}

14.使用handler同样需要在tasks的同级目录下创建handlers目录

mkdir handlers

vi handlers/main.yml

- name: restartngnx
service: name=nginx state=restarted

vi tasks/main.yml

  notify:restart   #用来触发handlers

15.在roles平级的目录下

vi nginx.yml

- hosts : web
roles:
- nginx
#web是一个ip组的名称相当于一个ip

16.ansible-playbook --syntax-chek nginx.yml   测试代码没有问题

17.ansible-playbook  nginx.yml   启动代码

18. vi roles/nginx/templates/nginx.conf 

server{
listen 80;
listen [::]:80; #改这两个参数
}
roles

- 目录结构清晰
- 可以相互调用 - import_tasks: roles/nginx/tasks/install.yml
- 备份方便 解耦 ```
roles/nginx/
├── files -- 静态文件
│   └── c.txt
├── handlers -- 触发的任务
│   └── main.yml
├── tasks -- 任务(必须的)
│   ├── copyfile.yml
│   ├── install.yml
│   ├── main.yml
│   └── start.yml
├── templates -- 动态文件,需要传递参数
│   └── nginx.conf
└── vars -- 变量
└── main.yml ``` 查找顺序 - 主文件看到roles,就回去roles目录下面找对应的目录
- 先去tasks目录里面找main.yml文件,如果遇到import_task则加载任务
- 如果遇到了template,则去templates目录里面找文件
- 如果遇到了copy,则去files目录里面找文件
- 如果遇到了变量,则去vars目录里面找main.yml文件
- 如果遇到了notify,则去handlers目录里面找main.yml文件

互相调用(uwsgi调用nginx的安装程序nginx.yml)

1.cd roles/uwsgi/

2.vi tasks/main.yml

- import_tasks:roles/nginx/tasks/install.yml

3.在roles同级目录下

vi uwsgi.yml

-hosts:web
roles:
- uwsgi
#web是一个ip组的名称相当于一个ip

4.ansible-playbook uwsgi.yml    启动文件

这样就调用成功

ansible的roles使用的更多相关文章

  1. Ansible的roles标准化与Jenkins持续集成(三)

    Ansible的roles标准化与Jenkins持续集成(三) 链接:https://pan.baidu.com/s/1A3Iq3gGkGS27L_Gt37_I0g 提取码:ncy2 复制这段内容后打 ...

  2. Ansible:roles初始化系统

    简介 本文介绍ansible的roles,通过roles来实现系统的初始化,其相当于将ansible的playbook拆分.本文通过Jenkins,传参,调用playbook来初始化系统. Githu ...

  3. Ansible之roles模块--lnmp分布式部署

    Ansible之roles模块--lnmp分布式部署 目录 Ansible之roles模块--lnmp分布式部署 1. role模块的作用 2. roles的目录结构 3. roles内个目录含义解释 ...

  4. ansible基础-roles

    一 简介 注:本文demo使用ansible2.7稳定版 在我看来,role是task文件.变量文件.handlers文件的集合体,这个集合体的显著特点是:可移植性和可重复执行性. 实践中,通常我们以 ...

  5. Git+Gitlab+Ansible的roles实现一键部署Nginx静态网站(一)--技术流ken

    前言 截止目前已经写了<Ansible基础认识及安装使用详解(一)--技术流ken>,<Ansible常用模块介绍及使用(二)--技术流ken><Ansible剧本介绍及 ...

  6. Ansible playbook roles

    1  概述 角色(roles):如果我们使用playbook写成一个文件,这个文件会很大,但是不方便组织,我们可以分组,把playbook根据功能,如handler,tasks等分门别类的放在在各自的 ...

  7. Ansible Playbook Roles and Include Statements

    介绍 虽然可以在一个非常大的文件中编写一个playbook(您可能会以这种方式开始学习playbook),但最终您将需要重新使用文件并开始组织事情. 在基本级别,饱含任务的文件允许您将配置策略分解成较 ...

  8. Ansible之roles角色

    一.roles简介 ansible自1.2版本引入的新特性,用于层次性.结构化地组织playbook.roles能够根据层次型结构自动装载变量文件.tasks以及handlers等.要使用roles只 ...

  9. ansible 模块 roles

    setup 作用,用来查看用看内部的详细信息 ansible_all_ipv4_addresses # ipv4的所有地址 ansible_all_ipv6_addresses # ipv6的所有地址 ...

  10. 自动化运维工具Ansible之Roles测验详解

    Ansible Roles 详解与实战案例 主机规划 添加用户账号 说明: 1. 运维人员使用的登录账号: 2. 所有的业务都放在 /app/ 下「yun用户的家目录」,避免业务数据乱放: 3. 该用 ...

随机推荐

  1. elasticsearch 是如何实现 master 选举的 ?

    面试官:想了解 ES 集群的底层原理,不再只关注业务层面了. 前置前提: 1.只有候选主节点(master:true)的节点才能成为主节点. 2.最小主节点数(min_master_nodes)的目的 ...

  2. 学习Redis(二)

    1.Redis应用场景 1.缓存(键过期时间) 1) 缓存session会话 2) 缓存用户信息,找不到再去mysql查,查到然后回写到redis 3) 商城优惠卷过期时间 2.排行榜(列表& ...

  3. jsp页面学习之"javascript:void(0)"的使用

    javascript:void(0) 仅仅表示一个死链接 如果是个# javascript:void(#),就会出现跳到顶部的情况,搜集了一下解决方法 1:<a href="####& ...

  4. Markdown语法2

    二 . 低频使用的语法 下面是相对用得少的markdown语法,但也值得学习学习. 10.区块(块引用) 要创建块引用,请在段落前添加一个 >  符号: 块引用支持多段落: 块引用支持嵌套,即引 ...

  5. 搞懂高并发性能指标:QPS、TPS、RT、吞吐量

      一.QPS,每秒查询 QPS:Queries Per Second意思是"每秒查询率",是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的 ...

  6. 在VisualStudio调试器中使用内存窗口和查看内存分布

    调试模式下内存窗口的使用 在调试期间,"内存"窗口显示应用使用的内存空间.调试器窗口(如"监视"."自动"."局部变量" ...

  7. 纯干货数学推导_傅里叶级数与傅里叶变换_Part3_周期为2L的函数展开

  8. HTML5打造原生应用——Ionic框架简介与Ionic Hello World

    试了试用Ionic框架打造了两个应用,然后在Google Play上架了. 程序语言答人 教你设计物联网 更有意思的是这是在一周的业余时间内完成的三个应用中的两个,接着让我们看看这个框架如何实现高效地 ...

  9. 小程序canvas文本换行生成图片

    一.图片透明及旋转 let ctx = wx.createCanvasContext('shareImg') ctx.drawImage('../../../' + res[0].path, 0, 0 ...

  10. 前端调试利器 - Charles

    Docs 开发之 Charles 配置指南 1.下载与安装 charles-proxy-4.1.4 .dmg56.12 MB已存到云盘下载 2.激活 使用公司正版license 激活 安装证书 点击证 ...