首页 > 其他分享 >Ansible - 概念介绍

Ansible - 概念介绍

时间:2022-11-02 11:33:07浏览次数:73  
标签:bin 17 ansible 介绍 概念 Ansible usr 2022 root


说明

本系列使用 ansible 2.9.27 版本来说明和汇总相关信息。

# cat /etc/system-release
Red Hat Enterprise Linux Server release 7.8 (Maipo)
# 
# uname -a
Linux test01 3.10.0-1160.36.2.el7.x86_64 #1 SMP Wed Jul 21 11:57:15 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
# 
# ansible --version  # ansible版本
ansible 2.9.27
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/home/vipxf/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /bin/ansible
  python version = 2.7.5 (default, Nov 16 2020, 22:23:17) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
# 
# yum info ansible  # 包信息
Loaded plugins: fastestmirror, product-id, search-disabled-repos, subscription-manager
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Loading mirror speeds from cached hostfile
Installed Packages
Name        : ansible
Arch        : noarch
Version     : 2.9.27
Release     : 1.el7
Size        : 103 M
Repo        : installed
Summary     : SSH-based configuration management, deployment, and task execution system
URL         : http://ansible.com
License     : GPLv3+
Description : Ansible is a radically simple model-driven configuration management,
            : multi-node deployment, and remote task execution system. Ansible works
            : over SSH and does not require any software or daemons to be installed
            : on remote nodes. Extension modules can be written in any language and
            : are transferred to managed machines automatically.

#

Ansible

Ansible是自由开源的配置和自动化工具。

主要特点

- 无客户端模式(agentless),无侵入性,只需在主控端部署Ansible环境,被控端无需做任何操作
- 丰富的内置模块满足绝大部分场景需求,调用特定模块可以完成特定任务
- 基于Python研发,支持API及自定义模块,二次开发相对容易
- 默认使用SSH协议和节点进行通信
- 强大的playbook机制,配置语法使用yaml和Jinja模板语言,便于配置管理和实现复杂功能
- 具有幂等性,自动跳过没有变化的部分,也就是一个操作执行一次和多次的结果相同
- 对云计算平台和大数据提供了支持

使用模式

- 结合CMDB:通过CMDB下发指令调用Ansible完成相关操作      
- API调用:远程调用Ansible提供丰富的API接口
- Ad-Hoc命令:直接通过Ad-Hoc命令集执行相关操作,多用于非固化需求、临时性操作和二次开发接口调用的场景
- playbook执行:运行Playbook按序执行任务集

Ansible由控制主机对被管节点的操作方式为 Ad-Hoc 和 Playbook。

  • Ad-Hoc模式使用单个模块,支持批量执行单条命令。
  • Playbook模式是Ansible主要管理方式,Playbook通过多个Task集合完成一类功能,可以简单地把 Playbook理解为通过组合多条Ad-Hoc操作的配置文件。

架构及流程

# Ansible 主要由五部分组成
- Ansible      Ansible核心
- Modules      包括核心模块和自定义模块
- Plugins      插件,对模块功能的补充,包含连接插件、邮件插件等
- Playbooks    剧本,定义任务的配置文件
- Inventory    定义管理主机的清单

# ansible命令执行过程
1. Ansible加载配置文件,默认为/etc/ansible/ansible.cfg
2. Ansible读取Inventory文件(默认为/etc/ansible/hosts),获取管理主机列表及相关变量信息
3. 根据参数调用对应配置和模块,产生临时py文件
4. 通过SSH方式传输到目标主机(默认为~/.ansible/tmp目录)
5. 设置临时py文件的执行权限,执行操作并返回结果
6. 删除临时py文件并退出

基础信息

主要目录

# 配置文件目录
/etc/ansible/
- ansible.cfg  # Ansible 主配置文件
- hosts  # Inventory,定义目标主机清单的文件
- roles  # 角色目录,用于定义角色

# 执行文件目录
/usr/bin/

# Lib库依赖目录
/usr/lib/python2.7/site-packages/ansible

# Help文档目录
/usr/share/doc/ansible-2.9.27/

# Ansible模块目录
/usr/share/ansible/
- collections  # 目录
- plugins      # 插件模块目录
- roles        # 角色模块目录

配置文件

默认Ansible配置文件存放在 /etc/ansible/ansible.cfg

# 常见参数
inventory = /etc/ansible/hosts     # 主机清单inventory文件的位置
library = /usr/share/ansible       # 存放Ansible模块的目录,支持用“:”隔开多个目录
forks = 5                          # 并发连接数,默认为5
remote_port = 22                   # 连接主机节点的端口,默认为22端口,建议修改
host_key_checking = False          # 是否检查SSH主机的密钥,值为True/False
timeout = 60                       # SSH连接的超时时间,单位为秒
log_path = /var/log/ansible.log    # 存储ansible日志的文件(默认不开启)

执行文件

$ ll /usr/bin/*ansible*  # 相关执行文件
lrwxrwxrwx 1 root root    20 Mar 17  2022 /usr/bin/ansible -> /usr/bin/ansible-2.7
lrwxrwxrwx 1 root root    20 Mar 17  2022 /usr/bin/ansible-2 -> /usr/bin/ansible-2.7
-rwxr-xr-x 1 root root  5933 Jan 16  2022 /usr/bin/ansible-2.7
lrwxrwxrwx 1 root root     7 Mar 17  2022 /usr/bin/ansible-config -> ansible
-rwxr-xr-x 1 root root 13432 Jan 16  2022 /usr/bin/ansible-connection
lrwxrwxrwx 1 root root    28 Mar 17  2022 /usr/bin/ansible-console -> /usr/bin/ansible-console-2.7
lrwxrwxrwx 1 root root    28 Mar 17  2022 /usr/bin/ansible-console-2 -> /usr/bin/ansible-console-2.7
lrwxrwxrwx 1 root root     7 Mar 17  2022 /usr/bin/ansible-console-2.7 -> ansible
lrwxrwxrwx 1 root root    24 Mar 17  2022 /usr/bin/ansible-doc -> /usr/bin/ansible-doc-2.7
lrwxrwxrwx 1 root root    24 Mar 17  2022 /usr/bin/ansible-doc-2 -> /usr/bin/ansible-doc-2.7
lrwxrwxrwx 1 root root     7 Mar 17  2022 /usr/bin/ansible-doc-2.7 -> ansible
lrwxrwxrwx 1 root root    27 Mar 17  2022 /usr/bin/ansible-galaxy -> /usr/bin/ansible-galaxy-2.7
lrwxrwxrwx 1 root root    27 Mar 17  2022 /usr/bin/ansible-galaxy-2 -> /usr/bin/ansible-galaxy-2.7
lrwxrwxrwx 1 root root     7 Mar 17  2022 /usr/bin/ansible-galaxy-2.7 -> ansible
lrwxrwxrwx 1 root root     7 Mar 17  2022 /usr/bin/ansible-inventory -> ansible
lrwxrwxrwx 1 root root    29 Mar 17  2022 /usr/bin/ansible-playbook -> /usr/bin/ansible-playbook-2.7
lrwxrwxrwx 1 root root    29 Mar 17  2022 /usr/bin/ansible-playbook-2 -> /usr/bin/ansible-playbook-2.7
lrwxrwxrwx 1 root root     7 Mar 17  2022 /usr/bin/ansible-playbook-2.7 -> ansible
lrwxrwxrwx 1 root root    25 Mar 17  2022 /usr/bin/ansible-pull -> /usr/bin/ansible-pull-2.7
lrwxrwxrwx 1 root root    25 Mar 17  2022 /usr/bin/ansible-pull-2 -> /usr/bin/ansible-pull-2.7
lrwxrwxrwx 1 root root     7 Mar 17  2022 /usr/bin/ansible-pull-2.7 -> ansible
lrwxrwxrwx 1 root root    26 Mar 17  2022 /usr/bin/ansible-vault -> /usr/bin/ansible-vault-2.7
lrwxrwxrwx 1 root root    26 Mar 17  2022 /usr/bin/ansible-vault-2 -> /usr/bin/ansible-vault-2.7
lrwxrwxrwx 1 root root     7 Mar 17  2022 /usr/bin/ansible-vault-2.7 -> ansible
$ 

常见模块

Ansible基于模块工作,本身没有批量部署的能力。
可以理解为Ansilbe提供了框架来运行具备批量部署能力的指定功能模块。

# 通过 ansilbe-doc 命令查看模块帮助信息,类似man命令
ansible-doc -l                  # List available plugins
ansible-doc -l | grep "copy"    # 查找名称包含copy字符的模块
ansible-doc <module_name>       # 显示模块的说明信息
ansible-doc -s <module_name>    # Show playbook snippet for specified plugin(s)


# 常见模块
## command     在指定主机上执行命令(默认模块),不支持变量、管道、重定向等shell特性
## ping        测试指定主机连接性
## shell       在指定主机上执行命令或运行脚本,打开远程主机的shell进程的一个子shell运行命令,支持shell的变量、管道、重定向等特性
## script      调用本地脚本在远程主机执行
## stat        获取文件信息
## setup       主机系统信息,收集facts
## copy        复制文件到远程主机的指定位置
## fetch       复制指定主机的文件到本地
## get_url     在远程主机下载指定的url地址,支持文件校验
## file        设置文件属性
## cron        设置计划任务
## group       管理用户组
## user        管理用户
## service     管理服务状态
## yum         管理程序包
## hostname    管理主机名称

## git         代码及版本管理
## B           后台管理
## assemble    文件组装,可以将多份配置文件组装成一份配置文件
## ini         ini文件管理模块
## url         web请求,发送HTTP协议请求并得到返回的状态码
## apt         APT包管理模块

标签:bin,17,ansible,介绍,概念,Ansible,usr,2022,root
From: https://www.cnblogs.com/anliven/p/16850434.html

相关文章

  • C# 语法分析器(一)语法分析介绍
    系列导航(一)语法分析介绍(二)LR(0)语法分析(三)LALR语法分析(四)二义性文法(五)错误恢复(六)构造语法分析器之前的《C#词法分析器》系列,已经可以构造出一个词法分析器,可以......
  • 图数据挖掘(一):网络的基本概念和表示方法
    最近《复杂网络建模》这门课要考试了,正好也在跟Stanford的《CS224W:MachineLearningWithGraphs》这门课,这里就一边整理笔记一边复习了。1.网络的定义网络(network)是......
  • ansible推送ssh-key
    背景裸机安装完系统后使用手动方式发送ansible机器的ssh-key到其他主机总是不够方便想要找到一种更为简便的方式将key推送到其他主机方案:expect+shell/etc/ansible......
  • ansible练习七
    生成主机文件将一个初始模板文件从http://materials/hosts.j2下载到/home/greg/ansible完成该模板,以便用它生成以下文件:针对每个清单主机包含一行内容,其格式与/etc/......
  • ScheduledExecutorService使用介绍
    JUC包(java.util.concurrent)中提供了对定时任务的支持,即ScheduledExecutorService接口。本文对ScheduledExecutorService的介绍,将基于Timer类使用介绍进行,因此请先阅读......
  • Spring-Task使用介绍
    目前springboot应用广泛,因此对于spring-task直接基于springboot框架介绍,不涉及xml配置。本文直接介绍spring-task的使用方法,涉及的相关基础知识不再赘述,请先阅读Timer和......
  • 【Java】接口的介绍、例子、性质、优点
    文章目录​​接口介绍​​​​接口例子​​​​接口的性质​​​​接口的优点:​​接口介绍接口包括接口声明和接口体,接口体包括常量的定义(必有初值),方法的声明(无方法体,新版J......
  • tqdm的介绍和使用
    Tqdm 是一个快速,可扩展的Python进度条,可以在Python长循环中添加一个进度提示信息,用户只需要封装任意的迭代器tqdm(iterator)。使用pip就可以安装。使用方法一:tqdmt......
  • 保留参数的概念和使用场景
    什么是保留参数(reservedparameter)某些API函数的部分参数要求调用者必须传入指定的固定值,且这些参数名中通常带reserved字样。一般来说,调用者不遵守此约定会导致调用......
  • R机器学习:特征工程与特征选择的介绍
    两个月没更新了,没有其它理由,就是懒惰,间接持续性的懒惰,一直持续了2个月,简直懒惰!!!大家的好多的私信也没回就过期回不了了。请大家批评我!!!。看了很多高深的算法之后,实在是看不......