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"
相关推荐
K_i1343 天前
Ansible实战:VMware下K8s自动化部署指南
kubernetes·自动化·ansible
许泽宇的技术分享3 天前
Ansible核心架构深度剖析:从源码看IT自动化的“简单“哲学
python·ansible·自动化运维·devops·it基础设施
荣光波比3 天前
Ansible(三)—— 使用Ansible自动化部署LNMP环境实战指南
运维·自动化·云计算·ansible
tt666qq4 天前
运维自动化之 Ansible 核心知识点总结
运维·自动化·ansible
C-20029 天前
初探 ansible 部署 devops 持续集成持续交付
ci/cd·ansible·devops
东窗西篱梦9 天前
Ansible自动化运维:从入门到实战,告别重复劳动!
运维·自动化·ansible
weixin_5078479511 天前
Ansible
ansible
小白不想白a11 天前
【ansible/K8s】K8s的自动化部署源码分享
kubernetes·自动化·ansible
三坛海会大神55512 天前
Ansible详解(一)Ansible简介和基础命令及操作
运维·ansible
東雪蓮☆12 天前
Ansible Playbook 编写与模块详解
linux·运维·网络·ansible