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

Posted Linux蛋蛋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化运维工具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

在这里插入图片描述

以上是关于自动化运维工具ansible实战第三章(Playbook高级应用技巧)的主要内容,如果未能解决你的问题,请参考以下文章

ansible自动化运维实战一

自动化运维工具Ansible实战简介和部署

自动化运维工具Ansible实战安装部署

自动化运维工具ansible实战第一章

自动化运维工具ansible实战第一章

自动化运维工具Ansible实战主机清单的管理