自动化运维工具ansible实战第三章(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}}/nginx{{nginx_version}}"   #引用变量

2.0 include和import区别

名称执行方法特点
importimport*(静态):在Playbook解析时预先导入.不能与循环一起使用,将变量用于目标文件或者角色名称时,不能使用inventory(主机/主机组等)
includeinclude* (动态):在运行时导入--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

在这里插入图片描述

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值