Ansible学习笔记,一文从入门讲到roles的编写

Ansible学习笔记

长文警告

这篇文章是我最近看了马哥的讲解视频总结的,觉得讲的很好。如果想快速学习Ansible,从入门到最终roles的编写这篇文章应该会对你有所帮助。如果想看原视频也可以评论或私信我

目录:

  • 一。基础入门
  • 二。Ansible命令
  • 三。Ansible常用模块
  • 四。Ansible系列命令
  • 五。Playbook
  • 六。变量的使用
  • 七。模板
  • 八。roles
  • 九。应用上面知识写一个综合性的小项目

一。基础入门

Ansible 配置自动化产品,无主无从架构,只需要一个控制节点,不需要代理程序,通过ssh
在这里插入图片描述

1.Ansible的安装
在这里插入图片描述
2.主机清单,就是这个hosts文件

在这里插入图片描述
把主机加入主机清单的方法:
在这里插入图片描述
主机清单中分组添加样例:
在这里插入图片描述

也可以使用域名或 非标准端口号
在这里插入图片描述
在这里插入图片描述

二。Ansible命令:

ansible-doc ping 查看ping模块的帮助
ansible-doc -l 列出所有命令模块
在这里插入图片描述
说明,我们使用ansible命令时,本质用的ssh,所以需要输入对方账号密码,每次都输太麻烦,所以要配置免密登录

配置免密登录:
1.ssh-keygen在客户机产生自己的公钥私钥(这里因为是控制节点要ssh登录node节点,所以node是ssh服务端)

在这里插入图片描述
2.ssh-copy-id ip 把公钥发送给ssh服务器端,需要输入其密码
在这里插入图片描述
3.免密登录成功
在这里插入图片描述

查看分组中的主机
在这里插入图片描述
一些语法

在这里插入图片描述
ansible运行原理,命令执行过程:
在这里插入图片描述

三。Ansible常用模块

总结了12个,可以点下方链接查看
https://blog.csdn.net/keith6785753/article/details/107898260

四。Ansible系列命令

1.ansible-galaxy
在这里插入图片描述
在这里插入图片描述

从官网下载安装角色:
在这里插入图片描述

2.ansible-playbook
自己写的剧本文件用.yml结尾(因为用的yaml语言)
看一个简单的palybook 第一行—是 剧本的习惯开头
在这里插入图片描述

使用ansible-playbook 剧本文件名 执行:
在这里插入图片描述

3.ansible-vault加密剧本文件
加密之后,内容密文且不能执行
在这里插入图片描述
解密:
在这里插入图片描述

其他用法:
ansible-vault view 输入口令查看加密剧本文件
ansible-vault edit 输入口令编辑加密剧本文件
ansible-vault rekey 修改口令
4.ansible-console
输入后进入交互式操作(用的不多)
all (3) 共有3台主机 [f:5]支持并发5台
在这里插入图片描述
也可以调用模块 进行操作:

在这里插入图片描述

五。Playbook

上面的单条命令也称为ad-hoc,复杂的功能的实现需要playbooks
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

示例: hosts:websrvs 就是一个键值对

在这里插入图片描述
在这里插入图片描述

可以使用ansible -C 检查一下剧本文件语法错误 -C check
在这里插入图片描述

希望如果命令执行失败仍然继续往下执行的两种方法:
在这里插入图片描述

限定只在分组中的某个主机执行: --limit
在这里插入图片描述

–list查看playbook对应的主机或任务或标签
在这里插入图片描述

在这里插入图片描述

一个playbook文件例子: 一定要注意缩进
在这里插入图片描述
解释如下:
在这里插入图片描述

handlers与notify实现触发器
在这里插入图片描述

这里的情况是 希望httpd的配置改变了会自动重启服务,因此创建了一个handlers触发器,在对应的操作后面(copy是修改配置文件的操作)加上notify:触发器的名字
在这里插入图片描述

也可以触发多个触发器
在这里插入图片描述

tags:加标签
可以实现只执行对应标签的动作 -t 标签名 多个标签 逗号隔开
在这里插入图片描述

在这里插入图片描述

六。变量的使用

ansible all -m setup 这个模块可以查看系统自带的变量
在这里插入图片描述
在这里插入图片描述

变量的使用:
在这里插入图片描述

在playbook脚本文件中直接定义变量:
在这里插入图片描述

在主机清单中定义变量 (优先级低于命令指定变量值):
在这里插入图片描述

也可以针对一组主机定义一个变量分组 (优先级低于上面针对单个主机的变量)
在这里插入图片描述

脚本文件使用{{}}调用变量:
在这里插入图片描述

还可以写一个文件专门放变量:
在这里插入图片描述

调用方法:
在这里插入图片描述

变量优先级总结:-e命令行指定 > palybook文件中指定 > 主机清单中单个 > 主机清单中分组

七.模板templates:

在这里插入图片描述

模板目录建议与 yml文件同级,然后在这个目录中创建模板文件
在这里插入图片描述

template模板只能用于playbook 不能用于单条命令
使用示例: 如果模板文件就是在templates目录下,可以直接省略路径
在这里插入图片描述

模板文件内容:可以使用变量设置
在这里插入图片描述

在这里插入图片描述

when的使用:这里是针对centos6,centos7各使用不同模板
使用的是系统自带的参数
在这里插入图片描述

循环的使用:比如要创建多个文件或装多个包 自己定义一个列表with_items 使用item调用列表中元素 with_items下的每一行就是一个item
在这里插入图片描述

然后如果我们想创建3个用户并且把他们分别加入3个组呢:
使用迭代嵌套子变量 :与上面类似 就是需要定义一个字典
在这里插入图片描述

for循环的使用:
首先在playbook中定义变量
在这里插入图片描述

然后需要在模板文件中使用for循环,调用变量,注意语法格式(jinja2)
在这里插入图片描述

执行效果图:
在这里插入图片描述

还可以这样定义变量
在这里插入图片描述

对应调用方法:
在这里插入图片描述
if条件判断的使用:
在这里插入图片描述

八。角色role:

模块化思想,把playbook中的东西(文件,变量,任务,模板等)拆分开,分门别类的存放,使用时在playbook中调用即可。适用大型环境
这些目录,文件建议放在roles目录中,playbook文件与roles目录平级

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

任务中需要一个main总任务,定义任务执行顺序
在这里插入图片描述

最终palybook文件的编写,直接调用roles即可 nginx是roles下一个角色文件夹
在这里插入图片描述

同时应用多个角色
在这里插入图片描述

在一个角色中调用其他角色的任务,写清路径即可
在这里插入图片描述

可以给角色加标签
在这里插入图片描述

执行的时候可以根据标签选择执行 使用-t 标签名
在这里插入图片描述

when等语句同样可用
在这里插入图片描述

九。在最后,使用前面的知识写一个综合性的角色

最终文件结构如下,因为篇幅太长了,具体过程看下方链接
https://blog.csdn.net/keith6785753/article/details/107898385
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值