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的更多相关文章

  1. Ansible系列(六):各种变量定义方式和变量引用

    本文目录:1.1 ansible facts1.2 变量引用json数据的方式 1.2.1 引用json字典数据的方式 1.2.2 引用json数组数据的方式 1.2.3 引用facts数据1.3 设 ...

  2. Ansible系列(五):各种变量定义方式和变量引用

    Ansible系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1.1 ansible facts facts组件是用来收集被管理节点信息的 ...

  3. Ansible系列(六):循环和条件判断

    本文目录:1. 循环 1.1 with_items迭代列表 1.2 with_dict迭代字典项 1.3 with_fileglob迭代文件 1.4 with_lines迭代行 1.5 with_ne ...

  4. Ansible系列(五):playbook应用和roles自动化批量安装示例

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  5. Ansible系列(三):YAML语法和playbook写法

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  6. Ansible系列(七):执行过程分析、异步模式和速度优化

    本文目录:1.1 ansible执行过程分析1.2 ansible并发和异步1.3 ansible的-t选项妙用1.4 优化ansible速度 1.4.1 设置ansible开启ssh长连接 1.4. ...

  7. Ansible系列(四):playbook应用和roles自动化批量安装示例

    Ansible系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html playbook是ansible实现批量自动化最重要的手段.在其中可以使用变 ...

  8. Ansible系列(二):选项和常用模块

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  9. Ansible系列(一):基本配置和使用

    本文目录:1.1 安装Ansible1.2 配置Ansible 1.2.1 环境配置 1.2.2 SSH互信配置 1.2.3 简单测试1.3 inventory Ansible是一种批量.自动部署工具 ...

  10. SpringBoot系列教程web篇Servlet 注册的四种姿势

    原文: 191122-SpringBoot系列教程web篇Servlet 注册的四种姿势 前面介绍了 java web 三要素中 filter 的使用指南与常见的易错事项,接下来我们来看一下 Serv ...

随机推荐

  1. 初学STM32 CAN通信(三)

    1. stm32 CAN通信标准库函数 //CAN通信初始化函数 uint8_t CAN_Init(CAN_TypeDef* CANx, CAN_InitTypeDef* CAN_InitStruct ...

  2. scala入门输出hello world!

    官网下载scala 2.12.11 版zip包,解压到自定义目录并配置环境变量.

  3. AndroidStudio配置 | 菜鸟教程

    https://www.runoob.com/android/android-studio-install.html

  4. Linux 基础命令和帮助命令

    Linux命令 X Window 与命令行模式的切换   Linux默认的情况下会提供六个终端来让用户登录,切换的方式为使用[Ctrl+Alt+F1~F6]的组合键.系统会将[F1 ~ F6]命名为t ...

  5. #线段树#LOJ 6029「雅礼集训 2017 Day1」市场

    题目 在长度为\(n(n\leq 10^5)\)的数列中, 需要满足区间加,区间下取整的操作 以及能够查询区间和以及区间最小值 除数\(d\)满足\(2\leq d\leq 10^9\) 加数\(c\ ...

  6. 赵海鹏:如何进行 OpenHarmony 音频特性架构设计和开发工作

    编者按:在 OpenHarmony 生态发展过程中,涌现了大批优秀的代码贡献者,本专题旨在表彰贡献.分享经验,文中内容来自嘉宾访谈,不代表 OpenHarmony 工作委员会观点. 赵海鹏 江苏润和软 ...

  7. C#中操作Excel

    在GIS数据处理中,经常遇到与Excel的交互,这里进行简单的总结. Excel行列号就像是编辑中的二维数据组,操作Excel相当于操作二维数组.遍历.循环.取值.赋值-- 1.添加引用 添加引用也有 ...

  8. RabbitMQ 04 直连模式-Java操作

    使用Java原生的方式使用RabbitMQ现在已经较少,但这是基础,还是有必要了解的. 引入依赖. <dependency> <groupId>com.rabbitmq< ...

  9. Mysql之innodb架构

    Innodb存储引擎的架构 内存结构 Bufer Pool 缓冲池是主内存中的一个区域,里面可以缓存磁盘上经常操作的真实数据,在执行增删改查操作时,先操作缓冲池中的数据(若缓冲池没有数据,则从磁盘加载 ...

  10. Linux之驱动管理

    一.相关概念 驱动概念 驱动与底层硬件直接打交道,充当了硬件与应用软件中间的桥梁. 将驱动程序载入内核,应用程序可以通过系统调用接口来访问(驱动)底层的硬件设备. 驱动功能 对设备初始化和释放 把数据 ...