栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Ansible01

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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文件内置变量:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/983268.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号