首页 > 其他分享 >ansible02-ansible变量的定义与引用

ansible02-ansible变量的定义与引用

时间:2024-05-10 09:55:04浏览次数:9  
标签:变量 定义 ansible playbook ansible02 yml name

4.1 ansible变量的定义与引用

playbook中变量的定义

变量名只能由数字、字母、下划线组成,且只能由字母开头

变量的来源

(1) setup模块中的所有变量都可以直接调用

(2) 在/etc/ansible/hosts中定义

- 普通变量:主机组中主机单独定义,优先级高于公共变量

- 公共变量:也称组变量,针对主机组中所有主机定义统一变量

(3) 通过命令行指定变量,优先级最高

ansible-palybook -e varname=value

(4) 在playbook中定义

vars:

- var1: value1

- var2: value2

(5) 在独立的变量yaml文件中定义

(6) 在role中定义

# facts组件是⽤来收集被管理节点信息的,使⽤setup模块可以获取这些信息

变量的优先级

-e  >  playbook  >  主机清单普通变量  >  主机清单公共变量

setup模块中的变量

使用filter过滤主机名
ansible host10 -m setup  # 列出主机变量
ansible host10 -m setup -a 'filter=ansible_hostname'
ansible host10 -m setup -a 'filter=*address*'

普通变量示例

在清单文件中定义普通变量
cat /etc/ansible/hosts
[webserver]
192.168.1.1   http_port=81
192.168.1.2   http_port=82

在playbook中引用普通变量
cat hostname.yml
- hosts: webserver
  remote_user: root
  tasks:
    - name: set hostname
      hostname: name=www{{ http_port }}.host.com

公共变量示例

在清单文件中定义公共变量
cat /etc/ansible/hosts
[webserver:vars]
nodename=www
domainname=host.com

在playbook中引用公共变量
cat hostname.yml
- hosts: webserver
  remote_user: root
  tasks:
    - name: set hostname
      hostname: name={{ nodename }}{{ http_port }}.{{ domainname }}

命令行指定变量名

首先在playbook中引用变量
cat app.yml
- hosts: host10
  remote_user: root
  tasks:
    - name: install app
      yum: name={{ appname }}
    - name: start service
      service: name={{ appname }} state=started enabled=yes

运行playbook时指定引用的变量的值
ansible-playbook -e 'appname=httpd' app.yml

同时指定多个变量
ansible-playbook -e 'appname1=httpd appname2=vsftpd' aplication.yml

在playbook中定义变量

cat app.yml
- hosts: host10
   remote_user: root
  vars:
    - appname1: httpd
    - appname2: vsftpd
  tasks:
    - name: install app1
      yum: name={{ appname1 }}
    - name: install app2
      yum: name={{ appname2 }}

在独立的变量yaml文件中定义

没有特殊的格式要求,直接指定变量和变量值
cat vars.yml
var1: httpd 
var2: vsftpd

引用变量
cat testvars.yml
- hosts: hoso10
  remote_user: root
  vars_files: 
    - vars.yml            # vars_files: vars.yml  这种写法是错误的
  tasks:
    - name: hello
      shell: echo {{ var1 }}

标签:变量,定义,ansible,playbook,ansible02,yml,name
From: https://www.cnblogs.com/lixunblogs/p/18167310

相关文章

  • Springboot项目镜像制作&传递环境变量、设置hostname、动态设置JVM参数、cmd&entrypoi
    实现制作一个springboot的镜像,并且可以传递环境变量实现动态JVM参数和端口。0.准备&cmd、entrypoint区别1.准备springboot项目一个简单的springboot项目,默认启动8001端口,里面只有一个接口。xxx%curllocalhost:8081indexdocker环境2.CMD、entrypoint区......
  • linux增加环境变量示例
    首先,通过 vim~/.bashrc 命令进入我这个用户的.bashrc文件内 然后在这个文件末尾添加环境变量,比如下面红框中的内容表示添加了路径/home/nfs_new/wangpeng/VSCode-linux-x64/bin为环境变量,实际上这里是把vscode启动命令添加作为环境变量了。其中, $PATH 表示之前所有的环......
  • Python中私有变量和私有方法
    python的私有化是为了规划私有属性,避免非相关的访问【假如!我有老婆,你不能直接知道我老婆是谁,你只有问我才会知道,即我的私有属性只有我知道】在python中定义私有变量和私有方法只需要在变量名或函数名前加上"__"两个下划线在类内部的方法中使用时self.__变量名或函数名。实......
  • snap7读写PLC变量
    1.读DB'''#copysnap7.dll&snap7.libfilestopythonrootpathfirstpipinstallsnap7'''importsnap7importstructfromsnap7importutil#创建通讯客户端实例plc=snap7.client.Client()#连接至PLCplc.connect('192.1......
  • Ansible基础——ansible基础用法
    ansible基本用法-ping#ping服务器是否能通如:ansibleall-mping-command#在远程主机上执行命令,并将结果返回本主机,hosts为定义的主机清单中的用户组如:ansible-ihoststest-mcommand-a"chdir=/home/wpsls"-shell#shell命令如:ansible......
  • javaScript之局部变量,全局变量与局部作用域,全局作用域
    前端开发工作者,最需要学习的一门语言就是JavaScript了吧,其实学习大部分编程语言都是从基本的语法知识开始人门的。什么语句、变量、数据类型、对象、函数...今天本文就简单说明javaScript变量中的一个小小的知识点,其实在后面的最开始工作编程中我也是常常容易出现bug的一个点。......
  • C#与PLC变量在数据交互上的一些探索
    1.基于C#的数据交互A.S7,usingS7.Net,后文读写数据时二次封装过S7协议,这里暂且不表,只列举S7协议最原始的应用。new一个PLC对象//idenfybasiclinkparamsprivatestringplc_ip;privateCpuTypeplc_type;privateshortplc_rack,plc......
  • 蛇形变量名(nake_case)速转驼峰变量名(camelCase)__Java
    最近遇到当JavaBean不遵循驼峰命名规则时,使用反射赋值失败。但是我的类中属性个数非常多(一个一个改也太恼火了),因此写了个将蛇形变量名转驼峰变量名的方法,在此分享出来供大家使用。publicstaticvoidconvertToCamelCase(Objectobj){Class<?>clazz=obj.getClas......
  • Shell阶段02 shell变量运算(整数运算/小数运算), shell变量案例
    Shell变量运算加减乘除求余num1+num2num1-num2num1*num2num1/num2num1%num2求余整数运算expr$(())$[]let只支持整数运算,不支持小数运算expr数值之间必须要有空格进行分开,当使用*乘的时候,需要对其进行转义使用,不能进行次方运算[root@......
  • 第三十八天:Ansible playbook--Role角色
    角色是ansible自1.2版本引入的新特性,用于层次性、结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。简单来讲,roles就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,并......