自动化运维工具ansible实战第三章(Playbook高级应用技巧)

时间:2021-6-19 作者:admin

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区别

名称 执行方法 特点
import import*(静态):在Playbook解析时预先导入 .不能与循环一起使用,将变量用于目标文件或者角色名称时,不能使用inventory(主机/主机组等)
include include* (动态):在运行时导入 --list-tags, --list-tasks不会显示到输出。不能使用notify触发来自include*内部处理程序名称(handlers)

3.0 实战import_playbook

自动化运维工具ansible实战第三章(Playbook高级应用技巧)

由一个主文件加多个分解任务组成,运行主文件,自动去读取不同任务文件,如图所示
自动化运维工具ansible实战第三章(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 

自动化运维工具ansible实战第三章(Playbook高级应用技巧)
说明分解任务成功,执行主配置文件会去找相应的子配置文件执行,

4.0 实战import_playbook

自动化运维工具ansible实战第三章(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

自动化运维工具ansible实战第三章(Playbook高级应用技巧)
如图所示,执行主配置文件,分别去执行两个子任务。至此 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高级应用技巧)

ansible-playbook site.yml

自动化运维工具ansible实战第三章(Playbook高级应用技巧)

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。