包含和导入文件及角色结构

本文介绍了如何在Ansible中管理和组织大型playbook,包括包含和导入文件的不同方法,如import_playbook和include_tasks的区别。此外,还详细阐述了角色结构的重要性,如何利用角色来构造和复用playbook,以及角色结构的标准目录,强调了角色在提升代码复用性和灵活性方面的优势。
摘要由CSDN通过智能技术生成

包含和导入文件及角色结构

1 包含和导入文件

1.1 管理大型playbook

如果playbook很长或很复杂,我们可以将其分成较小的文件以便于管理。可采用模块化方式将多个playbook组合为一个主要playbook,或者将文件中的任务列表插入play。这样可以更轻松地在不同项目中重用play或任务序列

1.2 包含或导入文件

Ansible可以使用两种操作将内容带入playbook,可以包含内容,也可以导入内容

包含内容是一个动态操作,在playbook运行期间,Ansible会在内容到达时处理所包含的内容

导入内容是一个静态操作,在运行之前,Ansible在最初解析playbook时预处理导入的内容

1.3 导入playbook

import_playbook指令允许将包含play列表的外部文件导入playbook,可以把一个或多个额外playbook导入到主playbook,由于导入的内容是一个完整的playbook,因此import_playbook功能只能在playbook的顶层使用,不能在play内使用,如果导入多个playbook,则按顺序导入并运行导入内容

导入两个额外playbook的主playbook的示例

[root@master apache]# cat main.yml 
- name: import playbook for install
  import_playbook: install.yml

- name: import playbook for config
  import_playbook: config.yml

还可以使用导入的playbook在主playbook中交替play。

- hosts: all
  tasks:
    - name: start service
      service:
        name: httpd
        state: started
        enabled: yes

- name: import playbook for install
  import_playbook: install.yml

- name: import playbook for config
  import_playbook: config.yml

1.4 导入和包含任务

1.4.1 导入任务文件

可以使用import_tasks功能将任务文件静态导入playbook内的play中。导入任务文件时,在解析该playbook时将直接插入该文件中的任务。Playbook中的import_tasks的位置控制插入任务的位置以及运行多个导入的顺序。

---
- name: Install web server
  hosts: webservers
  tasks:
  - import_tasks: webserver_tasks.yml

导入任务文件时,在解析该playbook时将直接插入该文件中的任务。由于import_tasks在解析playbook时静态导入任务,因此对其工作方式有一些影响。

  • 使用import_tasks功能时,导入时设置的when等条件语句将应用于导入的每个任务
  • 无法将循环用于import_tasks功能
  • 如果使用变量来指定要导入的文件的名称,则将无法使用主机或组清单变量
案例:
[root@master ~]# cd /etc/ansible/playbook/apache/
[root@master apache]# ls
config.yml  fil
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值