ansible-playbook定义变量与使用
1. ansible-playbook变量定义与使用
- 命令行
- 在Inventory中定义
- 在Playbook中定义
- 在Role中定义
- 注册变量(register)
- 系统信息变量(facts)
2. 在命令行中定义变量
2.1) 案例编写playbook中定义,变量命令行传参
1 [root@test-1 bin]# vim veriable.yaml
2 [root@test-1 bin]# cat veriable.yaml
3 ---
4 - hosts: web1
5 gather_facts: no
6 remote_user: root
7
8
9 tasks:
10 - name: test var
11 debug: msg="{{work_dir}}"
2.2) 执行playbook变量命令传参
1 [root@test-1 bin]# ansible-playbook veriable.yaml -e work_dir=/usr/local
2
3 PLAY [web1] ******************************************************************************************************************************************************************************************************************************************************************
4
5 TASK [test var] **************************************************************************************************************************************************************************************************************************************************************
6 ok: [192.168.200.132] => {
7 "msg": "/usr/local"
8 }
9 ok: [192.168.200.133] => {
10 "msg": "/usr/local"
11 }
12
13 PLAY RECAP *******************************************************************************************************************************************************************************************************************************************************************
14 192.168.200.132 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
15 192.168.200.133 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
3. 在inventory中定义变量
是在通过hosts文件里定义变量
1 [WebServer]
2 app[01:03].imzcy.cn
3
4
5 [DB]
6 db-[a:c].imzcy.com
7
8
9 192.168.109.[131:133]
4. 在Playbook中定义变量
4.1)编写Playbook定义变量
1 [root@test-1 bin]# vim playbook.yaml
2 [root@test-1 bin]# cat playbook.yaml
3 ---
4 - hosts: web1
5 gather_facts: no
6 remote_user: root
7 vars:
8 - work_dir: /usr/local
9 - nginx_version: 1.15
10
11 tasks:
12 - name: install nginx
13 debug: msg="{{work_dir}}/nginx/{{nginx_version}}"
4.2) 执行playbook配置文件语法检测
1 [root@test-1 bin]# ansible-playbook --syntax-check playbook.yaml
2
3 playbook: playbook.yaml
4.3) 执行playbook变量文件传参
1 [root@test-1 bin]# ansible-playbook playbook.yaml
2
3 PLAY [web1] ************************************************************************************************************************************
4
5 TASK [install nginx] ***************************************************************************************************************************
6 ok: [192.168.200.132] => {
7 "msg": "/usr/local/nginx/1.15"
8 }
9 ok: [192.168.200.133] => {
10 "msg": "/usr/local/nginx/1.15"
11 }
12
13 PLAY RECAP *************************************************************************************************************************************
14 192.168.200.132 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
15 192.168.200.133 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
5. 在Role中定义
1 [root@test-1 vars]# vim /ansible/roles/nginx/vars/main.yaml
2 [root@test-1 vars]# cat /ansible/roles/nginx/vars/main.yaml
3 ---
4 #nginx
5 nginx_version: 1.16.1
6 http_port: 80
7 server_name: test-www.scajy.cn
6. 注册变量(register)
6.1)编写register注册变量
1 [root@test-1 bin]# vim register.yaml
2 [root@test-1 bin]# cat register.yaml
3 ---
4 - hosts: web1
5 gather_facts: no
6 remote_user: root
7 vars:
8 - work_dir: /usr/local
9 - nginx_version: 1.15.1
10
11 tasks:
12 - name: register var
13 command: date +"%F_%T"
14 register: datetime
15
16 - name: touch file
17 file:
18 dest: /tmp/r_{{datetime.stdout}}
19 state: touch
6.2) 检查语法是否错误
1 [root@test-1 bin]# ansible-playbook --syntax-check register.yaml
2
3 playbook: register.yaml
6.3) 执行register配置文件
1 [root@test-1 bin]# ansible-playbook register.yaml
2
3 PLAY [web1] ************************************************************************************************************************************
4
5 TASK [register var] ****************************************************************************************************************************
6 changed: [192.168.200.133]
7 changed: [192.168.200.132]
8
9 TASK [touch file] ******************************************************************************************************************************
10 changed: [192.168.200.133]
11 changed: [192.168.200.132]
12
13 PLAY RECAP *************************************************************************************************************************************
14 192.168.200.132 : ok=2 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
15 192.168.200.133 : ok=2 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
6.4) 验证tmp下是否创建了文件
1 [root@test-1 bin]# ansible web1 -m shell -a "ls -a /tmp |grep r_*"
2 192.168.200.132 | CHANGED | rc=0 >>
3 apache-tomcat-8.5.38.tar.gz
4 hsperfdata_root
5 r_2019-08-25_11:04:53
6
7
8 192.168.200.133 | CHANGED | rc=0 >>
9 apache-tomcat-8.5.38.tar.gz
10 hsperfdata_root
11 r_2019-08-25_11:04:53
7. 系统信息变量(facts)
1 ---
2 - hosts:webservers
3 tasks:
4 - debug:
5 msg: {{group_names}} #打印ansible的host组
6 - debug:
7 msg: {{inventory_hostname}} #打印详细的host主机
8 - debug:
9 msg: {{ansible_hostname}} #配合gather_facts: yes 开启收集系统信息
ansible-playbook定义变量与使用的更多相关文章
- Ansible Playbook 使用变量
如何在 Playbook 中定义并使用变量: vars: - user: "test" # 定义变量 tasks: - name: create user user: name=& ...
- ansible中定义变量的若干方法
Ansible支持十几种定义变量的方式 根据优先级排序的定义方式: Inventory变量 Host Facts变量 Playbook变量 Playbook提示变量 变量文件 命令行变量 1.Inve ...
- Ansible Playbook 变量与 register 详解
ansible 定义变量方式与[多层]变量引用,以及 register 详解 主机规划 添加用户账号 说明: 1. 运维人员使用的登录账号: 2. 所有的业务都放在 /app/ 下「yun用户的家目录 ...
- ansible playbook 变量
变量优先级 在命令中定义的变量(-e参数指定的) 在inventory中定义的变量(ansible_ssh_user等) 其他变量(role中.play中) 系统通过father_facts定义的变量 ...
- 二、Ansible中playbook的变量
先看看debug模块的使用: msg:输出调试信息 var:将某个任务执行的输出作为变量传给debug模块,debug模块将其打印输出 verbosity:debug的任务级别 1:在playbo ...
- Ansible中playbook的变量
转自:http://www.cnblogs.com/lemon-le/p/6862788.html 先看看debug模块的使用: msg:输出调试信息 var:将某个任务执行的输出作为变量传给debu ...
- Ansible playbook 批量修改服务器密码 先普通后root用户
fsckzy Ansible playbook 批量修改服务器密码 客户的需求:修改所有服务器密码,密码规则为Rfv5%+主机名后3位 背景:服务器有CentOS6.7,SuSE9.10.11,r ...
- 写Ansible playbook添加zabbix被监控的对象
本主题达到的效果是能通过编写Ansible Playbook,创建zabbix主机组,把被监控的对象加入到zabbix监控系统中,同时链接到对象的模板. 1.准备工作 在zabbix服务器上面,我们需 ...
- Ansible Playbook Variables
虽然自动化存在使得更容易使事情重复,但所有的系统可能不完全一样. 在某些系统上,您可能需要设置一些与其他操作略有不同的行为或配置. 此外,一些观察到的远程系统的行为或状态可能需要影响如何配置这些系统. ...
随机推荐
- 分布式文件存储:FastDFS简单使用与原理分析
引言 FastDFS 属于分布式存储范畴,分布式文件系统 FastDFS 非常适合中小型项目,在我接手维护公司图片服务的时候开始接触到它,本篇文章目的是总结一下 FastDFS 的知识点. 用了 2 ...
- Selenium-WebDriver安装
一.chrome浏览器: 根据chrome浏览器版本,下载对应的驱动 chromedriver版本 支持的Chrome版本 v2.37 v64-66 v2.36 v63-65 v2.35 v62-64 ...
- CSS -- 盒子模型之边框、内边距、外边距
一.使用border为盒子添加边框 盒子模型的边框就是围绕着内容及补白的线,这条线你可以设置它的粗细.样式和颜色(边框三个属性). 1.border-style(边框样式)常见样式有: dashed( ...
- time模块:时间戳和格式化好的时间表示方法及互相转换方法
1.导入time模块 import time 2.获取当前时间的时间戳 time.time() 3.获取当前格式化好的时间 time.strftime(想要获取的格式) 4.时间戳和格式化 ...
- Robotframework自动化1-Windows环境搭建
前言: robotframework环境搭建-环境准备 1.python2,pip2 2.WxPython 3.Robot Framework 4.Robotframework-ride 5.RIDE ...
- docker注册&打包
在https://hub.docker.com上注册账号,新建reosity docker images命令列出dockerlist docker login命令登录:这其中出现了一个问题,登录不上去 ...
- Java新特性:数据类型可以扔掉了?
在很久很久以前,我们写代码时要慎重的考虑变量的数据类型,比如下面这些: 枚举:尽管在 JDK 5 中增加了枚举类型,但是 Class 文件常量池的 CONSTANT_Class_info 类型常量并没 ...
- OOCSS是什么,该如何用?
1 OOCSS的定义: Object Oriented css(面向对象css)的缩写,是一种用最简单的方式编写的CSS代码,从而使代码 重用性,可维护性和可扩展性更好的书写方法. 2 OOCSS ...
- 谈谈 Java 中的那些“琐”事
一.公平锁&非公平锁 是什么 公平锁:线程按照申请锁的顺序来获取锁:在并发环境中,每个线程都会被加到等待队列中,按照 FIFO 的顺序获取锁. 非公平锁:线程不按照申请锁的顺序来获取锁:一上来 ...
- @JsonCreator自定义反序列化函数-JSON框架Jackson精解第5篇
Jackson是Spring Boot(SpringBoot)默认的JSON数据处理框架,但是其并不依赖于任何的Spring 库.有的小伙伴以为Jackson只能在Spring框架内使用,其实不是的, ...