运维小弟 运维小弟
首页
  • Ansible
  • Jenkins
  • Argocd
  • mysql
  • redis
  • docker
  • kubernetes
  • zabbix
  • prometheus
  • 工作笔记
  • nginx
  • terraform
关于
首页
  • Ansible
  • Jenkins
  • Argocd
  • mysql
  • redis
  • docker
  • kubernetes
  • zabbix
  • prometheus
  • 工作笔记
  • nginx
  • terraform
关于
  • Ansible

    • Ansible介绍
      • Ansible 的目标
      • Ansible的使用范围
      • Ansible是怎么工作的
      • 对管理主机的要求
      • 对节点主机的要求
      • Ansible命令执行来源
      • Ansible 概念
        • 控制节点(Control node):
        • 管理节点(Managed nodes):
        • 主机清单(Inventory):
        • 模块(Modules):
        • 任务(Tasks):
        • 剧本(Playbooks):
      • Ansible 特性
      • Ansible 注意事项
      • 社区活跃
      • Ansible项目
      • Ansible 与其它配置管理的对比
      • 资源
    • 安装Ansible
    • Ansiblle快速配置
    • Ansible清单
    • Patterns
  • Jenkins

  • Argocd

  • Devops
  • Ansible
2023-08-03
目录

Ansible介绍

# 1. Ansible 介绍

  Ansible 是2012年推出的一种通用自动化工具,可用于配置管理或工作流程自动化。配置管理是一种" 基础架构代码 "实践,它将事物编码,例如应该在系统上安装什么包和版本,或者应该运行什么守护进程。工作流自动化可能是从配置基础架构到部署软件的任何事情。Ansible 在2015年时被Redhat公司收购。

  Ansible是用Python编写的,它使用SSH在不同的机器上执行命令。Ansible是无代理的,这使得入手更容易。您只需要在相关机器上安装SSH和Python。Ansible使用声明式YAML语言"playbook"将一组主机("hosts")映射到定义明确的角色。声明性用于指示Ansible如何设置或更改事物,Ansible才进行必要的更改。

# Ansible 的目标

一切自动化

# Ansible的使用范围

  • 自动化部署应用
  • 自动化管理配置
  • 自动化的持续交付
  • 自动化的云服务管理
  • 自动化网络设备管理

# Ansible是怎么工作的

从上图可以看出,运行ansible的先决条件是,安装ansible到管理节点,定义主机清单,并有一些playbooks定义。

简要的步骤

  1. 在控制节点上安装ansible
  2. 配置主机清单: 将被控节点的连接信息配置到主机清单中。
  3. 定义playbook: 指定运行主机和执行任务

可以用动图说明下此次过程。

# 对管理主机的要求

  目前,只要机器上安装了 Python 2(版本2.6或2.7)或Python 3(版本3.5及更高版本)都可以运行Ansible 【windows系统不可以做管理主机】 管理主机的系统可以是 Red Hat, Debian, CentOS, OS X, BSD的各种版本。

# 对节点主机的要求

  通常我们使用 ssh 与节点通信,默认使用 sftp. 如果 sftp 不可用,可在 ansible.cfg 配置文件中配置成 scp 的方式. 在节点上也需要安装Python 2(2.6或更高版本)或Python 3(3.5或更高版本)

# Ansible命令执行来源

    1> USER,普通用户,即SYSTEM ADMINISTRATOR
    2> CMDB(配置管理数据库) API 调用
    3> PUBLIC/PRIVATE CLOUD API调用  (公有私有云的API接口调用)
    4> USER-> Ansible Playbook -> Ansibile
1
2
3
4

# Ansible 概念

# 控制节点(Control node):

  任何装有Ansible的机器可称为 控制节点 。 您可以从任何控制节点运行命令和剧本,并调用/usr/bin/ansible或/usr/bin/ansible-playbook。 您可以将任何安装了Python的计算机用作控制节点,笔记本电脑,共享桌面和服务器都可以运行Ansible。 但是,不能将Windows计算机用作控制节点。您也可以有多个控制节点。

# 管理节点(Managed nodes):

  使用Ansible管理的网络设备或服务器可称为 管理节点。 受管节点有时也称为 主机 。 受管节点上是不需要安装Ansible的。

# 主机清单(Inventory):

  托管节点的列表。库存文件有时也称为主机文件。您的目录可以为每个托管节点指定诸如IP地址之类的信息。库存还可以组织托管节点,创建和嵌套组,以便于扩展。要了解更多关于库存的信息。

# 模块(Modules):

  Ansible执行的具体代码。每个模块都有特定的用途,从管理特定类型数据库的用户到管理特定类型网络设备上的VLAN接口。您可以使用任务调用单个模块,也可以调用剧本中的几个不同模块。要了解Ansible包含多少个模块。

# 任务(Tasks):

  Ansible的行动单位。tasks包含一组由module组成的任务列表, 您可以使用特别的命令一次性执行单个任务。

# 剧本(Playbooks):

  保存了已排序的任务列表,因此可以按此顺序重复运行这些任务。剧本可以包括变量和任务。剧本是用 YAML 编写的,易于阅读、编写、共享和理解。要了解更多关于剧本的信息。

# Ansible 特性

  • 模块化:调用特定的模块,完成特定任务
  • Paramiko(python对ssh的实现),PyYAML,Jinja2(模板语言)三个关键模块
  • 支持自定义模块
  • 基于Python语言实现
  • 部署简单,基于python和SSH(默认已安装),agentless
  • 安全,基于OpenSSH
  • 支持playbook编排任务
  • 幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况
  • 无需代理不依赖PKI(无需ssl)
  • 可使用任何编程语言写模块
  • YAML格式,编排任务,支持丰富的数据结构
  • 较强大的多层解决方案

# Ansible 注意事项

  • 执行ansible的主机一般称为主控端,中控,master或堡垒机
  • 主控端Python版本需要2.6或以上
  • 被控端Python版本小于2.4需要安装python-simplejson
  • 被控端如开启SELinux需要安装libselinux-python
  • windows不能做为主控端
  • ansible不是服务,不会一直启动,只是需要的时候启动

# 社区活跃

统计时间: 2022年04月20日

  • Ansible releases 441

  • Ansible modules 3387

  • Galaxy Roles 30,862

  • Github Starts 528,000

  • Github Fork 218,000

# Ansible项目

  • Ansible Galaxy是一个用于查找,共享,使用Ansible role的在线社区。https://galaxy.ansible.com/

  • Ansible Container是一个开源项目,旨在实现整个容器构建,部署和管理过程的自动化。https://github.com/ansible/ansible-container

  • Ansible tower 商业项目,使用可视化仪表板,基于角色的访问控制,作业调度,集成通知和图形库存管理来集中和控制IT基础架构。https://www.ansible.com/products/tower

# Ansible 与其它配置管理的对比

笔者选择了目前几款主流的与 Ansible 功能类似的配置管理软件chef、 Puppet、Saltstack,这里所做的对比不针对各个软件的性能作比较,只是对各个软件的特性做个对比。

Ansible Chef Puppet SaltStack
程序语言 Python Ruby,Erlang C++, Clojure Python2
配置文件语言 YAML,JSON Ruby Propfietary YAML
数据库 否 PostgreSQL PuppetDB 无
传输方式 Ssh RabbitMQ Mcollective ZeroMQ
发布方式 Push Pull Pull Push
管理节点 A,B,L,O,S Linux Linux L,B
客户端 否 A,B,L,O,S,W A,B,L,O,S,W A,B,L,O,S,W
无代理 是 否 否 否
公有云版本 AM AM/AZ/PR 否 否
公有云管理 AM/AZ/OS/GCP Fog driver AM/AZ/VM/GCP salt Cloud
架构 Server server/client server/client server/client
逐步部署 是 是 否 否
企业版UI Ansible Tower opscode Manage Puppet Enterprise SaltStack Enterprise
开源版UI Semaphore Chef Manage Foreman Slatpad,Saltshaker
企业版本 是 是 是 是
创建时间 2012年3月6日 2009年1月16日 2010年9月15日 2011年2月21日
Github Starts 42,547 6,198 5,710 10,747
Github Forks 18,764 2,417 2,138 4,815
Contributors 4,955 586 536 2,078
Commits 49,775 26,017 31,751 106,129

统计时间: 2020年04月06日

# 资源

  • 源码:https://github.com/ansible/ansible
  • 官方文档: http://docs.ansible.com/
  • Jinja2 中文文档: http://docs.jinkan.org/docs/jinja2/
  • yaml语法: http://www.yaml.org/
  • ansible 电子书: https://www.ansible.com/resources/ebooks
  • 白皮书: https://www.ansible.com/resources/whitepapers
  • 用户案例: https://www.ansible.com/resources/case-studies
上次更新: 2023/09/06, 17:59:31
安装Ansible

安装Ansible→

最近更新
01
Nginx 管理维护规范
09-06
02
Centos7 使用nvm配置 多Node.js环境
08-06
03
Maven指定jdk版本打包
08-06
更多文章>
Theme by Vdoing | Copyright © 2019-2023 运维小弟 | fxkjnj.com 版权所有 ( 苏ICP备17042985号-3 )
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式