ansible-playbook

一.了解role结构

roles/project/ :项目名称,有以下子目录
files/ :存放由copy或script模块等调用的文件
templates/:template模块查找所需要模板文件的目录
tasks/:定义task,role的基本元素,至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含
handlers/:至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含
vars/:定义变量,至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含
meta/:定义当前角色的特殊设定及其依赖关系,至少应该包含一个名为main.yml的文件,其它文件需在此文件中通过include进行包含
default/:设定默认变量时使用此目录中的main.yml文件

二.常用模块

1.1 import_playbook

将子playbook导入到主playbook中

- import_playbook: /usr/local/infra/ansible/ansible-compose/compose.yml
  vars:
    pro: test

1.2 vars

变量的优先级从高到底:

  • extra vars(在命令行中使用-e)优先级最高
  • 在inventory中定义的连接变量(比如ansible_ssh_user)
  • 大多数的其它变量(命令行转换,play中的变量,included中的变量,role中的变量等)
  • inventory中定义的其它变量
  • 系统发现的facts
  • role默认变量。

1.3 include_role和import_role

  • include_role(动态)
  • import_role(静态)
- hosts: node1
  tasks:
    - include_role:
        name: role_A
      vars:
        name: maurice
        age: 100
    - import_role:
        name: role_B

相比较于roles语句,import_role和include_role的优点如下:
1.可以在task之间穿插导入某些role,这点是roles没有的特性。
2.更加灵活,可以通过when语句等判断是否导入。

include_vars和vars_files的差别:https://blog.51cto.com/14154700/2468386

posted @ 2023-02-23 14:19  yuhaohao  阅读(35)  评论(0编辑  收藏  举报