第 7 章 Playbook文件复用
第 7 章 Playbook文件复用
1.include & import 区别
2.import_playbook
3.include_tasks
4.import_tasks
1.include & import 区别
include*(动态):在运行时导入
• --list-tags,--list-tasks不会显示到输出
• 不能使用notify触发来自include*内处理程序名称(handlers)
import*(静态):在Playbook解析时预先导入
• 不能与循环一起使用
• 将变量用于目标文件或角色名称时,不能使用inventory(主机/主机组等)中的变量
2.import_playbook
为了可以灵活使用部署不同环境,可以将部署环境分割成几部分完成。
例如:LNMP分成nginx.yml、mysql.yml、php.yml。LNMT分成nginx.yml、mysql.yml、tomcat.yml。这样playbook文件就可以灵活进行复用。
简单示例如下:(实例中仅对语法进行演示理解)
#LNMP.yml --- - import_playbook: nginx.yml - import_playbook: php.yml - import_playbook: mysql.yml #LNMT.yml --- - import_playbook: nginx.yml - import_playbook: tomcat.yml - import_playbook: mysql.yml #nginx.yml --- - hosts:web gather_facts: no tasks: - name: Install nginx debug: msg="install nginx ..." #php.yml --- - hosts: web gather_facts: no remote_user: root tasks: - name: Install php debug: msg="install php ..." # cat tomcat.yml --- - hosts: web gather_facts: no remote_user: root tasks: - name: Install Tomcat debug: msg="install tomcat ..." 演示效果省略
3.include_tasks与import_tasks
在任务较多时,可以将任务分解,分成一个个任务链进行复杂环境的部署,具体使用如下:
#main.yml --- - hosts: web gather_facts: no tasks: - name: task1 include_tasks: task1.yml vars: user: longtao - name: task2 include_tasks: task2.yml vars: user: baiziyou #task1.yml --- - name: test task1 debug: msg="task1 hello {{user}}" #task2.yml --- - name: test task2 debug: msg="task2 hello {{user}}"
4.import_tasks用法跟include差不多
文章目录
关闭