1,什么是Ansible
Ansible 是 python 中的一套模块,系统中的一套自动化工具,只需要使用 ssh 协议连接及可用来系统管理、自动化执行命令等任务。

2,为什么要用Ansible

  1. 可以实现批量系统操作配置
  2. 可以实现批量软件服务部署
  3. 可以实现批量文件数据分发
  4. 可以实现批量系统信息收集

3,使用Ansible的意义

  1. 提高工作的效率(部署综合架构)
  2. 提高工作准确度
  3. 减少维护的成本
  4. 减少重复性工作

4,安装部署

  1. 没有配置文件(不需要配置)
  2. 不需要启动服务
  3. 客户端没有需要部署任务

5,安装Ansible
yum -y install ansible
17,Ansible自动化管理工具服务

6,学习ansible主机清单
vi /etc/ansible/hosts
17,Ansible自动化管理工具服务_第1张图片
在上一单元SSH优化部分我们已经改变了端口,采用密钥登录,所以这里这样写反之,正常写
7,学习Ansible模块调用
首先就是要先打通ssh远程功能,ansible是建立在ssh通讯上实现的批量管理
1)ping模块
ansible 主机组名 -m 模块名
ansible nfs -m ping 调用ping模块

2)约等于万能模块shell (忘记这个命令吧,ansible支持2843个模块,每个命令都有自己的专门模块,不要都用shell来代替)
ansible nfs -m shell -a "各种命令"

8,yaml语法,这类语法调用模块更加细致,有更多的参数,有个一很大的有点就是不会重复执行,比如你在管理端对100台客户机执行脚本
中间报错了,可以直接再次执行而不报错 (ansible剧本)
特点:1)以缩进代表不同层级之间的关系
2)对索引有严格要求
1)file模块(每个模块的具体参数都在官方文档里有要自己会读https://docs.ansible.com/ansible/latest/modules)
ansible nfs -m file -a "path=/tmp/oldboy state=directory mode=644 owner=oldboy group=oldboy"

2)copy模块
ansible nfs -m copy -a "src=/etc/ssh/sshd_config dest=/tmp/ mode='644'"

3)script脚本模块
ansible nfs -m script -a "/server/scripts/xx.sh"

4)user用户模块(创建www用户和组uid和gid等于666,描述为oldboy,没有家目录,/sbin/nologin)
ansible nfs -m group -a "name=www gid=666"
ansible nfs -m user -a "name=www uid=666 comment=oldboy shell=/sbin/nologin create home=no"

5)cron模块
ansible nfs -m cron -a 'name="ntpdate" minute="*/5" job="ntpdate time1.aliyun.com"'

6)yum模块
ansible nfs -m yum -a "name=ntpdate state=lastest"

例1:搭建NFS服务
NFS服务端:

#!/bin/bash                                             

ansible nfs -m group -a "name=www gid=666 state=present"                        
ansible nfs -m user -a "name=www uid=666 group=666 shell=/sbin/nologin create_home=no"
ansible nfs -m yum -a "name=nfs-utils"                              
ansible nfs -m file -a "path=/data state=directory"                                         
ansible nfs -m copy -a "src=exports dest=/etc/exports backup=yes"   
ansible nfs -m service -a "name=rpcbind state=started enabled=yes"                          
ansible nfs -m service -a "name=nfs state=started enabled=yes"              
ansible nfs -m shell -a "showmount -e"                              

NFS客户端:

#!/bin/bash                                             

ansible nfs_client -m group -a "name=www gid=666 state=present"                                             
ansible nfs_client -m user -a "name=www uid=666 group=666 shell=/sbin/nologin create_home=no"   
ansible nfs_client -m yum -a "name=nfs-utils"       
ansible nfs_client -m file -a "path=/data state=directory"  
ansible nfs_client -m service -a "name=rpcbind state=started enabled=yes"   
ansible nfs_client -m shell -a "showmount -e 172.16.1.31"       
ansible nfs_client -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults state=mounted"