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]
#主机清单格式:
#[分类或分组的名字] #注意分类要体现出服务器的作用
#ip地址或主机名或域名 #注意主机名要能解析才行
[root@m01 ~]# cat /etc/ansible/hosts
[web]
172.16.1.7
#172.16.1.8
[backup]
172.16.1.41
[nfs]
172.16.1.31
[root@m01 ~]# #hostname
[root@m01 ~]#
[root@m01 ~]# ansible all -m command -a "hostname"
172.16.1.7 | CHANGED | rc=0 >>
web01
172.16.1.41 | CHANGED | rc=0 >>
backup
172.16.1.31 | CHANGED | rc=0 >>
nfs01
主机清单分组详解:
需要我们进行分组:按照层次进行分组,按照功能/业务.
ansible命令格式
ansible 主机ip或分组或all -m 指定使用的模块名字 -a 模块中的参数
command 模块是ansible默认的模块可以不写.
5)常用模块文章来源地址https://www.toymoban.com/news/detail-803460.html
# command模块 ans默认的模块,执行简单命令,不支持特殊符号
案例01:批量获取所有主机的主机名
批量执行hostname命令
ansible all -m command -a 'ip a s eth0'
ansible all -a 'ip a s eth0'
#shell模块
#与command模块类似,但是shell支持特殊符号
#批量获取ip地址
ansible all -m shell -a "ip a s eth0 |awk -F'[ /]+' 'NR==3{print \$3}'"
#script模块
#执行流程:分发脚本(传输脚本),在被管理端运行脚本
# 批量执行脚本获取主机信息
ansible all -m script -a '/server/scripts/ansible-scripts.sh'
#file模块
#file模块不仅可以管理文件,还可以管理目录,管理软连接.
#file模块相当于把touch命令,mkdir命令,rm命令,ln -s命令,chown,chmod结合在一起了.
#1.创建/opt/lidao.txt
ansible all -m file -a 'path=/opt/lidao.txt state=touch
#2.创建目录/app/
ansible all -m file -a 'path=/app/a/b/c/d/e/g/ state=directory '
#3.创建软连接 /etc/hosts创建软连接到/opt/下
ln -s /etc/hosts /opt/hosts ansible all -m file -a ' src=/etc/hosts state=link '
#copy模块
#批量分发:scp,1个节点(管理节点)发送文件或压缩包到所有被管理端. 注意:copy是单向的传输.
# 分发书写好的/etc/hosts文件,如果文件存在则备份下
ansible all -m copy -a 'src=/etc/hosts dest=/etc/hosts backup=yes'
#服务管理-systemd
#systemd模块相当于是linux systemctl命令:
#启动服务
ansible all -m systemd -a 'name=crond
enabled=yes state=started'
#关闭服务
ansible all -m systemd -a 'name=firewalld
enabled=no state=stopped'
#重启ssh
ansible all -m systemd -a 'name=sshd
state=reloaded/restarted'
# yum模块
#yum模块并不只是yum命令,包含了yum/apt命令
#安装常用的软件htop,tree,lrzsz,sshpass
ansible all -m yum -a 'name=htop,tree,lrzsz sshpass '
#user模块
#创建www-ans用户uid 2000虚拟用户
ansible all -m user -a 'name=www-ans uid=2000 shell=/sbin/nologin create_home=no state=present'
#cron模块
#作用:用于管理系统的定时任务.替代了crontab -e功能
# 每3分钟同步时间
ansible all -m cron -a 'name="sync time by ggb" minute="*/3" job="/sbin/ntpdate
ntp1.aliyun.com &>/dev/null" state=present'
文章来源:https://www.toymoban.com/news/detail-803460.html
到了这里,关于Ansible基本使用和常用模块的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!