ansible
1.是基于python开发的运维自动化工具
2.基于模块运行,本身没有批量部署的能力,只提供批量部署的框架
3.使用ssh网络协议与受管节点通信
4.架构是无代理
简述
章2 ansible清单
1.清单概念
清单内容是:ansible管理的主机
清单有静态清单和动态清单文件
静态清单是自己写的,根据INI格式或yaml格式
动态清单是应用程序或脚本自动生成的
2.默认的清单文件 /etc/ansible/hosts 你也可以在配置文件中为清单文件自定义个位置
3.清单中定义变量
通常不在清单文件中定义变量,可以在清单中定义playbook中要使用的变量,这些变量仅仅应用在特定的主机或主机组中。
一般定义变量在特殊目录中定义
ansible配置文件
运行临时命令
章3 playbook
playbook以yaml格式编写的文本文件
章4 变量 机密 事实
变量
1.变量就是用来存储值的,这些值可以是创建的用户,要删除的软件包,或进行某种操作的服务
2.变量可以引用在特定的主机,主机组,单独的play,全局中
变量的优先级:全局范围定义的(命令行)>playbook定义的>特定主机(清单文件定义的)
3.加密变量 ansible valut
变量的作用域:
①全局范围(在命令行或配置文件写)
ansible-playbook xx.yml -e “变量名=值”
②playbook
定义在vars 或 vars_files块中
引用的时候用{{}},若引用的变量作为第一个值要带“”
③主机主机组(清单文件/特定目录下)
定义在清单文件中的变量
[server]
servera.com.xxx 变量名=值
[server:vars]
变量名=值
定义在两个特殊目录下的变量
在与清单文件同级的目录下创建两个目录分别为group_vars host_vars这两个目录。若要为主机组server定义变量,要在group_vars目录下创建server这个文件,其中的内容为--变量名:值
两种特殊用法
1.定义数组变量
普通变量定义:
lily_home:nx
lily_school:cq
lisa_home:tg
lisa_school:hg
使用数组定义变量
user:
lily:
home:nx
school:cq
lisa:
home:tg
school:hg
引用变量的方式
user.lily.home 或 user[lily][home]
注意[]里面的字段有单引号引起
2.register语句
使用register语句捕获命令输出并将输出存储在变量中
管理机密
1.使用ansible-vault可以加密或解密任何由ansible使用的结构化数据文件
2.
创建加密文件 ansible-vault create xx.yml
查看加密文件ansible-vault view xx.yml
编辑现有文件ansible-vault edit xx.yml
加密 ansible-vault encrypt xx.yml
解密 ansible-vault decrypt xx.yml
更改文件密码 ansible-vault rekey xx.yml
3.
运行playbook
ansible-playbook --vault-id @prompt xx.yml
管理事实
1.事实就是在受管主机上自动检测的变量,就是受管主机的真实数据,也可以自定义事实。比如说运行一个playbook时,他会在运行第一个任务前自动运行setup模块去收集事实。
2.在playbook中以json格式显示ansible_facts内容;
ansible事实的例子:
短主机名 ansible_facts['hostname']
完全限定域名 ansible_facts['fqdn']
3.playbook中使用事实
{{ ansible_facts.hostname }}
4.ansible事实作为变量注入
①ansible事实作为以ansible_为前缀的单个变量注入
②ansible事实作为ansible_facts变量的一部分导入
5.关闭事实收集 gather_facts:no
6.创建自定义事实
静态事实文件 INI格式或json格式
动态事实文件 生成json格式输出
默认情况下,setup模块通过加载受管主机下/etc/ansible/facts.d目录下的文件和脚本来加载自定义事实,目录下的文件和脚本都是以.fact结尾
自定义事实由setup模块存储在ansible_facts.ansible_local变量中
7.魔法变量