什么是 ansible变量 ?
在实际的环境中我们定义变量的方式有很多,比如在Linux中我可以定义变量,给变量赋值。
[root@ansible-01 ~]# x='www.wenjiangun.com'
[root@ansible-01 ~]# echo $x
www.wenjiangun.com
这就是一个定义变量的过程,那我们在ansible中也是可以定义变量的,而且也是可以通过多种方式来定义变量。
ansible怎么定义变量
这里说一下我用的最多的三种定义变量的方式。还有一些我没有用到的方式,我后续再更新。
1.通过playbook文件定义变量
2.通过inventory文件定义变量
3.通过ansible -e参数定义变量
ansible定义变量方式详解
1.通过playbook文件定义变量
在playbook文件中我们可以加入vars来定义我们整个文件的变量
例:
---
- hosts: test
remote_user: root
vars:
- web: httpd-2.4.6
- docker: docker-1.13.1
tasks:
- name: Installed Apache Package
yum: name={{ web }} state=present
- name: Installed Docker Package
yum : name={{ docker }} state=present
- name: Start Apache Service
service: name=httpd state=started enabled=yes
- name: Start Docker Service
service: name=docker state=started enabled=yes
2.通过inventory文件定义变量
通过变量的方式定义inventory可以让我们省去很多管理主机清单的时间。这里我通过主机组变量的方式对主机的账号密码以及SSH端口进行管理。
例:
这里定义了一个vars变量,只要在test主机组里的主机都会用这个SSH信息
3.通过ansible -e参数定义变量
ansible -e参数是在命令行中对yaml文件中的变量进行定义。
例:
---
- hosts: test
remote_user: root
tasks:
- name: Installed Apache Package
yum: name={{ web }} state=present
- name: Installed Docker Package
yum : name={{ docker }} state=present
- name: Start Apache Service
service: name=httpd state=started enabled=yes
- name: Start Docker Service
service: name=docker state=started enabled=yes
ansible-playbook -e web=httpd -e docker=docker example2.yaml
在执行结果中打印输出变量结果
---
- hosts: test
remote_user: root
vars:
- web: httpd-2.4.6
- docker: docker-1.13.1
tasks:
- name: Installed Apache Package
yum: name={{ web }} state=present
- name: Installed Docker Package
yum : name={{ docker }} state=present
- name: Start Apache Service
service: name=httpd state=started enabled=yes
- name: Start Docker Service
service: name=docker state=started enabled=yes
- name: Check Apache state
shell: ps -ef | grep httpd
register: Apache_state
- name: Print Apache state
debug: msg={{ Apache_state.stdout_lines }}
- name: Check Docker state
shell: ps -ef | grep docker
register: Docker_state
- name: Print Docker state
debug: msg={{ Docker_state.stdout_lines }}
这里有一个register参数是需要注意的。register意思是把上面shell命令的结果带到register上,然后我们可以通过debug msg模块来打印出来相关的信息。
相关链接:(ansible-Variables)
https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#playbooks-variables
上一篇:(ansible playbook使用方法)
https://www.wenjiangun.com/blog/1234/