欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ansible--playbook

程序员文章站 2024-01-29 17:24:10
...

ansible-playbook
1、playbook书写规则
playbook是由一个或多个play组成的列表,play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来讲,所谓的task无非是调用ansible的一个module。将多个play组织在一个playbook中,即可以让它们联合起来按事先编排的机制完成某一任务。功能相当于shell脚本

Playbook核心元素:
Hosts 执行的远程主机列表
Tasks 任务集
Varniables 内置变量或自定义变量在playbook中调用
Templates 模板,即使用模板语法的文件,比如配置文件等
Handlers 和notity结合使用,由特定条件触发的操作,满足条件方才执行,否则不执行
tags 标签,指定某条任务执行,用于选择运行playbook中的部分代码。

ansible-playbook ping.yml					#运行
ansible-playbook --syntax-check ping1.yml 	#检查语法错误
ansible-playbook --check ping1.yml			#模拟运行,如果有依赖前面结果的会报错

ansible--playbook
ansible--playbook
ansible--playbook
ansible--playbook
ansible--playbook
ansible--playbook

(1)handler作用:幂等性,若上面已经存在不需要执行则notify对应的handler内容不会执行。若handler存在多个时,顺序与handler在playbook中的定义是相同的,与notify定义内容顺序无关相同。

handler默认等所有的test内容执行完毕后在执行,

  • meta: flush_handlers #执行一个test立马handler

notify中一次性多个handler

notify: group1
listen: group1

ansible--playbook
ansible--playbook
ansible--playbook
ansible--playbook
ansible--playbook
ansible--playbook
ansible--playbook
ansible--playbook

(2)标签分类部分执行

tags: t1
tags: 
  - t1
tags: ['t1']
ansible-playbook --tags=t2 tag1.yml			#只执行t2标签内容
ansible-playbook --skip-tags=t2 tag1.yml 	#不执行t2标签其他全部执行
ansible-playbook --list-tags tag1.yml		#列出标签

ansible--playbook
ansible--playbook
ansible--playbook
ansible--playbook

内置标签

tags: t3,always/nerver(相反)					#一直执行,除非指定不执行
ansible-playbook --skip-tags=always tag1.yml	#只有这样才能不执行

ansible--playbook
还可以调用时使用tagged(只执行有标签的任务,有skip为跳过标签任务)、untagged(只执行没有标签的任务,always不算)、all(不用指定默认执行所有标签)

(3)ansible变量
一 变量的命名规范

变量的命名应该符如下合两个规范:
变量应该由字母、数字、下划线组成
变量应该以字母开头

二、变量的作用域可以分为四种:
作用于全局的变量
作用于play的变量
作用于task的变量
作用于host的变量

1 playbook中的变量

vars语句定义全局变量

vars:						#定义
  testvar1: testfile
vars:						#定义
  - testvar1: testfile

file: path=/testdir/{{testvar1}}		#调用

ansible--playbook

vars:						#定义
    mkdir:                                   
      testvar1: testfile2
      testvar2: testfile2
file: path=/testdir/{{mkdir.testvar1}}		#调用
file: path=/testdir/{{mkdir['testvar1']}}	#调用

ansible--playbook

vars_files
在playbook中引入包含变量的文件时,需要使用”vars_files“关键字,被引入的文件需要以”-“开头,

vars_files:
- /testdir/ansible/nginx_vars.yml

2、setup模块
TASK [Gathering Facts]
默认调用setup模块应用获取远程主机信息首先执行,会将结果保存在变量中

ansible testB -m setup					#返回远程主机信息
ansible testB -m setup -a "filter=*mb*"	#只返回指定信息

自定义信息(被管主机):

[aaa@qq.com facts.d]# pwd
/etc/ansible/facts.d			#自定义信息必须目录
调用:
ansible testB -m setup -a "filter=ansible_local"	#最好放到默认目录下
ansible testB -m setup -a "fact_path=/testdir"

ansible--playbook
3、debug模块



相关标签: 运维实战 运维

推荐阅读