自动化运维—playbook(应用变量)

文章目录

  • 自动化运维---playbook(应用变量)
    • 1.定义变量
    • 2.在playbook中使用变量
    • 3.定义多个变量
    • 4.定义变量参数
    • 5.文件变量分离

1.定义变量

变量名应该由字母、数字、下划线组成,变量名需要以字母开头,ansible内的关键字不能作为变量名。

2.在playbook中使用变量

如果我们想要在某个play中定义变量,可以借助vars关键字
除了能够在playbook中直接定义变量:我们还可以在某个文件中定义变量,然后再在playbook中引入对应的文件,引入文件后,playbook即可使用文件中定义的变量

vim var1.yml
---
- hosts: testBvars:testvar1: testfileremote_user: roottasks:- name: task1file:path=/testdir/{{ testvar1 }}state=directory


执行:

ansible-playbook var1.yml



语法2(YAML块序列语法):

  vars:- testvar1: testfile

3.定义多个变量

定义多个变量:

vars:testvar1: testfile1testvar2: testfile2

除了使用上述语法,使用YAML的块序列语法也可以定义变量, 示例如下:

vars:
- testvar1: testfile1- testvar2: testfile2
vim var1.yml
---
- hosts: testBvars:- testvar1: testfile- testvar2: testfile2remote_user: roottasks:- name: task1file:path=/testdir/{{ testvar1 }}state=directory- name: task2file:path=/testdir/{{ testvar2 }}state=directory


执行:

ansible-playbook var1.yml


4.定义变量参数

当我们需要引用这两个变量时,有两种语法可用语法:

语法一
"{{httpd.conf80}}"语法二"{{nginx['conf8080']}}"

语法一应用:

vim var2.yml
---
- hosts: testBremote_user: rootvars:httpd:conf80: /etc/httpd/conf.d/80.confconf8000: /etc/httpd/conf.d/8000.conftasks:- name: task1file:path: "{{httpd.conf80}}"state: touch- name: task2file:path: "{{httpd.conf8000}}"state: touch




语法2:

---
- hosts: testBremote_user: rootvars:httpd:conf80: /etc/httpd/conf.d/80.confconf8000: /etc/httpd/conf.d/8000.conftasks:- name: task1file:path: "{{httpd['conf80']}}"state: touch- name: task2file:path: "{{httpd['conf8000']}}"state: touch


还可以使用=(不需要引号):

---
- hosts: testBremote_user: rootvars:httpd:conf80: /etc/httpd/conf.d/80.confconf8000: /etc/httpd/conf.d/8000.conftasks:- name: task1file:path={{httpd['conf80']}}state=touch- name: task2file:path={{httpd['conf8000']}}state=touch

5.文件变量分离

如果我们定义了变量,但又不想把变量的值直接写在剧本里,可以采用这种方法:将变量的值写在文件中
注意:文件名也是要以.yml结尾,而文件中的语法也要使用YAML语法

vars_ files关键字也可以引入多个变量文件,每个被引入的文件都需要以"- "开头

vars files:- /testdir/ansible/nginx_vars.yml- /testdir/ansible/other_vars.yml

vars关键字和vars_ files关键字可以同时使用,如下:

vars:
- conf90: /etc/nginx/conf.d/90.confvars_files:- /testdir/ansible/nginx_vars.yml
vim var2.yml
---
- hosts: testBremote_user: rootvars_files:- httpd_vars.ymltasks:- name: task1file:path={{httpd['conf80']}}state=touch- name: task2file:path={{httpd['conf8000']}}state=touch

vim httpd_vars.yml
httpd:conf80: /etc/httpd/conf.d/80.confconf8000: /etc/httpd/conf.d/8000.conf

ansible-playbook var2.yml


自动化运维---playbook(应用变量)相关推荐

  1. 【Ansible自动化运维工具】Ansible变量之lookup生成变量方法

    [Ansible自动化运维工具]Ansible变量之lookup生成变量方法 一.lookup插件介绍 1.lookup简介 2.lookup使用场景 3.lookup获取的数据源 4.lookup的 ...

  2. 自动化运维工具-Ansible的Playbook的使用

    Playbook的使用 前言 一.Playbook是什么? 二.playbook使用场景 三.Playbook格式说明 四.Play book变量的使用 1 在主机列表定义变量 2 在playbook ...

  3. Python+Django+Ansible Playbook自动化运维项目实战(二)

    Python+Django+Ansible Playbook自动化运维项目实战 一.资产管理,自动化发现.扫描 1.服务端资产探测.扫描发现 1)资产管理的资产: 2)抽象与约定: 2.探测协议和模块 ...

  4. Python+Django+Ansible Playbook自动化运维项目实战:资产管理

    Python+Django+Ansible Playbook自动化运维项目实战 一.资产管理,自动化发现.扫描 1.服务端资产探测.扫描发现 1)资产管理的资产: 2)抽象与约定: 2.探测协议和模块 ...

  5. 【Ansible自动化运维工具】Ansible变量之Facts变量

    [Ansible自动化运维工具]Ansible变量之Facts变量 一.Ansible facts介绍 1.facts组件简介 2.facts组件的使用场景 二.Ansible facts的基本使用 ...

  6. 自动化运维工具----ansible

    自动化运维工具----ansible ansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置.批量程序的部署.批量运行命令等功能. 主要模块以及功能 ...

  7. ansible自动化运维(一)——基本架构简介

    1.介绍 ansible是一种自动化运维工具,基于paramiko开发的,并且基于模块化工作,Ansible是一种集成IT系统的配置管理.应用部署.执行特定任务的开源平台. 它是基于python语言, ...

  8. 一些小团队的自动化运维实践经验

    作者:翟志军 来源:http://showme.codes/2018-06-07/devops-in-action/ 注:本文要求读者对Ansible和 Jenkins有一定的认识. 题记: 幸福的家 ...

  9. 基于 Bitbucket Pipeline + Amazon S3 的自动化运维体系

    1 前言介绍 随着自动化运维水平的提高,一个基础的运维人员维护成百上千台节点已经不是太难的事情,当然,这需要依靠于稳定.高效的自动化运维体系.本篇文章即是阐述如何利用 bitbucket pipeli ...

  10. 自动化运维工具Ansible详细部署

    一.基础介绍 ================================================================================= 1.简介 ansibl ...

最新文章

  1. This is A PostXing Test
  2. 字符串操作与正则表达式
  3. connect SAP Hybris Enterprise Commerce Platform to SAP Kyma
  4. assign复制对象_JavaScript标准对象:assign,values,hasOwnProperty和getOwnPropertyNames方法介绍...
  5. 实话!程序员大都不喜欢拉帮结派
  6. 写给人类的机器学习 四、神经网络和深度学习
  7. Sqlserver 中 CrossApply 和 inner join 的区别
  8. matplotlib绘图跳过时间段的处理方案
  9. git21天打卡-day8 本地分支push到远程服务器
  10. Unity3D基础35:五彩砖块
  11. JS PopupAlert
  12. GARFIELD@01-04-2005
  13. babelua for vs 2015
  14. 4:3比例 android 平板,分辨率与屏幕比例 决定你实际应用_平板电脑_平板电脑评测-中关村在线...
  15. iOS中需要避免的内存泄漏总结
  16. uiuc的计算机工程硕士学费标准,美国计算机硕士留学费用全都在这了!
  17. oracle付款汇兑损益怎么产生,月末汇兑损益怎么算调整分录如何做
  18. freemarker生成word不显示图片
  19. 《KVM虚拟化技术实战和原理解析》读书笔记(三)
  20. 基于C51单片机的DA方波可控制发生器

热门文章

  1. jena 查询 java_Jena搭建SPARQL查询RDF数据
  2. 8月第4周基金排行榜 | TokenInsight
  3. 哪个软件能代替斐讯路由_斐讯路由器最新版本|好用的路由器管理软件_最火手机站...
  4. Oracle 11.2.0.4.0 安装包校验
  5. 如何查找office安装路径
  6. 小米2/2S刷基于Android 5.1.1的CM12.1系统教程
  7. 台湾大学 李宏毅教授的个人主页
  8. 什么是OBD及组成和作用、工作原理
  9. widows终端远程连接Linux服务器
  10. 2029年会实现通用人工智能吗?Gary Marcus「叫板」马斯克:赌十万美元如何?