day 38 综合架构批量管理 ansible(自动化管理软件)
课程介绍
1. 批量管理服务配置
a 主机清单配置部分
b 掌握模块功能应用
copy(推送) , fetch(拉取) , file(管理数据信息/修改属性 或者 创建/删除数据) ,user(创建用户) , group(创建用户) ,yum(下载安装软件) ,service(管理服务运行状态) ,cron(定时任务模块)
特殊需求:
archive unarchive(压缩/解压缩) ,setup(收集信息模块) , debug(指定输出相应信息) , tmplate(模板模块) , mysql(数据库???) lineinfile(类似sed命令 修改替换文件内容)
c 掌握剧本功能副本
课程回顾
1. 远程管理服务配置文件
/etc/ssh/sshd_conf 服务端
/etc/ssh/ssg_conf 客户端
2. 原创管理服务防范入侵
a 尽量使用秘钥登录
b 尽量减少架构中外网地址
c 有外网地址的服务器,进行监听
d 防火墙硬件做安全访问 控制
e 监控重要文件是否被修改
f 对重要文件信息上锁
3. 批量管理服务 ansible
a 概念:同时并行管理多台数据
b 作用:实现批量部署服务
实现批量分发数据
实现批量收集主机信息
实现批量自动化管理应用
c 特点:部署安装简单方便
客户端不需要部署
软件不需要启动服务
功能强大
4. ansible部署
管理端: yum install -y ansible
被管理端: 确认防火墙和selinux是否关闭
5. ansible主机清单配置 /etc/ansible/hosts
方法一:直接将ip地址写入
方法二:分组进行配置
方法三:设置ansible内置变量
方法四:嵌入式配置主机清单
方法五:利用匹配符号
第四个模块, copy 文件模块 可以讲管理端数据进行批量分发/也可以移动或调整被管理端数据
重要模块参数:
src : ---指定管理端要分发的数据路径信息
dest : ---指定数据传输到被管理端什么目录中
mode : ---数据传输完毕后,设置数据权限信息
owner : ---数据传输完毕后,设置数据属主信息
group : ---数据传输完毕后,设置数据属组信息
backup : ---是否开启文件备份==.bak
remote_src : ---指定源的路径信息,从被管理端进行读取
content : ---可以直接不在管理端创建文件,对文件进行分发,并且可以编辑文件简单内容
validate : 检查文件信息的语法错误以及其他错误
模块参数用法一:
- ansible 分组 -m copy -a "src=/oldboy/oldboy.txt dest=/oldboy/ mode=600 owner=属组 group=属主"
说明: 对目录进行分发
1. 修改文件权限信息 和 文件属主属组信息
2. 可以在被管理端穿件指定目录信息 - ansible 分组 -m copy -a "src=/oldboy/ dast=/oldboy/"
说明: 对目录进行分发
src指定目录后面有斜线: 传输目录下面的内容
src指定目录后面没有斜线: 传输整个目录
模块参数用法二:备份数据/还原数据\
传输备份文件数据方法一:
ansible 分组 -m copy -a "src=/oldboy/oldboy.txt dets=/oldboy/ backup=yes"
传输备份文件数据方法二:
ansible oldboy -m copy -a "src=/oldboy/oldboy.txt dest=/oldboy/oldboy.txt.bak remote_src=yes"
还原数据
ansible oldboy -m copy -a "src=/oldboy/oldboy.txt.bak dest=/oldboy/oldboy.txt remote_src=yes"
=================================================================
参数说明
ansible oldboy -m copy -a "src=/oldboy/oldboy.txt dest=/opt/ remote_src=yes"
== 相应被管理端 mv /oldboy/oldboy.txt /opt/
ansible oldboy -m copy -a "src=/oldboy/oldboy.txt dest=/opt/"
== 相应管理端 scp -rp /oldboy/oldboy.txt xx.xx.xx.xx:/opt/
================================================================
第五个模块fstch 文件模块 进行数据拉取操作
重要参数:
src : ---指定远程主机需要拉取数据信息
dest : ---将数据保存到本地管理主机的什么路径中
拉取数据方法:
ansible oldboy -m fetch -a "src=/opt/password.txt dest=/oldboy"
拉取后的数据是根据源端路径信息保存
第六个模块: file 文件类型 直接修改数据属性/创建或删除数据信息
重要参数:
path : 指定要操作的远程主机数据路径信息
mode : 修改文件权限信息
owner : 修改文件属主信息
group : 修改文件属组信息
state: 状态参数信息:创建目录(directory)/文件(touch)/软链接(link)/硬链接(hard)/还可以删除文件(absent)/查看普通文件是否存在(file)
recurse : 递归修改目录权限
用法一: 修改文件属主/组信息
ansible 主机 -m file -a "path=对端文件 mode=666 owner=属主 group=属组"
修改目录权限属性信息:
ansible 主机 -m file -a "path=/对端目录/ mode=666 owner=属主 group=属组" 递归修改目录权限 recurse=yes
用法二: 添加或删除数据信息
创建目录:
ansible 主机 -m file -a "path=/oldboy/可多级目录 state=directory"
创建文件:
ansible 主机 -m file -a "path=/oldboy/oldboy.txt state=touch"
创建软链接:
ansible 主机 -m file -a "src=/oldboy/oldboy.txt path=源目录 state=link"
创建硬链接:
ansible 主机 -m file -a "src=/oldboy/oldboy.txt path=源目录 state=hard"
删除文件:
ansible 主机 -m file -a "path=/oldboy/oldboy.txt state=absent"
删除目录:
ansible 主机 -m file -a "path=/oldboy/oldboy/ state=absent"
查看普通文件是否存在:
ansible 主机 -m file -a "path=路径文件 state=file"
第七个模块: user 用户模块 创建或删除用户信息
name : 指定创建用户名称
create_home : 创建用户是否有家目录
shell : 指定用户是否能够登陆系统 虚拟用户 /sbin/nologin
uid : 指定用户uid数值
password : 指定用户密码信息 如何使用密文信息设置密码
state : 默认present表示创建用户 使用absent删除用户信息
group : 指定用户属于哪个用户组(主要组)==useradd -g
groups : 指定用户属于哪个用户组(附属组)==useradd -G
remove=yes : 将用户家目录删除
用法一: 创建用户用户
ansible 主机 -m user -a "name=rsync uid=2000 create_home=no shell=/sbin/nologin"(虚拟)
ansible 主机 -m user -a "name=oldboy uid=2001"(普通用户)
用法二: 设置用户密码信息
ansible 主机 -m user -a "name=oldboy password="
PS:利用user,模块如何创建密文密码信息 双引号换成单引号以防解析密文中变量符号
PS:更新pip python软件包源方式
用法三: 删除用户信息
ansible 主机 -m user -a 'name=oldboy state=absent'
删除用户家目录 remove=yes
第八个模块 : group 用户模块 创建或删除用户组信息
重要参数:
name : 指定创建用户组名称信息
gid : 指定创建用户组id编号信息
state : 默认present指定absent表示删除用户组
用法一: 创建指定用户组信息
ansible 主机 -m group -a "name=oldboy gid=3000"
用法二: 删除指定用户组
ansible 主机 -m group -a "name=oldboy state=absent"
第九个模块: yum 安装软件模块 安装软件/卸载软件
name : 指定安装什么软件
state : 指定状态信息安装软件(installed , latest , present) 卸载软件(absent , removed)
用法一: 安装软件
ansible 主机 -m yum -a "name=telnet-server state=installed"
用法二: 卸载软件程序
ansible 主机 -m yum -a "name=telnet-server state=absent"
第十个模块: service 系统模块 控制服务运行状态
重要参数:
name : 指定要管理的服务名称
state : 指定服务运行状态 停止(stopped) 启动(started) 重启(restarted) 平滑重启(reloaded)
enabled : 指定服务是否开机自启
用法一: 启动服务等等
ansible 分组 -m server -a "name=rsyncd state=started"
用法二: 设置服务开机自启或关闭(no)
ansible 分组 -m server -a "name=rsyncd enabled=yes
第十一个模块: cron 系统模块 批量设置定时任务
重要参数 ==(crontab -e)
name : 定义定时任务的注释信息,避免出现重复的定时任务
minute : 指定时间信息中 分钟 信息(0-59 */5 0,10) ,是分隔 -是连续
hour : 指定时间信息中 小时 信息(0-23 *)
day : 指定时间信息中 日期 信息(1-31)
mouth : 指定时间信息中 月份 信息(1-12)
weekday : 指定时间信息中 星期 信息(0-6)
job : 指定定时任务命令信息
disabled : 注释任务信息(yes) 取消注释(no)
用法一: 设置定时任务
ansible 主机 -m cron -a "name=1 minute=*/5 job=ntpdate ntp1.aliyun.com"
用法二: 删除定时任务
ansible 主机 -m cron -a "name=1 state=absent
用法三: 注释定时任务
ansible 主机 -m cron -a "name=1 minute=*/5 'job=ntpdate ntp1.aliyun.com' disabled=yes"(如果不写任务时间信息的话会把时间重置)
第十二个模块: mount 系统模块 进行批量挂载
src : 挂载存储设备信息
path : 挂载点目录信息
fstype : 挂载的文件系统类型
state : 指定挂载(mounted , present)还是卸载(unmounted , absent)
挂载 : mounted:临时挂载存储目录信息 永久也挂载了存储挂载目录信息 推荐 --- present: 只是实现永久挂载
卸载: unmounted: 只是实现临时卸载 --- absent: 临时卸载 永久也卸载
挂载 : ansible 172.16.1.41 -m mount -a "src=172.16.1.31:/data path="