包含和导入文件

本文详细介绍了如何在Ansible中管理和组织大型playbook,通过包含和导入文件实现模块化。讨论了import_playbook、import_tasks和include_tasks的区别及用法,以及在不同场景下选择合适的方法。此外,还强调了任务文件的管理和为外部play及任务定义变量的重要性,以提升代码的复用性和可维护性。
摘要由CSDN通过智能技术生成

包含和导入文件

管理大型playbook

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

包含或导入文件

  • Ansible可以使用两种操作将内容带入playbook。可以包含内容,也可以导入内容。
  • 包含内容是一个动态操作。在playbook运行期间,Ansible会在内容到达时处理所包含的内容。
  • 导入内容是一个静态操作。在运行开始之前,Ansible在最初解析playbook时预处理导入的内容。

导入playbook

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

下面以安装httpd和修改配置文件端口号为例,导入playbook:

//yum安装httpd,修改配置文件中的端口号,这里是测试,可以对边改个端口号试一下

//playbook同级下创建目录apache,进入apache创建文件config.yml、install.yml、main.yml

//编辑install.yml
[root@192 apache]# cat install.yml 
---
- hosts: 192.168.218.128
  tasks:
    - name: install httpd 
      yum: httpd
      state: present 
      
//我们把准备好的httpd.conf放在了playbook下的目录files下,编辑httpd.conf,把端口号使用变量改为8080,创建模块文件httpd.conf.j2
//httpd.conf.j2中把端口号设为变量
#Listen 12.34.56.78:80
Listen {
  { port }}

//编辑config.yml
[root@192 apache]# vim config.yml 
---
- hosts: 192.168.218.128
  vars:
    - port: 8080
  tasks:
    - name: config httpd
      template: 
        src:  files/httpd.conf.j2
        dest: /etc/httpd/conf/httpd.conf
        
//编辑main.yml
[root@192 apache]# vim main.yml 
- name: install httpd
  import_playbook: install.yml
  
- name: config httpd
  import_playbook: config.yml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值