首页 > 其他分享 >Ansible vars变量定义方式

Ansible vars变量定义方式

时间:2023-02-24 12:01:49浏览次数:43  
标签:变量 vars ansible cat Ansible m01 root name

第一种方式: 在play中定义 类似数组方式
[root@m01 ansible]#cat vars.yml
- hosts: web01
vars:
packages: # 变量的名称 自定义
- wget # 变量的值 如果有多个则使用列表的方式
- lrzsz
- tree
tasks:
- name: Install all Packages
yum:
name: "{{ packages }}" # 调用变量
state: absent

安装软件:
[root@m01 ansible]#cat vars.yml
- hosts: web01
vars:
packages:
- wget
- lrzsz
- tree
tasks:
- name: Install all Packages
yum:
name: "{{ packages }}"
state: present

 

第二种方式: 类似shell边的方式 一个变量名称对应一个值
[root@m01 ansible]#cat vars.yml
- hosts: web01
vars: # 使用列表的方式创建变量
- pack1: wget # 一个名称对应一个值
- pack2: lrzsz
- pack3: tree
tasks:
- name: Install all Packages
yum:
name:
- "{{ pack1 }}"
- "{{ pack2 }}"
- "{{ pack3 }}"
state: present

 

注意:
[root@m01 ansible]#cat vars.yml
- hosts: web01
vars:
- ngx_ver: v1.1
- ngx_dir: web01
tasks:
- name: Install all Packages
file:
path: "{{ ngx_dir }}_{{ ngx_ver }}" # 调用变量如果没有路径则加双引号
state: touch


[root@m01 ansible]#cat vars.yml
- hosts: web01
vars:
- ngx_ver: v1.1
- ngx_dir: web01
tasks:
- name: Install all Packages
file:
path: /tmp/{{ ngx_dir }}_{{ ngx_ver }} # 调用变量如果带路径不需要加双引号
state: touch

第三种定义方式: 在文件中定义变量 在play中引用变量
[root@m01 ansible]#cat test.yml
package1: tree
package2: wget
package3: lrzsz


调用变量:
[root@m01 ansible]#cat vars.yml
- hosts: web01
vars_files: ./test.yml
tasks:
- name: Install all Packages
yum:
name:
- "{{ package1 }}"
- "{{ package2 }}"
- "{{ package3 }}"
state: present


客户端IP取值方式: 两种写法
第一种:
"{{ ansible_default_ipv4['address'] }}"
第二种:
"{{ ansible_default_ipv4.address }}"


在task中直接调用客户端变量
[root@m01 ansible]#cat vars.yml
- hosts: web_servers
tasks:
- name: Install all Packages
file:
name: "{{ ansible_hostname }}_{{ ansible_default_ipv4['address'] }}"
state: directory

在play中先定义 在task中在调用
[root@m01 ansible]#cat vars.yml
- hosts: web_servers
vars:
- ip: "{{ ansible_default_ipv4['address'] }}"
- hostname: "{{ ansible_hostname }}"
tasks:
- name: Install all Packages
file:
name: "{{ hostname }}_{{ ip }}"
state: directory

 

第四种定义方式: 在inventory主机清单定义

第五种定义方式: 官方推荐
在执行plabybook的目录创建
group_vars host_vars
在hosts_vars目录下创建 以单个主机名称命名的文件
在group_vars目录下创建以组名称命名的文件

[root@m01 ansible]#cat group_vars/web_servers
test: wget
[root@m01 ansible]#cat host_vars/web01
package1: lrzsz
[root@m01 ansible]#cat vars.yml
- hosts: web_servers
tasks:
- name: Install all Packages
file:
name: "{{ test }}.txt"
state: touch

标签:变量,vars,ansible,cat,Ansible,m01,root,name
From: https://www.cnblogs.com/hushitao/p/17150809.html

相关文章

  • Ansible 常用模块及使用案例
    Ansible常用模块及使用案例第一个模块:commandansibleweb01-mcommand-a'可执行命令'第二个模块:Shell支持管道ansibleweb01-mcommand-a'可执行命令'第三个模......
  • ansible使用普通用户sudo切换为root方式记录
    1、首先客户端创建普通用户,记得保留用户的家目录,并设置该用户的密码 2、客户端修改sudoer文件添加sudo用户并设置切换不提示密码,可执行所有权限,如下; 用户名ALL=(......
  • ansible 使用普通用户ssh免密登录提示无tmp权限
    报错:|UNREACHABLE!=>{"changed":false,"msg":"Failedtocreatetemporarydirectory.Insomecases,youmayhavebeenabletoauthenticateanddidn......
  • 设置环境变量 TRACEDESIGNTIME = true并重启 Visual Studio以进行调查
    问题:直接以文本方式修改配置文件时,或者因配置文件有绝对路径,导致项目在其他电脑上不能打开,并提示下图时  怎么设置环境变量 TRACEDESIGNTIME=true开始菜单找到下图......
  • C++ primer 5th 第二章 变量和基本类型 阅读笔记
    第二章变量和基本类型第一节基本内置类型C++标准规定了算术类型尺寸的最小值,同时允许编译器赋予这些类型更大的尺寸。比如:类型含义最小尺寸bool布尔类型......
  • ES6-ES11 变量的解构赋值
    视频<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>......
  • ES6-ES11 let变量声明以及声明特性
    视频<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>l......
  • 条件变量
    介绍#include<pthread.h>pthread_cond_tcond;intpthread_cond_init(pthread_cond_t*restrictcond,constpthread_condattr_t*restricta......
  • SQLite-安装,环境变量添加
    今后的Android编程中将使用SQLite,于是乎我们先要把它安装上。SQLite是什么?SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的SQL数据库引擎。......
  • 环境变量
    一、环境变量1、pstree进程树可以看到我们在的进程pstree在bash的下面是他的子进程图中可以看到我们是在bash-bash下面使用的pstree说明在此窗口之前我们又创建了一个bash......