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定义变量与使用的更多相关文章

  1. Ansible Playbook 使用变量

    如何在 Playbook 中定义并使用变量: vars: - user: "test" # 定义变量 tasks: - name: create user user: name=& ...

  2. ansible中定义变量的若干方法

    Ansible支持十几种定义变量的方式 根据优先级排序的定义方式: Inventory变量 Host Facts变量 Playbook变量 Playbook提示变量 变量文件 命令行变量 1.Inve ...

  3. Ansible Playbook 变量与 register 详解

    ansible 定义变量方式与[多层]变量引用,以及 register 详解 主机规划 添加用户账号 说明: 1. 运维人员使用的登录账号: 2. 所有的业务都放在 /app/ 下「yun用户的家目录 ...

  4. ansible playbook 变量

    变量优先级 在命令中定义的变量(-e参数指定的) 在inventory中定义的变量(ansible_ssh_user等) 其他变量(role中.play中) 系统通过father_facts定义的变量 ...

  5. 二、Ansible中playbook的变量

    先看看debug模块的使用: msg:输出调试信息 var:将某个任务执行的输出作为变量传给debug模块,debug模块将其打印输出 verbosity:debug的任务级别   1:在playbo ...

  6. Ansible中playbook的变量

    转自:http://www.cnblogs.com/lemon-le/p/6862788.html 先看看debug模块的使用: msg:输出调试信息 var:将某个任务执行的输出作为变量传给debu ...

  7. Ansible playbook 批量修改服务器密码 先普通后root用户

    fsckzy   Ansible playbook 批量修改服务器密码 客户的需求:修改所有服务器密码,密码规则为Rfv5%+主机名后3位 背景:服务器有CentOS6.7,SuSE9.10.11,r ...

  8. 写Ansible playbook添加zabbix被监控的对象

    本主题达到的效果是能通过编写Ansible Playbook,创建zabbix主机组,把被监控的对象加入到zabbix监控系统中,同时链接到对象的模板. 1.准备工作 在zabbix服务器上面,我们需 ...

  9. Ansible Playbook Variables

    虽然自动化存在使得更容易使事情重复,但所有的系统可能不完全一样. 在某些系统上,您可能需要设置一些与其他操作略有不同的行为或配置. 此外,一些观察到的远程系统的行为或状态可能需要影响如何配置这些系统. ...

随机推荐

  1. redis在windows下安装教程

    安装过程 1.首先先把下载的压缩包解压到一个文件夹中2.打开cmd指令窗口3.输入你刚才解压的文件路径4.然后输入redis-server redis.windows.conf 命令接下来部署Redi ...

  2. 写Junit测试时用Autowired注入的类实例始终为空怎么解?

    踩坑半天多,终于在网上寻觅到了解决方案,特此分享一下. 重要前提:src/main/java下的根包名必须和src/test/main的根包名完全一致,否则就会发生死活不能注入的情况,要继续进行下面的 ...

  3. 查看Java一段程序运行了多长时间(以几小时几分几秒的形式显示)

    我们通常可以用 long ms=System.currentTimeMillis(); 来取得以毫秒为单位起始时间和终止时间,它们的时间差除以一千就知道一段Java程序运行了多少秒,但多少秒并不直观, ...

  4. jmeter做简单的压测

    一.JMeter概述jmeter除了可以做借口测试外,还可以做压力测试:首先介绍jmeter中各个组件在压力测试中扮演的角色 1)线程(Threads(Users))即虚拟用户,线程组里可设置需要模拟 ...

  5. nodejs解压版安装和配置(带有搭建前端项目脚手架)

    nodejs 安装  我先前用了nvm,觉得nvm挺厉害可以随时更换nodejs版本,但是研究了下,可能自己功力不够还是什么,并不好用,中间还出现了错误:所以最后还是卸载了: 本文图文并茂的一步一步的 ...

  6. 《ASP.NET Core项目开发实战入门》带你走进ASP.NET Core开发

    <ASP.NET Core项目开发实战入门>从基础到实际项目开发部署带你走进ASP.NET Core开发. ASP.NET Core项目开发实战入门是基于ASP.NET Core 3.1 ...

  7. 安装paddle的问题,报错Can not find library: libcudnn.so. The process maybe hang.

    今天在服务器上安装paddle的GPU版时报错 报错截图如下: 其实报错已经提示的很明显了,就是要添加一个环境变量.但我想到我之前并没有在全局环境下安装cudnn,以为是这个原因.因为之前安装pyto ...

  8. Unity接入多个SDK的通用接口开发与资源管理(二)

    接着上篇,本篇对SDK接口进行封装.在开始之前,需要先了解下面知识. (1)unity与android之间的交互 unity通过下面方式调用android中的函数: 方法一: AndroidJavaC ...

  9. [LeetCode]671. 二叉树中第二小的节点(递归)

    题目 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0.如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值. 给出这样的一个二叉树,你需要输出所有 ...

  10. [LeetCode] 207. 课程表(拓扑排序,BFS)

    题目 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课程总量 ...