ansible自动化运维工具

一、ansible自动运维工具简介

1.ansible

Ansible 与 Saltstack 均是基于 Python 语言开发,Ansible 只需要在一台普通的服务器上运行即可,不需要在客户端服务器上安装客户端。因为 Ansible 是基于 SSH 远程管理,而Linux服务器大都离不开SSH,所以Ansible不需要为配置工作添加额外的支持。
Ansible 安装使用非常简单,而且基于上千个插件和模块实现各种软件、平台、版本的管理,支持虚拟容器多层级的部署。很多读者在使用 Ansible 工具时,认为 Ansible比 Saltstatck 执行效率慢,其实不是软件本身慢,是由于 SSH 服务慢,可以优化 SSH 连接速度及使用 Ansible 加速模块,满足企业上万台服务器的维护和管理。

2.ansible原理

Ansible分为控制端和被控端,主要是基于SSH协议去管理客户端,被控端是无需安装Agent插件的,Ansible会读取控制端hosts文件,根据文件中定义IP列表信息,调取本地的各个模块对被控端机器实现批量、并发的配置管理和维护,如果任务比较复杂可以写成PlayBook剧本进行分发管理;

Ansible 自动运维管理工具优点

  • 轻量级,更新时,只需要在操作机上进行一次更新即可;
  • 采用 SSH 协议;
  • 不需要去客户端安装 agent;
  • 批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
  • 使用 python 编写的,维护更简单;
  • 支持 sudo 普通用户命令;
  • 去中心化管理。

二、ansible部署安装

ansible(192.168.220.110)

systemctl stop firewalld.service 
setenforce 0
hostnamectl set-hostname ansible
su -
yum install -y epel-release
yum install -y ansible
ansible --version
yum install -y tree

[root@ansible ~] # tree /etc/ansible/
/etc/ansible/
├── ansible.cfg
├── hosts
└── roles
1 directory, 2 files

vim /etc/ansible/hosts
####在里边添加####
[pyy]
192.168.220.120
[ppp]
192.168.220.130
####esc->  shift+:  ->wq####

ssh-keygen -t rsa
密码两遍
ssh-copy-id root@192.168.220.120
yes
密码
ssh-copy-id root@192.168.220.130
ssh-agent bash
[root@ansible ~]# ssh-add
Enter passphrase for /root/.ssh/id_rsa: (密码)
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
[root@ansible ~]# ansible pyy -m command -a 'date'
192.168.220.120 | CHANGED | rc=0 >>
2021 04 07 星期三 15:24:38 CST
[root@ansible ~]# ansible ppp -m command -a 'date'
192.168.220.130 | CHANGED | rc=0 >>
2021 04 07 星期三 15:24:46 CST

pyy(192.168.220.120)

systemctl stop firewalld.service 
setenforce 0
hostnamectl set-hostname pyy
su -

ppp(192.168.220.130)

systemctl stop firewalld.service 
setenforce 0
hostnamectl set-hostname ppp
su -

三、ansible命令模块

注:以下所有操作前提必须使用agent代理

ssh-agent bash
ssh-add
(输入密码)

1.command模块

命令格式:ansible [主机] [-m 模块] [-a args]

#列出所有已安装的模块,按q退出
ansible-doc -l    		

#所有主机执行data命令,其中all可以换成IP或者分类名称
ansible all -m command -a 'date'   

#不加-m模块,则默认使用command模块
ansible all -a 'date'
ansible all -a 'ls /root'

在这里插入图片描述
在这里插入图片描述

2.cron模块

两种状态(state):present表示添加(可以省略),absent表示移除

#查看cron模块信息
ansible-doc -s cron

#pyy:分类  -m指定模块 -a输出模块内的指令  分钟:每分钟,工作:输出yoyoyo,工作名称:yby
ansible pyy -m cron -a 'minute="*/1" job="/usr/bin/echo yoyoyo" name="yby"'

#查看计划性任务命令
ansible pyy -a 'crontab -l'

#移除计划性任务
ansible pyy -m cron -a 'name="yby" state=absent'

在这里插入图片描述

3.user模块

user模块有三条指令:useradd,userdel,usermod

#模块信息,按q退出
ansible-doc -s user

#weisuoyou 创建用户
ansible all -m user -a 'name=abc'

#查看用户账户信息
ansible all -m 'command' -a 'tail -1 /etc/passwd'

#移除指令
ansible all -m user -a 'name="abc" state=absent'

在这里插入图片描述

4.group模块

group模块请求groupadd、groupdel、groupmod模块

#查看模块信息
ansible-doc -s group

#system=yes 创建系统组
ansible ppp -m group -a 'name=mysql gid=306 system=yes'

#查看组账户信息
ansible ppp -a 'tail -1 /etc/group'
#创建用户并加入组
ansible ppp -m user -a 'name=abcd uid=306 group=mysql system=yes'

#查看用户的用户id和组id信息
ansible ppp -a 'id abcd'

在这里插入图片描述

5.copy模块

对文件进行有效的复制

ansible-doc -s copy

ansible ppp -m copy -a 'src=/etc/fstab dest=/opt/fstab.back'

ansible ppp -a 'ls /opt'
ansible ppp -a 'cat /opt/fstab.back'

ansible ppp -m copy -a 'content="hello pyy" dest=/opt/qwe.txt'
ansible ppp -a 'cat /opt/qwe.txt'

在这里插入图片描述

在这里插入图片描述

6.file模块

ansible-doc -s file

ansible ppp -m user -a 'name=ppp system=yes'

ansible ppp -m file -a 'owner=ppp group=ppp mode=600 path=/opt/qwe.txt'
ansible ppp -a 'ls -l /opt/qwe.txt'

#创建
ansible ppp -m file -a 'src=/opt/qwe.txt path=/opt/qwe.txt.link state=link'
ansible ppp -a 'ls -l /opt'

#移除文件/opt/test.txt
ansible ppp -m file -a 'path=/opt/qwe.txt state=absent'

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.ping模块

ansible all -m ping 

在这里插入图片描述

8.service模块

ansible-doc -s service

##192.168.220.120
yum -y install httpd

ansible pyy -a 'systemctl status httpd'

ansible pyy -m service -a 'enabled=true name=httpd state=started'



systemctl status httpd
systemctl is-enabled httpd

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.shell模块

ansible-doc -s shell

ansible ppp -m user -a 'name=abc'
ansible ppp -m shell -a 'echo 990928 | passwd --stdin abc'

在这里插入图片描述

10.script模块

ansible-doc -s script

vim hy.sh
#!/bin/bash
echo '一袋米哟扛几楼' > /opt/script.txt

chmod +x hy.sh
ansible all -m script -a 'hy.sh'

ansible all -a 'cat /opt/script.txt'

在这里插入图片描述

11.yum模块

ansible-doc -s yum

ansible ppp -m yum -a 'name=httpd'
ansible ppp -a 'rpm -q httpd'

ansible ppp -m yum -a 'name=httpd state=absent'
ansible ppp -a 'rpm -q httpd'

在这里插入图片描述
在这里插入图片描述

12.setup模块

ansible-doc -s setup

#获取ppp组主机的facts信息
ansible ppp -m setup   
Ansible facts 是远程系统的信息,主要包含IP地址,操作系统,以太网设备,mac 地址,时间/日期相关数据,硬件信息等信息。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值