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