批量管理


批量管理

安装部署软件

yum install -y ansible
vim /etc/ansible/hosts #编写主机清单目录
ansible all -m shell -a "hostname" #测试是否可以管理主机

命令格式:ansible 主机名称/主机组名称/主机地址信息/all -m(指定应用的模块信息) 模块名称 -a(指定动作信息) “执行什么动作”

常用模块:

shell模块

参数 选项/默认值 释义
chdir   在执行命令前,进入到指定目录中
creates   判断指定文件是否存在,如果存在,不执行后面的操作
removes   判断指定文件是否存在,如果存在,执行后面的操作
free_form   必须要输入一个合理的命令

文件模块:

copy模块

参数 选项/默认值 释义
src   指定将本地管理主机的什么数据信息进行远程复制
backup no* yes 默认数据复制到远程主机,会覆盖原有文件(yes 将源文件进行备份)
content   在文件中添加信息
dest(required)   将数据复制到远程节点的路径信息
group   文件数据复制到远程主机,设置文件属组用户信息
mode   文件数据复制到远程主机,设置数据的权限 eg 0644 0755
owner   文件数据复制到远程主机,设置文件属主用户信息
remote_src no* yes 如果设置为yes,表示将远程主机上的数据进行移动操作如果设置为no, 表示将管理主机上的
ansible web01 -m copy -a "src=./cuoni.txt  dest=/data backup=yes group=www owner=www mode=0777"  #复制cuoni文件到 /data目录中,设置属主属组为www,权限设置为777

fetch模块

参数 选项/默认值 释义
src(required)   要获取的远程系统上的文件,必须是文件,而不是目录
dest   用于保存文件的目录
ansible web01 -m fetch -a "src=/root/cuoni.txt dest=/root" #拉取远程主机上的文件放入/root文件夹中

安装模块

yum

参数 选项/默认值 释义
name(required)   指定软件名称信息
state absent/removed 将软件进行卸载(慎用)
= present/installed 将软件进行安装
latest   安装最新的软件 yum update
ansible web01 -m yum -a "name=httpd-tools state=installed" #安装
ansible web01 -m yum -a "name=httpd-tools state=removed" #卸载

服务模块

service

参数 选项/默认值 释义
enabled no yes 设置服务是否开机自启动 如果参数不指定,原有服务开机自启动状态进行保留
name (required)   设置要启动/停止服务名称
state= reloaded 平滑重启
= restarted 重启
= started 启动
= stopped  
ansible web01 -m service -a "name=nfs state=started enable=yes" #启动nfs服务,并且设置系统开机自启动

挂载模块

mount

参数 选项/默认值 释义
fstype   指定挂载的文件系统类型
opts   指定挂载的参数信息
path   定义一个挂载点信息
src   定义设备文件信息
state absent 会进行卸载,也会修改fstab文件信息
= unmounted 会进行卸载,不会修改fstab文件
= present 不会挂载,只会修改fstab文件
= mounted 会进行挂载,会修改fstab文件

在进行挂载的时候,使用state=mounted
在进行卸载的时候,使用state=absent

ansible web01 -m mount -a "src=172.16.1.31:/data/  path=/mnt fstype=nfs state=present"  #以上信息只是在/etc/fstab文件中添加了配置信息,不会真正进行挂载(mount -a)
ansible web01 -m mount -a "src=172.16.1.31:/data/  path=/mnt fstype=nfs state=mounted"  #以上信息是在/etc/fstab文件中添加了配置信息,并且也会真正进行挂载

定时任务

cron

参数 选项/默认值 释义
minute/hour/day/month/weekday   和设置时间信息相关参数
job   和设置定时任务相关参数
name(required)   设置定时任务注释信息
state absent 删除指定定时任务
disabled yes 将指定定时任务进行注释
= no 取消注释
ansible web01 -m cron -a "name='ntpdate time' minute=*/5 job='/usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null' "  #每五分钟同步一次时间

ansible web01 -m cron -a "name='ntpdate time' state=absent" #删除定时任务

ansible web01 -m cron -a "name='ntpdate time' minute=*/5 job='/usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null' disabled=yes" #注释定时任务

用户模块

group

参数 选项/默认值 释义
gid   指创建的组ID信息
name   指创建组名称信息
state absent 删除指定的用户组
= present 创建指定的用户组
ansible web01 -m group -a "name=tong gid=1055" #创建一个指定的用户组tong gid=1055

ansible web01 -m group -a "tongn gid=1055 state=absent" #删除一个指定的用户组

user

参数 选项/默认值 释义
password   请输入密码信息
name   指定用户名信息
uid   指定用户uid信息
group   指定用户主要属于哪个组
groups   指定用户属于哪个附加组信息
shell /bin/bash或/sbin/nologin 指定是否能够登录
create_home yes/no 是否创建家目录信息
home   指定家目录创建在什么路径 默认/home

备注:password设置密码时不能使用明文方式,只能使用密文方式
可以给用户设置密码 还可以给用户修改密码

基本用法:

扩展用法:
1) 指定用户uid信息

ansible 172.16.1.31 -m user -a "name=oldboy02 uid=6666"

2) 指定用户组信息

ansible 172.16.1.31 -m user -a "name=oldboy03 group=oldboy02"
ansible 172.16.1.31 -m user -a "name=oldboy04 groups=oldboy02"

3) 批量创建虚拟用户

ansible 172.16.1.31 -m user -a "name=rsync create_home=no  shell=/sbin/nologin"

4) 给指定用户创建密码
PS: 利用ansible程序user模块设置用户密码信息,需要将密码明文信息转换为密文信息进行设置
生成密文密码信息方法:
方法一:

ansible all -i localhost, -m debug -a "msg={{ '密码信息123456' | password_hash('sha512', 'oldboy') }}"
[root@m01 tmp]# ansible all -i localhost, -m debug -a "msg={{ '123456' | password_hash('sha512', 'oldboy') }}"
localhost | SUCCESS => {
  "msg": "$6$oldboy$MVd3DevkLcimrBLdMICrBY8HF82Wtau5cI8D2w4Zs6P1cCfMTcnnyAmmJc7mQaE9zuHxk8JFTRgYMGv9uKW7j1"
}

 

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注