**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

6,学习ansible主机清单 vi /etc/ansible/hosts 在上一单元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"