Ansible

Ansible

自动化运维屁平台

运维自动化平台介绍

运维⾃动化平台是由管理机器和业务机器组成的:

管理机器:任务定制以及发布

业务机器:接受任务并执⾏

运维⾃动化平台的优势:

  • ⼀次性任务定制:任务⼀次性发给所有的业务机器

  • 接收任务执⾏时间:任务主机并发完成任务,节省部署的时间

  • 错误率低:避免重复,保证⼀次任务定制准确即可

常⻅的⾃动化运维⼯具

  • Puppet
  • SaltStack
  • Ansible

Puppet、Ansible、SaltStack对⽐

工具 语言 架构 协议
Puppet Ruby C/S HTTP
Ansible Python ⽆Client SSH
Saltstack Python C/S(可无Client) SSH/ZMQ/RAET

Ansible介绍

Ansible 是由Python开发的⾃动化运维⼯具,集合了众多运维⼯具(Pupppet,chef,fabric, func)的优点,实现了匹配系统配置、批量程序部署、批量运⾏命令等功能。Ansible是基于模块⼯作的,本身并没有批量部署的能⼒,真正具有批量部署的是Ansible所运⾏的模块,Ansible只是 提供了框架。

Ansible架构

1.链接插件Connection Plugins:⽤来链接主机,⽤来链接被管理端
2.核⼼模块Core module:链接主机实现操作,他依赖于具体的模块来做具体的事情
3.⾃定义模块Custom module:根据⾃定义的需求编写具体的模块
4.插件Plugins:完成模块功能的补充
5.剧本Playbook:ansible的配置⽂件,将多个任务定义在剧本⾥,由ansible⾃动执⾏
6.主机清单:Inventory定义ansible需要操作主机的范围

Ansible优点

1.不需要单独安装客户端,也不需要启动任何服务
2.Ansible是Python中的⼀套完整的⾃动化执⾏任务模块
3.Ansible Playbook采⽤yaml配置,对于⾃动化任务执⾏⼀⽬了然(简单)
4.Ansible模块较多,对于⾃动化的场景⽀持⽐较丰富

Ansible作用

ansible能做什么?
批量命令⾏执⾏
批量安装服务
批量配置同步
批量任务执⾏
批量代码部署

使用ansible有什么好处?
提⾼⼯作效率
提⾼⼯作精准度
减少维护的成本
减少重复性⼯作

Ansible⼯作原理

1.⽤户登录管理机器,通过ansible剧本或者当⾏命令针对业务机器组或者单个机器部署任务
2.管理机器读取⽤户的部署任务,根据invenroty⽂件中定义的业务组机器查找对应的IP地址
3.管理机下发任务,管理机通过ssh免密链接业务机器,下发给业务机器
4.业务机器开始执⾏任务
5.业务机器将执⾏的结果发送给ansible管理机

反馈字体颜⾊
绿⾊ 为发⽣变化
⻩⾊ 更改⽣效
红⾊ 执⾏错误
紫⾊ 警告

Ansible⾃动化运维平台部署

自动化部署前准备

1.服务器准备
主机名称 IP
master 10.0.0.143
slave1 10.0.0.139
slave2 10.0.0.111
2.主机以及主机名互相绑定
vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.143 master  #添加IP和主机名的映射关系
10.0.0.139 slave1 
10.0.0.111 slave2
3.时间同步

每台机器都要时间同步

# 修改时区
timedatectl set-timezone Asia/Shanghai
# 安装chrony时间同步服务,同步时间
yum install -y chrony  # 安装时间同步工具
vim /etcchrony.conf  # 修改要同步的时间同步服务器地址
# 查看
grep -E "^server" /etc/chrony.conf 
server ntp1.aliyun.com
server ntp2.aliyun.com
server ntp3.aliyun.com
server ntp4.aliyun.com

# 启动chrony
systemctl start chronyd
# 同步
chronyc sources -v
210 Number of sources = 4

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^+ ntp6.flashdance.cx            2   6    77    90    -51ms[  -60ms] +/-  185ms
^* tock.ntp.infomaniak.ch        1   6   177    27    +34ms[  +25ms] +/-  142ms
^? ntp.wdc1.us.leaseweb.net      0   6     0     -     +0ns[   +0ns] +/-    0ns
^+ undefined.hostname.local>     2   6   177    30  +4931us[+4931us] +/-  133ms

# 验证
date  # 命令
Mon Mar  1 16:46:30 CST 2021
#查看时间详情
timedatectl  # 命令
      Local time: Mon 2021-03-01 16:46:46 CST
  Universal time: Mon 2021-03-01 08:46:46 UTC
        RTC time: Mon 2021-03-01 08:46:47
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
4.配置ssh免密
# 交互式
ssh-keygen 
ssh-copy-id root@10.0.0.139
# 非交互式
1.rm -rf ~/.ssh/id_dsa ~/.ssh/id_dsa.pub  # 清除之前的密钥对⼉
2.ssh-keygen -t dsa -f ~/.ssh/id_dsa -P '密码'  #免交互创建sshkey
# -t 指定秘钥类型 dsa rsa
# -f 指定私钥的位置
# -P 命令⾏中指定密码
3.sshpass -p123 ssh-copy-id -o StrictHostKeyChecking=no slave1

安装Ansible

1.下载epel源

epel源下载网站:https://developer.aliyun.com/mirror/epel?spm=a2c6h.13651102.0.0.3e221b11fAOZAY

yum安装
#  yum安装
yum install -y ansible  
ansible --version  # 查看ansible版本
源码安装

下载对应的ansible软件包:https://releases.ansible.com/ansible/

tar -xf ansible-2.8.3.tar.gz
mv ansible-2.8.3 /opt/ansible  # 解压
cd /opt/ansible  
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/  # 安装pip
mkdir /etc/ansible/ -p
ln -s /opt/ansible/bin/* /usr/bin/  # 创建命令软连接
cp /opt/ansible/examples/* /etc/ansible/
ansible --version  # 查看ansible版本

配置主机清单

vim /etc/ansible/hosts
# 为主机分组,分组的目的是不同组的主机执行不同的命令
[web]
10.0.0.139
10.0.0.111
# 如果主机IP是连续的还可以这样写
10.0.0.[100:200]

常⽤模块

https://docs.ansible.com/ansible/latest/index.html

Ansible 是基于模块⼉⼯作的,本身没有批量部署的能⼒,真正具有批量部署的是Ansible所运⾏的 模块,Ansible只是提供⼀种框架

Ansible ⽀持的模块⼉⾮常的多,我们并不需要把每个模块⼉都记住,⽽只需要熟悉⼀些常⻅的模块⼉,其他的模块⼉在需要⽤到的时候再去查询官⽅⽂档即可。

Ansible命令格式

ansible 操作机器的IP或组名 -m 模块⼉名称 -a '模块参数'
基本格式为:ansible 操作的机器名或者组名 -m 模块⼉名 -a '参数1=值1 参数2=值2'
查看所有⽀持的模块⼉
ansible-doc -l  # 查看所有的模块

ansible模块使用

1.command模块

默认的模块,可以运行远程范围内所有的shell命令

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值