ansible变量使用方法

内容纲要

什么是 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

ansible变量
ansible变量

2.通过inventory文件定义变量
通过变量的方式定义inventory可以让我们省去很多管理主机清单的时间。这里我通过主机组变量的方式对主机的账号密码以及SSH端口进行管理。
例:
ansible变量
这里定义了一个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
ansible变量
ansible变量

在执行结果中打印输出变量结果

---
- 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/

spacer

Leave a reply

评论审核已启用。您的评论可能需要一段时间后才能被显示。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据