首页 > 其他分享 >ansible 变量

ansible 变量

时间:2024-08-15 22:37:52浏览次数:6  
标签:name vars ansible debug foo 变量

打印playbook变量

var01.yaml

---
  - hosts: ubuntu
    vars:
         foo: bar
    tasks:
         # Prints "Variable 'foo' is set to bar".
         - debug: msg="Variable 'foo' is set to {{ foo }}"

打印文件中的变量

var02.yaml

---
  - hosts: ubuntu
    vars_files:
      vars.yaml
    tasks:
         # Prints "Variable 'foo' is set to bar".
         - debug: msg="Variable 'foo' is set to {{ foo }}"

vars.yaml

---
foo: bar

Ansible的内置环境变量

Ansible的内置环境变量,用setup模块可以查看到
这种语法是Ansible提供的一种“优先级”机制,用于指定一个文件列表,Ansible将根据顺序加载第一个存在的文件,而不会加载多个文件。具体来说,它的工作原理如下:

工作原理:

  • Ansible会按顺序检查列表中的文件,并加载第一个找到的文件。
  • 如果第一个文件存在且可以加载,Ansible会立即停止检查后续文件。
  • 如果第一个文件不存在或无法加载,Ansible会继续检查下一个文件,直到找到一个存在的文件为止。
    [ "apache_{{ ansible_os_family }}.yml", "apache_default.yml" ] 的写法是为了在多个文件中,依次从左到右选择一个最合适的加载,而不是同时加载多个文件。这是为了避免变量覆盖或冲突,并确保使用最优配置。

这种写法会确保两个文件(如果存在)都会被加载
var03.yaml

---
  - hosts: ubuntu
    vars_files:
       - [ "apache_{{ ansible_os_family }}.yml", "apache_default.yml" ]
    tasks:
      - service: name={{ apache }} state=restarted

host_vars和group_vars变量

mkdir -p /etc/ansible/hosts_vars
vim /etc/ansible/hosts_vars/107.151.199.209
---
  foo: bar
  baz: qux

mkdir -p /etc/ansible/group_vars
vim /etc/ansible/group_vars/ubuntu
---
  tar: zar
  ping: pong

var04.yaml

---
  - hosts: ubuntu
    #debug 打印多个变量,host_vars和group_vars是默认加载的
    tasks:
      - name: debug vars
        debug:
          msg:
          #打印主机变量
           - "{{ foo }}"
           - "{{ baz }}"
          #打印主机组变量
           - "{{ tar }}"
           - "{{ ping }}"

注册变量,数组变量

数组变量,这里写入到/etc/ansible/group_vars/ubuntu

foo_list:
  - one
  - two
  - three

读取列表的第一个变量

foo[0]
foo|first

打印ansible内置变量
hostvars: 从一台远程主机上获取另一台远程主机的变量信息,变量hostvars包含了指定主机上所定义的所有变量

var05.yaml

---
  - hosts: ubuntu
    tasks:
      - name: get time
        command: date +"%Y-%m-%d %H:%M:%S"
        register: date_fmt
      - name: print time
        debug:
          var: date_fmt.stdout
       #打印变量要使用"{{}}",可以保证稳定读取
      - name: print time
        debug:
          msg: "{{ date_fmt.stdout }}"
      - name: print time
        debug:
          msg: "{{ date_fmt.stdout }}"
      - name: print foo_list first name with Python语法格式
        debug:
          msg: "{{ foo_list[0] }}"
      - name: print foo_list first name with Jinja2语法
        debug:
          msg: "{{ foo_list|first }}"
      - name: print Ansible built-in vars ansible_eth0
        debug:
          msg: "{{ ansible_eth0.ipv4.address }}"
      - name: print Ansible built-in vars ansible_eth0 #推荐使用 ansible_eth0['ipv4']['address']
        debug:
          msg: "{{ ansible_eth0['ipv4']['address'] }}"
      - name: print Ansible built-in vars ansible_eth0 #hostvars 打印网络接口控制器
        debug:
          msg: "{{ hostvars['107.151.199.209']['ansible_eth0']['pciid'] }}"

ansible 常用的变量

groups: 包含了所有Hosts文件里主机组的一个列表
group_names: 包含了当前主机所在的所有主机组名的一个列表
inventory_hostname: 通过Hosts文件定义主机的主机名(与ansible_home不一定相同)
inventory_hostname_short: 主机端口
play_hosts: 所有主机
ansible_os_family: 系统类型
ansible_hostname: 主机名称
ansible_memtotal_mb: 内存大小
这些变量通过与when语句的判断条件一起,来决定下一步的操作
var06.yaml

---
  - hosts: ubuntu
    tasks:
      - name: print vars
        debug:
          msg:
           - "groups: {{groups}}"
           - "group_names: {{group_names}}"
           - "inventory_hostname: {{inventory_hostname}}"
           - "inventory_hostname_short: {{inventory_hostname_short}}"
           - "play_hosts: {{play_hosts}}"
           - "ansible_os_family: {{ansible_os_family}}"
           - "ansible_hostname: {{ansible_hostname}}"
           - "ansible_memtotal_mb: {{ansible_memtotal_mb}}"
       #打印变量要使用"{{}}",可以保证稳定读取

标签:name,vars,ansible,debug,foo,变量
From: https://www.cnblogs.com/anyux/p/18361943

相关文章

  • C:指针学习-指针变量—学习笔记
    今日伊雷娜:目录前言:1、字符指针变量1.1使用字符指针存放字符1.2使用字符指针变量存放字符串 2、数组指针变量2.1什么是数组指针变量?2.2数组指针变量初始化2.3关于数组指针类型的解析3、函数指针变量3.1函数地址3.2 函数指针变量的创建3.3关于指针的连续......
  • ansible设置环境变量
    通过~/.profile文件设置env01.yaml----hosts:ubuntutasks:#设置环境变量-name:设置环境变量lineinfile:dest:~/.profileregexp:^exportENV_KEY=line:exportENV_KEY=env_value-name:获取环境变量值......
  • 变量-python
    变量-python1.变量的定义变量是存储数据的地方,在程序运行时,变量的值可以改变。变量的定义格式如下:变量名=数据例如:a=10b="hello"c=3.142.变量的命名规则变量名可以由字母、数字、下划线组成,但不能以数字开头。3.变量的类型Python中,变量的类型是动态的,不需......
  • 易优Assign模板文件中定义变量-Eyoucms标签手册
    【基础用法】名称:assign功能:模板文件中定义变量,可在其他标签里使用该变量语法:{eyou:assignname='typeid'value='5'/}文件:无参数:name=''变量名value=''赋给变量名的值底层字段:无【更多示例】-------------------------------示例1------------------------------......
  • 基于ansible playbook 自动化巡检生成xlsx报告
    IAAS自动化巡检生成xlsx报告项目结构:├──README.md├──filter_plugins生成json数据├──generate_xlsx.yml生成xlsx文件├──group_vars全局变量├──library数据处理及生成xlsx模块├──report最终xlsx报告保存├──roles巡检代码├──......
  • NRBO-BP-Adaboost回归 基于牛顿拉夫逊算法优化BP神经网络-Adaboost多变量回归预测(多
    NRBO-BP-Adaboost回归基于牛顿拉夫逊算法优化BP神经网络-Adaboost多变量回归预测(多输入单输出)程序已经调试好,无需更改代码替换数据集即可运行!!!数据格式为excel!需要其他的都可以定制!1️⃣、运行环境要求MATLAB版本为2019b及其以上2️⃣、评价指标包括:R2、MAE、MSE、RPD、RMSE......
  • SQL 变量写法、排序问题 <12>
    一、定义变量排序目的1:合并学生表和分数表,将每个班分别排名目的2:遇到相同分数,考虑还是不考虑相同分数排名学生表(1000条)和分数表(6000条)分别如下1、定义变量、简答排序首先先看一段简单代码:set@i:=0;--定义一个变量i,初始化值为1SELECT *--查询所有的学生表信息......
  • Java 入门指南:字段(成员变量或属性)
    引言在Java编程中,字段(也称为成员变量或属性)是类的重要组成部分,它们用于存储对象的状态信息。理解Java字段的各个方面对于编写高效、可维护的Java代码至关重要。字段的定义与特性字段是类中声明的变量,它们可以是任何类型,包括基本数据类型(如int、double)和引用类型(如String......
  • Taro——环境变量配置
    前言最近准备开发移动端相关的内容,调研后选择了Taro,基于Taro+Vue3进行开发,在初始化框架后,又加入了一些前端规范限制,都完成后,打算配置环境变量,却发现按着官方的文档去配置,并没有生效;在封装的axios中去使用的使用,获取到的是undefined,所以这里做下记录;taro版本:3.6.34模式和环境变......
  • C语言新手小白详细教程(7)指针和指针变量
    希望文章能够给到初学的你一些启发~如果觉得文章对你有帮助的话,点赞+关注+收藏支持一下笔者吧~阅读指南:开篇说明1、指针的定义接下来我们用图示的形式来解释一下指针:2、申明指针变量3、取地址符&4、为指针变量赋值5、间接运算符开篇说明本章节我们学习C语言......