博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ansible-playbook && Roles && include
阅读量:4675 次
发布时间:2019-06-09

本文共 3553 字,大约阅读时间需要 11 分钟。

 

先看一个yml文件示例

--- - hosts: webservers          #主机组   vars:                             ##变量设置     http_port: 80     max_clients: 200   remote_user: root   tasks:                            ###主要任务   - name: ensure apache is at the latest version     yum: pkg=httpd state=latest   - name: write the apache config file     template: src=/srv/httpd.j2 dest=/etc/httpd.conf     notify:                                 ##条件触发,根据handlers的名称执行相应的handlers     - restart apache                      ##重启apache服务(找 handlers,名称为restart apache的handlers)   - name: ensure apache is running     service: name=httpd state=started   handlers:                                 ##在发生改变时执行的操作     - name: restart apache       service: name=httpd state=restarted

 notify 下列出的即是 handlers. 

  Handlers 也是一些 task 的列表,通过名字来引用,它们和一般的 task 并没有什么区别.Handlers 是由通知者进行 notify, 如果没有被 notify,handlers 不会执行.不管有多少个通知者进行了 notify,等到 play 中的所有 task 执行完成之后,handlers 也只会被执行一次.

 

 

常用参数命令

-u REMOTE_USER, --user=REMOTE_USER     # ssh 连接的用户名 -k, --ask-pass               #ssh登录认证密码 -s, --sudo       #sudo 到root用户,相当于Linux系统下的sudo命令 -U SUDO_USER, --sudo-user=SUDO_USER     #sudo 到对应的用户 -K, --ask-sudo-pass           #用户的密码(—sudo时使用) -T TIMEOUT, --timeout=TIMEOUT       # ssh 连接超时,默认 10 秒 -C, --check       # 指定该参数后,执行 playbook 文件不会真正去执行,而是模拟执行一遍,然后输出本次执行会对远程主机造成的修改 -e EXTRA_VARS, --extra-vars=EXTRA_VARS       # 设置额外的变量如:key=value 形式 或者 YAML or JSON,以空格分隔变量,或用多个-e -f FORKS, --forks=FORKS       # 进程并发处理,默认 5 -i INVENTORY, --inventory-file=INVENTORY     # 指定 hosts 文件路径,默认 default=/etc/ansible/hosts -l SUBSET, --limit=SUBSET       # 指定一个 pattern,对- hosts:匹配到的主机再过滤一次 --list-hosts               # 只打印有哪些主机会执行这个 playbook 文件,不是实际执行该 playbook --list-tasks           # 列出该 playbook 中会被执行的 task --private-key=PRIVATE_KEY_FILE     # 私钥路径 --step                 # 同一时间只执行一个 task,每个 task 执行前都会提示确认一遍 --syntax-check           # 只检测 playbook 文件语法是否有问题,不会执行该 playbook -t TAGS, --tags=TAGS         #当 play 和 task 的 tag 为该参数指定的值时才执行,多个 tag 以逗号分隔 --skip-tags=SKIP_TAGS         # 当 play 和 task 的 tag 不匹配该参数指定的值时,才执行 -v, --verbose             #输出更详细的执行过程信息,-vvv可得到所有执行过程信息。
View Code

 

playbook Roles角色

 

语言格式:yml

  • 大小写敏感
  • 使用缩进表示层级关系(只能用空格,不能用tab)
  • yml文件以‘---’开始
  • 支持的数据结构:字典,列表、数字、布尔、字符串
  • 列表形式

    - A

    - B

    - C

YAML格式在线校验 :http://www.bejson.com/validators/yaml_editor/

 

项目结构:

project_name   site.yml                #整个任务的yml入口(名称自定义)    group_vars/all               # 存放所有变量信息   webservers.yml  fooservers.yml  roles/     common/                #role-name       files/                          ##存放配置文件,不用指绝对路径       templates/                  ##存放模板文件,不用指绝对路径       tasks/                         ##默认的主要任务入口       handlers/                    #在notify时执行的操作       vars/                           ##存放变量文件       defaults/                      #可忽略       meta/                           #角色(roles)依赖     webservers/              #role-name       files/       templates/       tasks/       handlers/       vars/       defaults/       meta/

 

 

根据上面的项目结构:

参数化的 roles,这种方式通过添加变量来实现 

为 roles 设置触发条件

定义一些 tasks,让它们在 roles 之前以及之后执行

 

 

Files和templates

  files和templates均用于ansible文件处理,两者的主要区别是:Files目录下的文件无需写绝对路径即可将文件传输到远程主机,templates目录下文件以Jinja2渲染,支持传送到主机文件的变量替换

 

template变量示例可看 https://www.cnblogs.com/FRESHMANS/p/8204721.html,template文件内的变量可在vars目录里直接定义

 

includes

使用场景:有时候发现大量的playbook内容需要重复编写,各task之间需要相互调用才能完成各自功能

 

官网示例

 

include 传递变量

 

动态include,在include的基础上加上when 条件判断

 

playbook include playbook

---- hosts: all  remote_user: root  tasks: [...]  - include: web.yml- include: db.yml

 

转载于:https://www.cnblogs.com/FRESHMANS/p/8134893.html

你可能感兴趣的文章
Linux find 用法示例
查看>>
强悍高效率 92% Nixie Tube 升压电路 12V升150-250V(转)
查看>>
Happy Programming Contest
查看>>
四、K8S
查看>>
网页宽高clientWidth clientHeight获得数值不对的问题
查看>>
AX向在线用户发送消息
查看>>
程序员八荣八耻
查看>>
OCR引擎-Tesseract
查看>>
datagrid单元格格式化样式化
查看>>
转:在Nginx上配置多个站点
查看>>
javascript 技巧总结积累1-108条(正在积累中)
查看>>
为什么尽量避免使用 CSS 表达式
查看>>
[转]这才是真正的3D显示!Leap Motion推出次毫米级3D手动控制技术,让人手和影像融为一体...
查看>>
poj 3621 Sightseeing Cows 01分数规划
查看>>
bzoj 2821:作诗 分块
查看>>
如何让eclipse恢复默认布局
查看>>
简析.NET Core 以及与 .NET Framework的关系
查看>>
【模板题】欧拉回路
查看>>
QEMU+GDB调试方法
查看>>
洛谷 P1272 重建道路(树形DP)
查看>>