ansible的roles使用
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使用的更多相关文章
- Ansible的roles标准化与Jenkins持续集成(三)
Ansible的roles标准化与Jenkins持续集成(三) 链接:https://pan.baidu.com/s/1A3Iq3gGkGS27L_Gt37_I0g 提取码:ncy2 复制这段内容后打 ...
- Ansible:roles初始化系统
简介 本文介绍ansible的roles,通过roles来实现系统的初始化,其相当于将ansible的playbook拆分.本文通过Jenkins,传参,调用playbook来初始化系统. Githu ...
- Ansible之roles模块--lnmp分布式部署
Ansible之roles模块--lnmp分布式部署 目录 Ansible之roles模块--lnmp分布式部署 1. role模块的作用 2. roles的目录结构 3. roles内个目录含义解释 ...
- ansible基础-roles
一 简介 注:本文demo使用ansible2.7稳定版 在我看来,role是task文件.变量文件.handlers文件的集合体,这个集合体的显著特点是:可移植性和可重复执行性. 实践中,通常我们以 ...
- Git+Gitlab+Ansible的roles实现一键部署Nginx静态网站(一)--技术流ken
前言 截止目前已经写了<Ansible基础认识及安装使用详解(一)--技术流ken>,<Ansible常用模块介绍及使用(二)--技术流ken><Ansible剧本介绍及 ...
- Ansible playbook roles
1 概述 角色(roles):如果我们使用playbook写成一个文件,这个文件会很大,但是不方便组织,我们可以分组,把playbook根据功能,如handler,tasks等分门别类的放在在各自的 ...
- Ansible Playbook Roles and Include Statements
介绍 虽然可以在一个非常大的文件中编写一个playbook(您可能会以这种方式开始学习playbook),但最终您将需要重新使用文件并开始组织事情. 在基本级别,饱含任务的文件允许您将配置策略分解成较 ...
- Ansible之roles角色
一.roles简介 ansible自1.2版本引入的新特性,用于层次性.结构化地组织playbook.roles能够根据层次型结构自动装载变量文件.tasks以及handlers等.要使用roles只 ...
- ansible 模块 roles
setup 作用,用来查看用看内部的详细信息 ansible_all_ipv4_addresses # ipv4的所有地址 ansible_all_ipv6_addresses # ipv6的所有地址 ...
- 自动化运维工具Ansible之Roles测验详解
Ansible Roles 详解与实战案例 主机规划 添加用户账号 说明: 1. 运维人员使用的登录账号: 2. 所有的业务都放在 /app/ 下「yun用户的家目录」,避免业务数据乱放: 3. 该用 ...
随机推荐
- WEB架构深度优化之PHP
一.PHP引擎缓存加速优化(4种) 1.eAccelerator 2.XCache 3.APC 4.Zend 二.使用tmpfs作为缓存加速缓存的目录(可用rc.local或fstab来自动挂载) m ...
- 调用高德地图web api 规划路线
实现地图输出,出发地与目的地路线,效果如下 具体代码如下 <!doctype html> <html> <head> <meta charset=" ...
- Vue报错之" [Vue warn]: Unknown custom element: <wzwzihello> - did you register the component correctly? For recursive components, make sure to provide the "name" option."
一.报错截图 [Vue warn]: Unknown custom element: <wzwzihello> - did you register the component corre ...
- 移动端比1px还小的border
巧用border 在移动端 经常出现border,细边框但有的时候 产品大大1px甚至乎会觉得不够细那么要如何写出比1px还要小的border下面是代码 希望对大家有所帮助 .thinner-bord ...
- Django ElasticSearch Ionic 打造 GIS 移动应用 —— 架构设计
搜索引擎是个好东西,GIS也是个好东西.当前还有Django和Ionic.最后效果图 构架设计 对我们的需求进行简要的思考后,设计出了下面的一些简单的架构. GIS架构说明 -- 服务端 简单说明: ...
- 浏览器默认解析文档模式IE7
背景:实习期间开发了一套页面,兼容到IE8+,可是在给产品体验时,他的QQ浏览器默认解析到了文档模式IE7,出现了页面的兼容性问题.问题排查:QQ浏览器目前有两个模式,极速模式和兼容模式,其中极速模式 ...
- PHP基于Thinkphp5的砍价活动相关设计
近期我们公司项目里陆陆续续有很多为了招引新用户的活动推出,砍价的活动由我来负责,我们的项目是在微信浏览器里供用户浏览访问. 大概描述:进入砍价活动列表页选择有意向的商品,用户点击商品图片可以看到WEB ...
- ES6-11学习笔记--Symbol
Symbol:一种新的原始数据类型 声明方式: let s1 = Symbol() let s2 = Symbol() console.log(s1); // Symbol() console.l ...
- Python读文件并写入数组
直接上代码: # 读文件 def get_venue(file): fname = file # 文件名 # 获取数据长度 len = 0 with open(fname, 'r+', encodin ...
- 深入研究const(es6特性)
const 申明常量 var str = 'es6' console.log(window.str) // es6 属于顶层对象window const不属于顶层对象window const str ...