ansible中的include导入

概述

Ansible 中 include 系列用于拆分 Playbook、复用任务,分两大阶段:旧版静态 include、新版 import_ / include_(Ansible 2.4+ 官方推荐)
咱们这里只讲解新版的include_

include分为三类:

  • include_tasks:导入tasks任务
  • include_playbook:导入playbook文件
  • include_roles:导入角色

include_tasks导入tasks任务

案例:

  • 工程结构
root@master:/data00/ansible/include_tasks# tree
.
├── install_nginx.yaml
├── main.yaml
└── start_nginx.yaml
  • install_nginx.yaml文件
root@master:/data00/ansible/include_tasks# cat install_nginx.yaml 
- name: install nginx
  debug:
    msg: "install nginx"
  tags: install
  • start_nginx.yaml文件
root@master:/data00/ansible/include_tasks# cat start_nginx.yaml 
- name: start nginx
  debug:
    msg: "start nginx"
  tags: start
  • main.yaml文件
root@master:/data00/ansible/include_tasks# cat main.yaml 
- hosts: es
  vars:
    env: prod
  tasks:
    - name: import install nginx
      # 导入tasks
      import_tasks: ./install_nginx.yaml
      when: env == "prod"
    - name: import start nginx
      # 导入tasks
      import_tasks: ./start_nginx.yaml
      when: env == "prod"
  • 执行:
root@master:/data00/ansible/include_tasks# ansible-playbook main.yaml 

PLAY [es] ********************************************************************************************************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************************************************************************
ok: [10.37.120.9]

TASK [install nginx] *********************************************************************************************************************************************************************************************
ok: [10.37.120.9] => {
    "msg": "install nginx"
}

TASK [start nginx] ***********************************************************************************************************************************************************************************************
ok: [10.37.120.9] => {
    "msg": "start nginx"
}

PLAY RECAP *******************************************************************************************************************************************************************************************************
10.37.120.9                : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

import_playbook导入完整剧本文件

include_playbook在新版本的ansible中已经不支持了,这里使用import_playbook

  • 目录结构
root@master:/data00/ansible/include_playbook# tree
.
├── install_nginx.yaml
├── main.yaml
└── start_nginx.yaml

0 directories, 3 files
  • install_nginx.yaml
root@master:/data00/ansible/include_playbook# cat install_nginx.yaml 

- name: install nginx
  hosts: es
  tasks:
    - name: install nginx
      debug:
        msg: "install nginx"
      tags: install
  • start_nginx.yaml
root@master:/data00/ansible/include_playbook# cat start_nginx.yaml 
- name: restart nginx
  hosts: es
  tasks:
    - name: restart nginx
      debug:
        msg: "restart nginx"
      tags: restart
  • main.yaml
root@master:/data00/ansible/include_playbook# cat main.yaml 
- import_playbook: ./install_nginx.yaml
- import_playbook: ./start_nginx.yaml
  • 测试执行:
root@master:/data00/ansible/include_playbook# ansible-playbook main.yaml 

PLAY [install nginx] *********************************************************************************************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************************************************************************
ok: [10.37.120.9]

TASK [install nginx] *********************************************************************************************************************************************************************************************
ok: [10.37.120.9] => {
    "msg": "install nginx"
}

PLAY [restart nginx] *********************************************************************************************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************************************************************************
ok: [10.37.120.9]

TASK [restart nginx] *********************************************************************************************************************************************************************************************
ok: [10.37.120.9] => {
    "msg": "restart nginx"
}

PLAY RECAP *******************************************************************************************************************************************************************************************************
10.37.120.9                : ok=4    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

include_roles导入角色

生产环境基本不用,忽略即可

posted @ 2026-07-14 20:27  huangSir-devops  阅读(9)  评论(0)    收藏  举报
作者:你的名字
出处:你的博客链接
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。