批量管理工具:
Ansible(无客户端):无客户端,基于ssh进行管理与维护
Saltstack (python写的) : 需要安装客户端,基于ssh进行管理,与ansible
terraform (公有云-管理系统,比如创建100台阿里服务器/多少个磁盘,多少个系统) :批量管理基础设施(tf批量创建有100台公有云)github去下载软件

yum install -y ansible
修改配置文件关闭主机Host_key_checking .
修改配置文件开启日志功能
.[root@m01 ~]# egrep -vn '^$|#'
/etc/ansible/ansible.cfg
10:[defaults]
71:host_key_checking = False
111:log_path = /var/log/ansible.log
327:[inventory]340:[privilege_escalation]
346:[paramiko_connection]370:[ssh_connection]
431:[persistent_connection]
445:[accelerate]
460:[selinux]
469:[colors]
485:[diff]
ansible模块概述:ansible中模块类似于linux中的命令,我们通过Linux命令管理系统,通过ansible模块实现批量管理
ansible中模块一般相当于Linux中一些命令,yum模块,file模块,user模块
ansible中的模块拥有不同的选项这些选项一般是一些单词,拥有自己记得格式与要求
命令和脚本模块
command模块 ansible默认的模块 执行简单的命令,不支持特殊符号
shell模块 执行命令 支持特殊符号
script模块 分发脚本并执行
文件
服务
软件包
系统管理
用户管理
ansible-doc -l 查看
[root@m01 ~]#ansible-doc -l |wc -l
3387
command模块
执行hostname命令
ansible
[root@m01 ~]#vim /etc/ansible/hosts

主机清单必会格式:
主机清单格式:[分类或分组的名字] #注意分类要体现出服务器的作用
ip地址或主机名或域名 #注意主机名要能解析才行
案例:对主机分组并进行连接测试
[root@m01 ~]# cat/etc/ansible/hosts
[web]
172.16.1.7
[backup]
172.16.1.41
[nfs]
172.16.1.31
[root@m01 ~]# ansible all -m ping172.16.1.31 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python":"/usr/bin/python"},
changed": false,
"ping": "pong"
}
172.16.1.41 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python":
"
/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
172.16.1.7 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python":
"
/usr/bin/python"
},
"changed": false,
"ping": "pong"
}




[root@m01 ~]#ansible all -m shell -a ‘rm -fr /tmp/*’
shell模块虽然和modle模块相似,但是shell支持特殊命令

ll /tmp/可以进行查看
[root@m01 ~]#ip a s ens33
[root@m01 ~]#ip a s ens33 |awk -F’[/ ]+’ ‘NR==5{print $3}’

测试:
[root@m01 ~]#ansible all -m shell -a "ip a s ens33 |awk -F'[/ ]+' 'NR==5{print \$3}'"

shell模块不推荐使用执行较为复杂的指令,如果需要执行放到脚本中进行执行
避免因为特殊符号与引号进行导致问题
script模块
在m01管理机上进行编写脚本:


进行检查
[root@m01 ~]#ansible all -m script -a’/server/scripts/xunjian.sh’

查看python及ansible进程号

这里查看进程,只看到了ansible控制进程,这是因为ansible在这里进行了串行
(除非使用并行功能),并且通过ssh连接到远程主机进行执行命令
若为串行,需要登录到各个分别的服务器登录查看ansible相关进程信息
若ansible剧本包含其任务,不仅为script模块,它们的进程也有可能在后台进行运行,不会直接显示在ansible的控制进程中

ansible会等待一个主机上的脚本执行完毕后再开始下一个主机的脚本执行(但是并不意味着ansible)并不意味着ansible控制进程本身上脚本执行创建单独的进程可以使用
ansible all -m script -a '/server/scripts/xunjian.sh' --forks 10
forks进行会同时最多连接10个本地进程,它会创建足够多多进程管理进行连接
在管理机m01上进行ll /root/.ansble/tmp/
查看为0
在进行运行脚本,查询会看到相关的信息,然后可以cat进行查询巡检脚本内容
file模块
path 路径(目录文件会写)
src 源文件一般用于link(创建软链接模式,并且指定源文件)
state:状态(模式)具体要做什么,删除/创建/操作文件,目录;state=directory床啊金目录,state=file(默认)state=linl创建软链接;state touch创建文件
state=absent删除(如果是目录递归删除目录)
mode=755创建并修改权限
owner=root
group=root
创建文件
ansible all -m file -a 'path=/wulin/a/b/c/d/ state=directory'


创建软链接
[root@m01 ~]#ansible all -m file -a 'path=/opt/hosts src=/etc/hosts state=link'

创建/ans-backup/目录结果是wulin
[root@m01 ~]#ansible all -m file -a 'path=/ans-backup mode=700 group=root owner=wulin state=directory'


删除文件或目录
[root@m01 ~]#ansible all -a 'ls-l /wulin/'

copy模块
src source源文件,管理端的某一个文件
dest destination 目标被管理者端的目录/文件
backup backup=yes 会在覆盖前进行备份
mode修改权限
owner修改为指定所有者
group修改为指定用户组
[root@m01 ~]#ansible all -m copy -a ‘src=/etc/hosts dest=/etc/hosts backup=yes’
[root@m01 ~]#ansible all -m yum -a 'name=tree,lrzsz update_cache=yes state=present'

[root@m01 ~]#ansible all -m get_url -a 'url="https://mirrors.aliyun.com/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-agent-6.0.13-release1.el7.x86_64.rpm" dest=/tmp/'


[root@m01 ~]#ansible all -m get_url -a 'url="https://tengine.taobao.org/download/tengine-2.3.3.tar.gz" dest=/app/tools/'

[root@m01 ~]#wget [root@m01 ~]#ansible all -m get_url -a ‘url=“https://tengine.taobao.org/download/tengine-2.3.3.tar.gz” dest=/app/tools/’
[root@m01 ~]#cat /etc/resolv.conf
Generated by NetworkManager
search localdomain
nameserver 192.168.28.2
ping192.168.28.2(测试是否拿到淘宝nameserver地址)

给web服务器配置yum源
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[root@m01 ~]#ansible web -m yum_repository -a 'name=ngx description="nginx repo" baseurl="http://nginx.org/packages/centos/$releasever/$basearch/" gpgcheck=no enabled=yes'




批量创建用户
[root@m01 ~]#ansible all -m user -a 'name=www-ans uid=2000 shell=/sbin/nologin create_home=no state=present'

更多内容关注小编!!!