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

名称执行方法特点
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

以上是关于(Playbook高级应用技巧)的主要内容,如果未能解决你的问题,请参考以下文章

Ansible的高级用法playbook

Ansible7:Playbook常用模块

[原创]实战之Ansible生成Apache多主机配置

干货:什么叫一个好的Ansible Playbook?

MySQL 高级函数大全(更新完成)

Ansible最佳实践之Playbook高级循环任务如何操作