ansible playbook显示自定义shell参数

今天实现ansible的roles来安装jenkins

roles目录如下
root@centos-mysql01:/data/sh/ansible_role# tree  jenkins
jenkins
├── files
│   ├── jenkins   #jenkins的defaults的配置文件
│   ├── jenkins.io.key  # jenkins的key密钥文件
│   └── jenkins.list   #jenkins的源地址文件
├── handlers
│   └── main.yml
├── tasks
│   └── main.yml
└── vars
    └── main.yml
handlers main.yml
root@centos-mysql01:/data/sh/ansible_role# cat jenkins/handlers/main.yml 
 - name: restart jenkins
   listen: jenkins status
   service: name=jenkins enabled=yes state=restarted
 - name: reload jenkins
   listen: jenkins status
   service: name=jenkins state=reloaded
  root@centos-mysql01:/data/sh/ansible_role# cat jenkins/tasks/main.yml 
   - name: wget install
     apt: name=wget state=latest
   - name: 获取jenkins的key 导入系统
     shell: wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
   - name: 导入list文件
     shell: sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
   - name: 安装jenkins
     apt: name=jenkins state=present
   - name: jenkins conf change
     copy: src=jenkins dest={{jenkins_conf}}
     notify:
       - restart jenkins
   - name:  获取initalAdminPassword
     shell: filepass=`cat /var/lib/jenkins/secrets/initialAdminPassword` && echo $filepass
     register: say_hi    #重点显示
   - debug: var=say_hi.stdout     #重点显示
我想要直接显示 jenkins部署的密码文件initalAdminPassword
    - name:  获取initalAdminPassword
     shell: filepass=`cat /var/lib/jenkins/secrets/initialAdminPassword` && echo $filepass
     register: say_hi    #重点显示
   - debug: var=say_hi.stdout     #重点显示

在ansible中,任何一个模块都会返回json格式的数据,即使是错误信息都是json格式的。
在ansible中,json格式的数据,其内每一项都可以通过变量来引用它。当然,引用的前提是先将其注册为变量。
例如,下面的playbook是将shell模块中echo命令的结果注册为变量,并使用debug模块输出。
      - hosts: benji
        tasks:
        - shell: echo hello world
          register: hanye
        - debug: var=hanye
 root@centos-mysql01:/data/sh/ansible_role# ansible-playbook  register.yml     
 TASK [debug] ***********************************************************************************************************************
 ok: [192.168.1.124] => {
     "hanye": {
         "changed": true, 
         "cmd": "echo hello world", 
         "delta": "0:00:00.066617", 
         "end": "2018-12-25 14:17:35.571232", 
         "failed": false, 
         "rc": 0, 
         "start": "2018-12-25 14:17:35.504615", 
         "stderr": "", 
         "stderr_lines": [], 
         "stdout": "hello world", 
         "stdout_lines": [
             "hello world"
         ]
     }
 }
如果我想只显示其中的stdout
 - hosts: benji
   tasks:
    - shell: echo hello world
      register: hanye
    - debug: var=hanye.stdout
我想显示其中的stdout第一个字符h
  - hosts: benji
    tasks:
     - shell: echo hello world
       register: hanye
     - debug: var=hanye.stdout[0]      
这里只需要把其换成数组展示即可
如果想要获取到对应的ip地址
 ansible benji  -m setup -a "filter=*eth*"  

转载于:https://blog.51cto.com/9025736/2335024

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值