Ansible-变量-迭代-jinja2模版

  • 变量:

    • 在ansible中,变量是用来存储和传递数据的容器。
    • 这些变量可以包含各种类型的数据,列如数字、字符串、列表、字典。
    • 可以增加ansible playbook的灵活性和重用性
  • 变量的使用:

    • 声明:变量名=值
    • 引用:{{ 变量名 }}
  • 变量定义的方式:

    • 1.目标主机默认的属性,setup模块获取
    • 2.主机清单文件中定义的属性
    • 3.playbook 通过vars定义的属性
    • 4.专用文件定义的属性
    • 5.命令行定义的属性
    • 注:在yml文件中使用变量需要使用""来引住,大括号左右两侧需要空格

      • 一.setup模块获取:

        • ansible all -m setup -a "gather_subset=network filter=ansible_default_ipv4" (setup模块提供的变量)
        • vim demo01.yml


            • hosts: all
          • remote_user: root
          • tasks:
            • name: create directory
          • file:
          • path: "/tmp/{{ ansible_default_ipv4['address'] }}"
          • state: directory
            • set_fact:(属性用来定义变量,下方可以引用变量)
          • debug:(模块用来输出一个内容) msg:(消息)
      • 二.主机清单文件中定义变量:

        • 1.主机变量:

        • 2.组变量:

          • 主机变量优先于组变量
      • 三.在剧本中通过vars定义变量:
        • 注:vars变量要优先于主机清单变量和setup变量
      • 四.专用文件定义的属性
        • 1.先定义变量文件(.yml文件,文件中的变量为字典形式)

          • vim vars.yml
          • vim demo04.yml
      • 五.命令行定义属性:
        • ansible-playbook -i hosts.ini demo03.yml -e "t=host66"
          • -e:指定变量
      • 五种定义变量方式的优先级:5>4>3>2>1
  • 迭代:

    • 在ansible中,可以使用循环来迭代列表、字典等数据结构,并针对每个元素执行特定的任务。
    • ansible支持多种类型的迭代语句,包括with_items(列表),loop,with_dict(字典)
    • 1.定义列表:
      • ansible自动遍历列表元素
    • 2.定义字典:
      • vim with_dict.yml
  • when 条件控制:

    • "when" 是一个用于tasks的关键字,它用于定义条件以决定是否执行该任务
    • "when"关键字允许基于条件来控制任务的执行,这样可以在运行任务之前先判断条件是否成立,如果条件成立就执行任务,否则跳过该任务。
  • jinja2模版和template模块:

    • jinja2模版后缀必须为.j2
    • jinja2模版中可以定义变量,进行传参
    • 可以在剧本中定义一些需要动态生成的文件,列如配置文件等
    • template模块可以把jinja2模版的文件的变量解析之后,复制到客户机
    • 使用:

      • 定义jinja2文件:
        • vim server.conf.j2
          • 1
      • 定义yml文件:
        • template模块与copy模块相同的是,都可以将文件远程复制到客户机上,但不同的是 copy模块是原封不动的将文件复制过去,但template模块可以对j2文件中的变量进行传参
      • 执行:ansible-playbook -i hosts.ini demo.yml -e "port=8888"
相关推荐
在野靡生.1 天前
Ansible(4)—— Playbook
linux·运维·ansible
rocksun2 天前
如何使用Semaphore在Ansible上添加GUI
ansible
千航@abc4 天前
深度剖析 ansible:从部署基础到模块运用及剧本编写
运维·centos·ansible
一只栖枝5 天前
RHCA核心课程技术解析3:Ansible 自动化平台深度实践指南
linux·服务器·自动化·ansible·运维工程师·红帽认证·rhce认证
chairon5 天前
Ansible:playbook实战案例
运维·服务器·网络·ansible
leo·Thomas8 天前
什么是 Ansible Playbook?
ansible·playbook
luojiaao10 天前
【CICD】Ansible知识库
ansible
hhzz11 天前
从零开始使用 Ansible 自动化部署 SpringBoot Web 应用(含 MySQL、Redis、Vue、Nginx)
前端·自动化·ansible
zxnbmk15 天前
ansible速查手册
linux·服务器·ansible
book012115 天前
Ansible 自动化运维
运维·自动化·ansible