ansible自动化运维

Ansible概述

Ansible是一个配置管理系统configuration management system

python 语言是运维人员必须会的语言

ansible 是一个基于python 开发的自动化运维工具

其功能实现基于ssh远程连接服务

ansible 可以实现批量系统配置,批量软件部署,批量文件拷贝,批量运行命令等功能

除了ansible之外,还有saltstack 等批量管理软件

Ansible能做什么

ansible可以帮助我们完成一些批量任务,或者完成一些需要经常重复的工作。
比如:同时在100台服务器上安装nginx服务,并在安装后启动服务。
比如:将某个文件一次性拷贝到100台服务器上。
比如:每当有新服务器加入工作环境时,你都要为新服务器部署某个服务,也就是说你需要经常重复的完成相同的工作。
这些场景中我们都可以使用到ansible。

 ansible批量管理服务意义
    01. 提高工作的效率
    02. 提高工作准确度
    03. 减少维护的成本
    04. 减少重复性工作
  

ansible批量管理服务功能
    01. 可以实现批量系统操作配置
    02. 可以实现批量软件服务部署
    03. 可以实现批量文件数据分发
    04. 可以实现批量系统信息收集

 Ansible软件特点

1.ansible不需要单独安装客户端,SSH相当于ansible客户端。
2.ansible不需要启动任何服务,仅需安装对应工具即可。
3.ansible依赖大量的python模块来实现批量管理。
4.ansible配置文件/etc/ansible/ansible.cfg


 Ansible基础架构

1.连接插件(connectior plugins) 用于连接主机 用来连接被管理端
2.核心模块(core modules) 连接主机实现操作, 它依赖于具体的模块来做具体的事情
3.自定义模块(custom modules) 根据自己的需求编写具体的模块
4.插件(plugins) 完成模块功能的补充
5.剧本(playbooks)ansible的配置文件,将多个任务定义在剧本中,由ansible自动执行
6.主机清单(host inventory)定义ansible需要操作主机的范围

最重要的一点是 ansible是模块化的 它所有的操作都依赖于模块

不需要单独安装客户端(no agents),基于系统自带的sshd服务,sshd就相当于ansible的客户端

不需要服务端(no sever)

需要依靠大量的模块实现批量管理

配置文件 /etc/ansible/ansible.cfg (前期不用配置)

     

   ansible自动化运维实例
        

            
1. ansible 安装

安装tree命令---便于查看ansible工作目录
[root@localhost ~]# yum -y install tree


上传ansible相关软件,创建本地yum仓库
[root@localhost ~]# mv  ansiblerepo/ /usr/src/

[root@localhost ~]# du -sh /usr/src/ansiblerepo/
 

[root@localhost ~]# vim /etc/yum.repos.d/local.repo 

[local]
name=centos7.4
baseurl=file:///usr/src/ansiblerepo
enabled=1
gpgcheck=0


[root@localhost ~]# yum clean all

安装ansible
[root@localhost ~]# yum -y install ansible

查看ansible版本
[root@localhost ~]# ansible --version

ansible 2.3.1.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides
  python version = 2.7.5 (default, Aug  4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]

2.为了便于管理远程主机,配置ssh信任  

[root@localhost ~]# ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): ##公钥和私钥默认保存位置
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): ##可设置验证密码,默认
Enter same passphrase again:  ##默认
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Jws2KHO5W171BF6gKDN9Oudo0D2VKmYNRJKxKbQfsmA root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|  . o+o   .      |
| . ..* . . o     |
|.E+ B + o + .    |
|.. = O * + o     |
|  + * @ S + .    |
|   + * O * o     |
|    . + +   .    |
|     = .         |
|    . .          |
+----[SHA256]-----+

传输私钥到远程主机
[root@localhost ~]# ssh-copy-id root@192.168.10.2

根据提示输入:
yes

输入:root密码

[root@localhost ~]# ssh-copy-id root@192.168.10.3


验证:无须输入密码即可远程登录
[root@localhost ~]# ssh 192.168.10.2

查看ip是否是远程主机
[root@localhost ~]# ip a

[root@localhost ~]# exit


[root@localhost ~]# ssh 192.168.10.3

[root@localhost ~]# ip a

[root@localhost ~]# exit


            ----ansilble基础管理------
    yum install -y ansible     --- 需要依赖epel的yum源
    /etc/ansible/ansible.cfg   --- ansible服务配置文件
       /etc/ansible/hosts         --- 主机清单文件   定义可以管理的主机信息
       /etc/ansible/roles         --- 角色目录???
    
            
1. Ansible清单管理/etc/ansible/hosts

inventory文件通常用于定义要管理主机的认证信息, 例如ssh登录用户名、密码以及key相关信息。

主机

1.支持主机名通配以及正则表达式,例如web[1:3].oldboy.com
2.支持基于非标准的ssh端口,例如web1.oldboy.com:6666
3.支持指定变量,可对个别主机的特殊配置,如登陆用户,密码等

主机组

1.支持嵌套组,例如[game:children],那么在game模块下面的组都会被game所包含
2.支持指定变量,例如[game:vars]在下面指定变量

[root@localhost ~]# vim /etc/ansible/hosts

[web]   ## 主机组
192.168.10.2
192.168.10.3

[test01]
www.bdqn.cn:222   ##通过端口222管理设备

[mail]
ly01.mail.cn

[ly]
ly[2:5].test.com  ##正则表达式:表示4台主机ly2,ly3,ly4,ly5..

验证:可以对组或组中成员进行远程操作
--limit 限制为组中成员

只对web组中192.168.10.2主机进行命令操作
[root@localhost ~]# ansible web -m command -a "ip a" --limit "192.168.10.2"

192.168.10.2 | SUCCESS | rc=0 >>
……………………


通过指定主机来远程操作
[root@localhost ~]# ansible 192.168.10.3 -m command -a "ip a"

192.168.10.3 | SUCCESS | rc=0 >>

通过通配符来指定多个主机远程操作
[root@localhost ~]# ansible 192.168.10.* -m command -a "firewall-cmd --state"

192.168.10.2 | FAILED | rc=252 >>
not running

192.168.10.3 | FAILED | rc=252 >>
not running


------------------------------------------
Ansible注意事项->提示颜色信息说明

黄色:对远程节点进行相应修改
绿色:对远程节点不进行相应修改,或者只是对远程节点信息进行查看
红色:操作执行命令有异常
紫色:表示对命令执行发出警告信息(可能存在的问题,给你一下建议)

-----------------------------------------------------

2.ansible命令
ansible应用场景:多用于临时的、无规律的任务操作
--非固化需求
--临时一次性操作
--二次开发接口调用

检查清单中所有主机是否存活
-f  并发线程数为5
-m   调用ping模块(并不是ping命令)

[root@localhost ~]# ansible all -f 5 -m ping

## success---表示成功; => {} 表示返回结果
## changed false 表示没有对主机进行更改
##pong ---ping模块返回结果

192.168.10.3 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
192.168.10.2 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}


列出web组主机列表
[root@localhost ~]# ansible web --list
  hosts (2):
    192.168.10.2
    192.168.10.3

批量显示web组磁盘使用情况    
[root@localhost ~]# ansible web -m command -a "df -hT"


3.ansible-doc  可用来查询模块文档的说明,类似于man

列出所有模块信息
[root@localho

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值