实例学习ansible系列(14)playbook变量使用

原创 2016年07月31日 17:04:21

ansible的playbook中的变量引用使用{{ }}。同时本文也会给出实例确认如何使用环境变量降低Hardcoding的耦合。Ansbile还内嵌了七个很有用的变量,使用得当也会带来很大的便利。

  • hostvars变量
  • groups变量
  • group_names变量
  • inventory_hostname变量
  • inventory_hostname_short
  • inventory_dir
  • inventory_file

Ansible中使用变量实例

在vars后设定变量message,并将此message内容输出到log中

[root@host31 ~]# cat hello.playbook
- hosts: host31
  vars:
    - message: hello-world
  gather_facts: false
  tasks:
    - name:  say hello task
      shell: echo {{message}}  `date` by `hostname` >/tmp/hello.log
[root@host31 ~]#

事前确认

[root@host31 ~]# ll /tmp/hello.log
ls: cannot access /tmp/hello.log: No such file or directory
[root@host31 ~]#

执行playbook

[root@host31 ~]# ansible-playbook hello.playbook

PLAY [host31] ******************************************************************

TASK [say hello task] **********************************************************
changed: [host31]

PLAY RECAP *********************************************************************
host31                     : ok=1    changed=1    unreachable=0    failed=0

[root@host31 ~]#

执行结果确认,message变量的内容被正确输出到文件中了。

[root@host31 ~]# cat /tmp/hello.log
hello-world Sun Jul 31 04:26:23 EDT 2016 by host31
[root@host31 ~]#

Ansible中使用环境变量

设定环境变量

[root@host31 ~]# export MESSAGE="hello-world-ansible"

输出环境变量中有的HOSTNAME到log中

[root@host31 ~]# cat hello.playbook
- hosts: host31
  gather_facts: false
  tasks:
    - name:  say hello task
      shell: echo ${HOSTNAME}  `date` by `hostname` >/tmp/hello.log
[root@host31 ~]

执行playbook

[root@host31 ~]# ansible-playbook hello.playbook

PLAY [host31] ******************************************************************

TASK [say hello task] **********************************************************
changed: [host31]

PLAY RECAP *********************************************************************
host31                     : ok=1    changed=1    unreachable=0    failed=0

[root@host31 ~]#

确认结果的输出log
[root@host31 ~]# cat /tmp/hello.log
host31 Sun Jul 31 04:53:42 EDT 2016 by host31
[root@host31 ~]#

版权声明:本文为博主原创文章,未经博主允许欢迎转载,但请注明出处。

playbook变量与引用

在介绍playbook变量与引用的时候我们先来了解下Ansible的变量来源。注:笔者的实验环境如下: 192.168.116.128 ansiblecontrol 部署ansible的server...
  • minxihou
  • minxihou
  • 2016年12月15日 11:35
  • 3024

向yml文件传递参数,ansible-playbook命令

用命令行传递参数定义命令行变量在release.yml文件里,hosts和user都定义为变量,需要从命令行传递变量值。 hosts: ‘{{ hosts }}’ remote_user: ‘{{ ...
  • angle_sun
  • angle_sun
  • 2016年10月03日 14:58
  • 8355

ansible使用

关闭selinux ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa ssh-copy-id -i id_dsa.pub root@node3 一、Hos...
  • B624023251
  • B624023251
  • 2016年06月02日 20:44
  • 7305

ansible register 之用法

ansible register 这个功能非常有用。当我们需要判断对执行了某个操作或者某个命令后,如何做相应的响应处理(执行其他 ansible 语句),则一般会用到register 。举个例子:我们...
  • qianggezhishen
  • qianggezhishen
  • 2016年12月30日 09:13
  • 4825

第一百一十天 : ansible-playbook 使用详解

PlayBook:核心元素:Tasks:任务,由模块定义的操作的列表; Variables:变量 Templates:模板,即使用了模板语法的文本文件; Handlers:由特定条件触发的Tas...
  • nextkara
  • nextkara
  • 2017年06月05日 00:25
  • 2713

ansible官方文档翻译之变量

ansible官方文档翻译之变量,主要是将官方文档进行翻译,后续会给出相关的练习...
  • kellyseeme
  • kellyseeme
  • 2016年01月26日 04:13
  • 6203

ansible

ansible是一款由python研发的自动化运维的工具,安装使用简单,现已经被红帽收购 配置epel源 [root@localhost yum.repos.d]# vim  epel.repo [e...
  • dengyuelin
  • dengyuelin
  • 2016年01月30日 17:22
  • 1172

ansible小结(三)Inventory与Patterns

Ansible的Inventory文件,可以理解为saltstack中的salt-key中的所有minion的列表以及用户自定义的nodegroup的概念,默认情况下这个文件是/etc/ansible...
  • weiguang1017
  • weiguang1017
  • 2016年11月01日 18:51
  • 1990

ansible playbook API得到任务执行返回结果

通过代码说明ansible2.x playbook api与ansible 1.9.x的区别,并通过调用callback返回模块执行结果...
  • dgfj8x57
  • dgfj8x57
  • 2017年03月10日 15:21
  • 1942

ansible playbook最佳实践

ansible playbook最佳实践
  • kellyseeme
  • kellyseeme
  • 2016年01月24日 16:45
  • 12712
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:实例学习ansible系列(14)playbook变量使用
举报原因:
原因补充:

(最多只允许输入30个字)