自动化运维工具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区别

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

3.0 实战import_playbook

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

由一个主文件加多个分解任务组成,运行主文件,自动去读取不同任务文件,如图所示
自动化运维工具ansible实战第三章(Playbook高级应用技巧)_第2张图片

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高级应用技巧)_第3张图片
说明分解任务成功,执行主配置文件会去找相应的子配置文件执行,

4.0 实战import_playbook

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

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高级应用技巧)_第5张图片
如图所示,执行主配置文件,分别去执行两个子任务。至此 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高级应用技巧)_第6张图片

ansible-playbook site.yml

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

你可能感兴趣的:(Linxu)