Ansible01

Ansible

  1. 几种常用运维工具比较

Puppet

— 基于 Ruby 开发,采用 C/S 架构,扩展性强,基于 SSL,远程命令执行相对较弱

SaltStack
— 基于 Python 开发,采用 C/S 架构,相对 puppet 更轻量级,配置语法使用 YAML,使得配置脚本更简单

Ansible
— 基于 Python paramiko 开发,分布式,无需客户端,轻量级,配置语法使用YAML 及 Jinja2模板语言,更强的远程命令执行操作

  1. Ansible简介

​ Ansible 基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dzMDS8Nk-1655895760176)(D:\笔记图片\image-20220615215149735-16553011111181-16553011122763.png)]

connection plugins:连接插件,负责和被管理端实现通信,有SSH,ZEROMQ等,默认使用SSH连接

host inventory:主机清单,是一个配置文件里面定义管控的主机
modules : 模块,核心模块、command模块、自定义模块等
plugins : modules功能的补充,包括连接插件,邮件插件等
playbook:编排,定义 Ansible 多任务配置文件,非必需

  1. Ansible特性

1)、no agents:不需要在被管控主机上安装任何客户端,更新时,只需在操作机上进行一次更新即可

2)、no server:无服务器端,使用时直接运行命令即可
3)、modules in any languages:基于模块工作,可使用任意语言开发模块
4)、yaml,not code:使用yaml语言定制剧本playbook
5)、ssh by default:基于SSH工作
6)、strong multi-tier solution:可实现多级指挥

  1. Ansible工作原理:

在ANSIBLE 管理体系中,存在"管理节点" 和 “被管理节点” 两种角色。被管理节点通常被称为"资产".

在管理节点上,Ansible将 AdHoc 或 PlayBook 转换为Python脚本,并通过SSH将这些Python 脚本传递到被管理服务器上。
在被管理服务器上依次执行,并实时的将结果返回给管理节点。

  1. Ansible执行过程:

1). 加载自己的配置文件,默认/etc/ansible/ansible.cfg;

2). 查找对应的主机配置文件,找到要执行的主机或者组;
3). 加载自己对应的模块文件,如 command;
4). 通过ansible将模块或命令生成对应的临时py文件(python脚本), 并将该文件传输至远程服务器;
5). 对应执行用户的家目录的.ansible/tmp/XXX/XXX.PY文件;
6). 给文件 +x 执行权限;
7). 执行并返回结果;
8). 删除临时py文件,sleep 0退出;

Ansible安装

nsible安装常用两种方式,yum 安装 和 pip 程序安装。

yum 安装

  1. 配置EPEL网络yum源
  2. 安装ansible
    # yum install ansible -y

pip 安装
# yum install python-pip
# pip install ansible

Ansible配置文件

​ ansible与我们其他的服务在这一点上有很大不同,这里的配置文件查找是从多个地方找的,顺序如下:

  1. 检查环境变量ANSIBLE_CONFIG指向的路径文件(export ANSIBLE_CONFIG=/etc/ansible.cfg);
  2. /.ansible.cfg,检查当前目录下的ansible.cfg配置文件;
  3. /etc/ansible.cfg检查etc目录的配置文件。

主配置文件简介
通过yum安装的ansible 主配置文件为 /etc/ansible/ansible.cfg,下面我们列出一些常见的参数:

inventory = /etc/ansible/hosts          # 这个参数表示资源清单inventory文件的位置
 library = /usr/share/ansible              # 指向存放Ansible模块的目录,支持多个目录方式,只要用冒号隔开就可以
 forks = 5                                              # 并发连接数,默认为5
 sudo_user = root                                # 设置默认执行命令的用户
 remote_port = 22                              # 指定连接被管节点的管理端口,默认为22端口
 host_key_checking = False               # 设置是否检查SSH主机的密钥,值为True/False。
 timeout = 60                                     # 设置SSH连接的超时时间,单位为秒
 log_path = /var/log/ansible.log      # 指定一个存储ansible日志的文件(默认不记录日志)

Inventory 主机清单

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

​ /etc/ansible/hosts [缺省]

​ 主机清单文件配置:

webservers]
192.168.10.128
Bar.example.com
up.example.com:5309                  # 指定 SSH 端口 5309
web1  ansible_ssh_host=192.168.1.50  # 设置主机别名为 web1
www[01:50].example.com               # 支持通配符匹配www01,www02,...,www50
db-[a:f].example.com                 # 通配符匹配db-a,db-b,...,db-f    

# 为每个主机单独指定一些变量,这些变量可以在 playbooks 中使用:
[atlanta]
host1 http_port=80 maxRequestsPerChild=808
host2 http_port=303 maxRequestsPerChild=909

为一个组指定变量,组内每个主机都可以使用该变量:

[atlanta:vars]
ntp_server=ntp.atlanta.example.com
proxy=proxy.atlanta.example.com

组可以包含其他组:

[atlanta]
host1
host2

[raleigh]
host3
host4

[southeast:children]
atlanta
raleigh

[southeast:vars]
some_server=foo.southeast.example.com
halon_system_timeout=30

​ hosts文件内置变量:在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值