Ansible基本使用和常用模块

1) 部署
yum install -y ansible
2) 配置
#修改配置文件关闭主机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]
3) Ans-inventory 主机清单
a.什么是主机清单 : ansible 管理的节点的列表,ansible 默认读取在 /etc/ansible/hosts 文件 ,并非 /etc/hosts.
b.我们会把主机清单文件存放在指定的目录中 , 运行 ansible 的时候通过 -i 选项指定主机清单文件即
Ansible基本使用和常用模块_第1张图片
4)  批量管理主机并执行shell命令
#主机清单格式:
#[分类或分组的名字]    #注意分类要体现出服务器的作用
#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)常用模块

# 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'

你可能感兴趣的:(ansible)