今天实现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*"