ansible系列(21)--ansible的变量注册Register
1. 变量注册Register
register 关键字可以将某个 task 任务结果存储至变量中,最后使用 debug模块 输出变量内容,可以用于后续排障;
示例一:
register的基本使用:#playbook文件:
[root@xuzhichao ansible_var]# cat test7.yml
---
- hosts: 192.168.20.23
remote_user: root tasks:
- name: Shell Command
shell: netstat -ntlp
register: port_status - name: Get Port Status
debug: msg={{ port_status.stdout_lines }} <==stdout_lines作用是只输出命令的内容。
#运行playbook:
[root@xuzhichao ansible_var]# ansible-playbook test7.yml PLAY [192.168.20.23] ***************************************************************************************************************************************** TASK [Gathering Facts] ***************************************************************************************************************************************
ok: [192.168.20.23] TASK [Shell Command] *****************************************************************************************************************************************
changed: [192.168.20.23] TASK [Get Port Status] ***************************************************************************************************************************************
ok: [192.168.20.23] => {
"msg": [
"Active Internet connections (only servers)",
"Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name ",
"tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 668/rpcbind ",
"tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 15615/rpc.mountd ",
"tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 8981/nginx: master ",
"tcp 0 0 0.0.0.0:40372 0.0.0.0:* LISTEN - ",
"tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1112/sshd ",
"tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1288/master ",
"tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 8981/nginx: master ",
"tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN - ",
"tcp 0 0 0.0.0.0:55651 0.0.0.0:* LISTEN 1122/rpc.statd ",
"tcp6 0 0 :::111 :::* LISTEN 668/rpcbind ",
"tcp6 0 0 :::40688 :::* LISTEN - ",
"tcp6 0 0 :::20048 :::* LISTEN 15615/rpc.mountd ",
"tcp6 0 0 :::56211 :::* LISTEN 1122/rpc.statd ",
"tcp6 0 0 :::22 :::* LISTEN 1112/sshd ",
"tcp6 0 0 ::1:25 :::* LISTEN 1288/master ",
"tcp6 0 0 :::2049 :::* LISTEN - "
]
} PLAY RECAP ***************************************************************************************************************************************************
192.168.20.23 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
示例二:使用
register关键字完成jumpserver key的创建;[root@xuzhichao ansible_var]# cat test8.yaml
- hosts: webservers
tasks: - name: Run Shell Command Random string
shell:
cmd: 'if ! grep "SECRET_KEY" ~/.bashrc; then
SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`;
echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc;
echo $SECRET_KEY;
else
echo $SECRET_KEY;
fi'
register: SECRET_KEY - name: Run Shell Command BOOTSTRAP_TOKEN
shell:
cmd: 'if ! grep "BOOTSTRAP_TOKEN" ~/.bashrc; then
BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za- z0-9 | head -c 16`;
echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc;
echo $BOOTSTRAP_TOKEN;
else
echo $BOOTSTRAP_TOKEN;
fi'
register: BOOTSTRAP_TOKEN - name: Copy Jms Configure
template:
src: ./j-config.yml
dest: /tmp/jms_config.yml - name: Copy Koko Configure
template:
src: ./k-config.yml
dest: /tmp/koko_config.yml # 配置文件中:
SECRET_KEY: {{ SECRET_KEY.stdout.split('=')[1] }}
BOOTSTRAP_TOKEN: {{ BOOTSTRAP_TOKEN.stdout.split('=')[1] }}
ansible系列(21)--ansible的变量注册Register的更多相关文章
- Ansible系列(六):各种变量定义方式和变量引用
本文目录:1.1 ansible facts1.2 变量引用json数据的方式 1.2.1 引用json字典数据的方式 1.2.2 引用json数组数据的方式 1.2.3 引用facts数据1.3 设 ...
- Ansible系列(五):各种变量定义方式和变量引用
Ansible系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1.1 ansible facts facts组件是用来收集被管理节点信息的 ...
- Ansible系列(六):循环和条件判断
本文目录:1. 循环 1.1 with_items迭代列表 1.2 with_dict迭代字典项 1.3 with_fileglob迭代文件 1.4 with_lines迭代行 1.5 with_ne ...
- Ansible系列(五):playbook应用和roles自动化批量安装示例
html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...
- Ansible系列(三):YAML语法和playbook写法
html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...
- Ansible系列(七):执行过程分析、异步模式和速度优化
本文目录:1.1 ansible执行过程分析1.2 ansible并发和异步1.3 ansible的-t选项妙用1.4 优化ansible速度 1.4.1 设置ansible开启ssh长连接 1.4. ...
- Ansible系列(四):playbook应用和roles自动化批量安装示例
Ansible系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html playbook是ansible实现批量自动化最重要的手段.在其中可以使用变 ...
- Ansible系列(二):选项和常用模块
html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...
- Ansible系列(一):基本配置和使用
本文目录:1.1 安装Ansible1.2 配置Ansible 1.2.1 环境配置 1.2.2 SSH互信配置 1.2.3 简单测试1.3 inventory Ansible是一种批量.自动部署工具 ...
- SpringBoot系列教程web篇Servlet 注册的四种姿势
原文: 191122-SpringBoot系列教程web篇Servlet 注册的四种姿势 前面介绍了 java web 三要素中 filter 的使用指南与常见的易错事项,接下来我们来看一下 Serv ...
随机推荐
- 初学STM32 CAN通信(三)
1. stm32 CAN通信标准库函数 //CAN通信初始化函数 uint8_t CAN_Init(CAN_TypeDef* CANx, CAN_InitTypeDef* CAN_InitStruct ...
- scala入门输出hello world!
官网下载scala 2.12.11 版zip包,解压到自定义目录并配置环境变量.
- AndroidStudio配置 | 菜鸟教程
https://www.runoob.com/android/android-studio-install.html
- Linux 基础命令和帮助命令
Linux命令 X Window 与命令行模式的切换 Linux默认的情况下会提供六个终端来让用户登录,切换的方式为使用[Ctrl+Alt+F1~F6]的组合键.系统会将[F1 ~ F6]命名为t ...
- #线段树#LOJ 6029「雅礼集训 2017 Day1」市场
题目 在长度为\(n(n\leq 10^5)\)的数列中, 需要满足区间加,区间下取整的操作 以及能够查询区间和以及区间最小值 除数\(d\)满足\(2\leq d\leq 10^9\) 加数\(c\ ...
- 赵海鹏:如何进行 OpenHarmony 音频特性架构设计和开发工作
编者按:在 OpenHarmony 生态发展过程中,涌现了大批优秀的代码贡献者,本专题旨在表彰贡献.分享经验,文中内容来自嘉宾访谈,不代表 OpenHarmony 工作委员会观点. 赵海鹏 江苏润和软 ...
- C#中操作Excel
在GIS数据处理中,经常遇到与Excel的交互,这里进行简单的总结. Excel行列号就像是编辑中的二维数据组,操作Excel相当于操作二维数组.遍历.循环.取值.赋值-- 1.添加引用 添加引用也有 ...
- RabbitMQ 04 直连模式-Java操作
使用Java原生的方式使用RabbitMQ现在已经较少,但这是基础,还是有必要了解的. 引入依赖. <dependency> <groupId>com.rabbitmq< ...
- Mysql之innodb架构
Innodb存储引擎的架构 内存结构 Bufer Pool 缓冲池是主内存中的一个区域,里面可以缓存磁盘上经常操作的真实数据,在执行增删改查操作时,先操作缓冲池中的数据(若缓冲池没有数据,则从磁盘加载 ...
- Linux之驱动管理
一.相关概念 驱动概念 驱动与底层硬件直接打交道,充当了硬件与应用软件中间的桥梁. 将驱动程序载入内核,应用程序可以通过系统调用接口来访问(驱动)底层的硬件设备. 驱动功能 对设备初始化和释放 把数据 ...