LINUX运维学习之综合架构篇——批量管理ansible

一、部署

Ansible官方网站:

官网地址

1、安装ansible
关闭selinux
使用yum直接安装:yum -y install ansible

2、部署ansible

有三个主要的文件需要关注:

在这里插入图片描述
ansible.cfg:ansible的配置文件
hosts文件:写入需要管理的主机的IP地址。
roles:角色目录

需提前确认管理主机已将SSH秘钥分发到被管理主机,否则无法登录被管理主机。
被管理主机不需要安装任何软件

3、测试管理主机

ansible没有守护进程,直接使用ansible命令来执行管理命令。
执行简单的测试来验证一下效果:获取所有被管理的主机的主机名
  • List item

二、架构组成

  • Inventory 主机清单

  • Module 常用模块:

  • 模块的应用语法格式:ansible [主机地址/主机名/主机组名/所有主机(all)] -m [模块名称] -a [执行动作] 参数之间要有空格

    各个模块的使用需要参考官网的详细说明文档

1.COMMAND模块:
举例:ansible 192.168.80.128 -m command -a hostname
command模块的参数:command模块参数

chdir参数示例:ansible 192.168.80.128 -m command -a “chdir=/tmp/ touch test.txt”

其他常用参数还有:creates removes

2.SHELL模块
又叫万能模块,可以执行相当于在本地shell执行的所有命令。比command模块更强大。
3.script模块
可以将本地的脚本在远程主机上执行。(不需要将脚本拷贝至远程主机)
4.copy模块
批量数据分发
ansible [xxx.xxx.xxxx.xxx] -m copy -a “src=[需要分发的数据] dest=[保持目录]”
在这里插入图片描述
还有常用参数:owner :Name of the user that should own the file/directory, as would be fed to chown. 传输时修改属主
group :Name of the group that should own the file/directory, as would be fed to chown. 传输时修改属组
mode:The permissions of the destination file or directory. 修改权限
backup:在传输之前把文件做备份。=YES/NO

5.File模块
修改文件属性信息。
ansible [xxx.xxx.xxxx.xxx] -m file -a “dest=[目标文件/目录/链接] owner= group= mod=”

6.yum模块
ansible [xxx.xxx.xxxx.xxx] -m yum -a “name=wget state=installed”
installed:安装软件
absent:卸载软件

7.service模块
管理服务的运行:启动、停止、重启
ansible [xxx.xxx.xxxx.xxx] -m yum -a “name=sshd state=started enabled=yes”
name=服务名
state= started restarted stopped
enbled=是否开机自启

8.cron模块
批量设置定时任务
minute
hour
day
month
weekday
ansible [xxx.xxx.xxxx.xxx] -m cron -a “name=‘任务注释信息’ minute=0 hour=2 job=‘XXXX’”
每天2点执行
day/month/weekday不写则默认表示*。
job表示要执行的任务,用单引号包围。可选择性添加name注释
删除指定定时任务:
ansible [xxx.xxx.xxxx.xxx] -m cron -a “name=‘任务注释信息’ state=absent”
ansible只能删除ansible自己设置的任务,手动创建的任务无法删除。

9.mount模块
在这里插入图片描述
例子:
在这里插入图片描述
使用present参数:不会立即进行挂载,而是修改了/etc/fstab文件,开机才能挂载。
在这里插入图片描述
使用mounted参数:立即进行挂载,且修改/etc/fstab文件,开机自动挂载。
使用absent参数: 立即卸载,并删除/etc/fstab文件自动挂载
使用umounted参数: 立即卸载,但是不删除/etc/fstab文件自动挂载

更多模块使用方法可参考官网文档或者使用:
ansible-doc l 查看模块使用简介
ansible-doc -s shell 查看模块使用详细说明

10.user模块
批量管理用户
在这里插入图片描述
在这里插入图片描述
如果是创建用户密码,则需要通过密码生成密文,其中一种方法如下:msg后面的就是密文
在这里插入图片描述
再执行设置密码命令:
在这里插入图片描述
密文用单引号包围,否则会发生正则解析错误。

- Playbooks 剧本
编写规范:pyyaml

1.合理的缩进。且不能用Tab键缩进,用空格缩进。
2.冒号的用法。
hosts:
tasks:
冒号后面要有一个空格,但以冒号结尾或冒号出现在注释中时,可以不加空格。
3.短横线的用法。
短横线构成列表信息,后面需要有一个空格。

首先创建一个目录存放剧本文件,便于管理:/etc/ansible/ansible-playbook,剧本的扩展名为:yaml
例如编写剧本rsync_server.yaml
编写格式:
在这里插入图片描述
-name是注释信息

编写完成后,检查语法格式,看是否有报错:
在这里插入图片描述
再执行一下“彩排”:-C参数不会正真修改远程主机。
在这里插入图片描述
如果没问题,再正真执行剧本:
在这里插入图片描述
以部署rsync服务服务端为例:
编写剧本:
在这里插入图片描述
在这里插入图片描述
如何配置主机清单:/etc/ansible/hosts
1、分组配置:vi /etc/ansible/hosts 执行时可用组名替代IP地址
在这里插入图片描述
2、使用匹配方式:使用主机名时需要有域名解析
在这里插入图片描述
或者这样不需要主机名解析也可以。
在这里插入图片描述
3、跟上端口号:如果被管理机远程端口变成25000,则可以在配置中修改。
在这里插入图片描述
4、跟上变量:这种方式可以不需要配置分发公钥就可连接远程主机。
在这里插入图片描述
5、IP地址前加上主机名:命令输出信息便于查看
在这里插入图片描述
6、组合并:合并后的组名需要加上一个特定字段children
在这里插入图片描述
7、变量引用:
在这里插入图片描述
剧本中可以使用主机清单的组对相同操作进行合并。

更多详细配置参考官网

剧本的扩展应用:
1.变量:可以在剧本中直接定义或者在命令行指定变量的值。
在这里插入图片描述
2、注册信息:例如如何验证服务端口是否启动
在这里插入图片描述
3、条件判断:
由于远程主机可能系统版本、架构、主机名等等各不相同,在执行命令时需要根据具体信息具体执行。这是就需要根据远程主机的信息进行判断,用setup模块可获取主机信息:
在这里插入图片描述
常用参数有很多,不一一举例:
在这里插入图片描述
以ansible_hostname为例:在条件中判断主机名为web01时,执行安装rsync操作:
在这里插入图片描述
4、触发信息:
在这里插入图片描述
5、剧本整合:
在这里插入图片描述
6、角色的功能
作用:让剧本编写更加规范。
在/etc/ansible/roles目录下创建角色目录,例如/etc/ansible/roles/rsync/,再在这个角色目录下创建几个固定的子目录:
在这里插入图片描述
files:保存需要分发的文件;
handles:保存触发器配置文件;
tasks:保存要执行的动作文件
templates:保存需要分发的模板文件;
vars:保存变量配置文件

如何使用:
1、先写tasks文件:在这里插入图片描述
该文件的内容即rsync_serive.yaml中tasks部分:注意缩进
在这里插入图片描述
2.编写变量配置文件:也是固定的文件名
在这里插入图片描述
文件内容就是变量定义,有多少变量写多少变量
在这里插入图片描述
3.将需要分发的配置文件保存在file目录中
那么tasks中的main.yaml文件就可修改一下:
在这里插入图片描述
4.编写目录handlers中的文件:
还是有个固定名称的文件:main.yaml
直接将红色部分复制到main.yaml文件中(service:前面多了个-,去掉)
在这里插入图片描述
5.在roles目录下创建一个剧本文件:rsync.yaml 名称可自定义
内容很简单:
在这里插入图片描述
再执行roles目录下的这个剧本:ansible-playbook rsync.yaml

template目录作用:(可选)
可以将配置文件用包含变量的方式写成模板,将变量写在vars目录里,在tasks中调用配置文件时使用template模块去推送配置文件。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值