(Playbook高级应用技巧)
Posted 运维.大白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(Playbook高级应用技巧)相关的知识,希望对你有一定的参考价值。
1.0 在playbook中定义变量
cat ns.yml
---
- hosts: web
gather_facts: no
remote_user: root
vars: #定义变量
- work_dir: /usr/local
- nginx_version: 1.16
tasks:
- name: "创建目录"
shell: mkdir "work_dir/nginxnginx_version" #引用变量
2.0 include和import区别
名称 | 执行方法 | 特点 |
---|---|---|
import | import*(静态):在Playbook解析时预先导入 | .不能与循环一起使用,将变量用于目标文件或者角色名称时 ,不能使用inventory(主机/主机组等) |
include | include* (动态):在运行时导入 | --list-tags, --list-tasks不会显示到输出。 不能使用notify触发来自include*内部处理程序名称(handlers) |
3.0 实战import_playbook
由一个主文件加多个分解任务组成,运行主文件,自动去读取不同任务文件,如图所示
3.1编写配置文件
cat lnmp.yml
---
#主配置文件
- import_playbook: nginx.yml
- import_playbook: php.yml
- import_playbook: mysql.yml
cat nginx.yml
---
#安装nginx
- hosts: web
gather_facts: no
tasks:
- name: "安装nginx"
debug: msg="install nginx"
cat mysql.yml
---
#安装mysql
- hosts: web
gather_facts: no
tasks:
- name: "安装mysql"
debug: msg="install mysql"
cat php.yml
---
#安装php
- hosts: web
gather_facts: no
tasks:
- name: "安装php"
debug: msg="install php"
#上面的yml文件只是为了测试,具体使用方法参考上一章文件
3.2测试lnmp项目一件部署
ansible-playbook lnmp.yml
说明分解任务成功,执行主配置文件会去找相应的子配置文件执行,
4.0 实战import_playbook
4.1编写yml文件
cat main.yml
---
#主配置文件
- hosts: web
gather_facts: no
tasks:
- include_tasks: task1.yml #任务一
- include_tasks: task2.yml #任务二
任务一
cat task1.yml
---
- name: "任务 task1"
debug: msg="task1"
任务二
cat task2.yml
---
- name: "任务 task2"
debug: msg="task2"
4.2执行测试
ansible-playbook main.yml
如图所示,执行主配置文件,分别去执行两个子任务。至此 include测试ok
5.0roles 角色管理
5.1 Roles目录结构
site.yml #主配置文件
hosts #主机清单
roles/
common/
files/ #角色部署时用到的文件,例如安装包
templates/ #角色部署时用到的模板
tasks/ #包含校色要执行的主要任务列表
handlers/ #包含校色使用的处理程序
vars/ #校色其他的变量
defaults/ #校色默认的变量
meta/ #角色定义的一些元数据
5.2测试
定义主配置文件
cat site.yml
- hosts: web
gather_facts: no
roles:
- common
- nginx
- php
定义清单配置文件
cat hosts
[web]
192.168.1.21
192.168.1.22
mkdir -p roles/common,nginx,php/files,templates,tasks,handlers
ansible-playbook site.yml
以上是关于(Playbook高级应用技巧)的主要内容,如果未能解决你的问题,请参考以下文章