Ansible 简介安装

1、概念介绍

Ansible 是一款为类 Unix 系统开发的自由开源的配置和自动化工具。由 Red Hat 公司使用 python 研发,类似于 saltstack 和 Puppet,但是有一个不同和优点是我们不需要在节点中安装任何客户端。它使用 SSH 来和节点进行通信。Ansible 基于 Python paramiko 开发,分布式,无需客户端,轻量级,配置语法使用 YMAL 及 Jinja2 模板语言,更强的远程命令执行操作。

Ansible 特点

部署简单,只在管理端部署 Ansible 环境(ssh 和 python 2.5 以上版本),被管理端无需做操作

默认使用 SSH 协议对设备进行管理

易读的语法,基于 yaml 语法编写 playbook

模块化设计,调用特定的模块来完成特定任务

基于 Python 语言实现,由 Paramiko(python 的一个可并发连接 ssh 主机功能库), PyYAML 和 Jinja2(模板化)三个关键模块实现。支持 API(供第三方程序调用的应用程序编程接口)及自定义模块,可通过 Python 轻松扩展

支持playbook 剧本,连续任务按先后设置顺序完成。通过Playbooks定制强大的配置、状态管理

幂等性,一个任务执行一遍和执行 n 遍效果一样,不会因为重复执行带来意外情况。意味着在同一台服务器上多次执行同一个 playbook 是安全的

对云计算平台、大数据都有很好的支持;

Ansible 基本架构

ansible 系统由管理节点和被管理节点组成,Ansible 在管理节点将 Ansible 模块通过 SSH 协议推送到被管理端执行,执行完之后自动删除,可以使用 SVN、GIT 等来管理自定义模块及编排。

由上面的图可以看到 Ansible 的组成由 5 个部分组成:

Ansible: ansible 的核心程序

Modules:包括 Ansible 自带的核心模块及自定义模块。

  • Core Modules:Ansible 执行任何管理任务都不是由 Ansible 自己完成,而是由核心 模块完成;Ansible 管理主机之前,先调用 core Modules 中的模块,然后指明管理Host Inventory 中的主机,就可以完成管理主机。
  • Custom Modules:自定义模块,完成 Ansible 核心模块无法完成的功能,此模块支持任何语言编写。

Plugins:模块功能补充,通过插件来实现记录日志,发送邮件或其他功能。 Connection Plugins:连接插件, ansible 基于连接插件连接到各个主机上,默认是使用 ssh。

Playbooks:剧本,YAML 格式文件。多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能定义,即实现自动化部署文件。

Inventory: 记录由 Ansible 管理的主机信息,包括端口、密码、ip 等。

Ansible 任务执行方式

ad-hoc

即 ansible 命令,命令行界面,单条命令的批量执行,称之为 ad-hoc。 这种方式,主要用来进行功能测试,或者是简单的应用部署。

playbook

Playbook 方式(剧本方式),从字面意思就可以知道,我们的剧本方式是提前设置好内容,进行剧本的演示。Playbook 方式适用于大型自动化部署应用。

即把多个想要执行的任务放到一个 playbook 中,当然多个任务在事物逻辑上最好是有上下联系的。通过多个任务可以完成一个总体的目标,这就是 playbook。

2、安装配置

主机

IP

角色

安装软件

node_04

192.168.137.104

Ansible 服务端

Ansible

node_05

192.168.137.105

node_06

192.168.137.106

安装 Ansible
# 配置阿里网络源 
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#  配置 epel 源:Ansible 软件默认不在 yum 仓库中,因此我们需要配置 epel 仓库
yum install -y epel-release

# 安装 absible 
yum install -y ansible
配置文件说明

通过 rpm -ql ansible 可以看到很多文件,主要是配置文件和可执行文件,以及所依赖的 python 库文件。

/etc/ansible/ansible.cfg

Ansible 主配置文件,这个文件主要定义了 roles_path 路径,主机清单路径,连接清单中的主机方式等配置,这些大部的默认配置已经足够我们平时使用,如需要特别配置可以自行去修改。

/etc/ansible/hosts

主机清单文件,这个配置文件就是默认主机清单配置文件,可通过 ansible.cfg 重新定义

ansible 主执行程序,一般用于命令行下执行

ansible-playbook 执行 playbook 中的任务

ansible-doc 获取各模块的帮助信息

# 配置主机清单,文件 /etc/ansible/hosts 维护着 Ansible 中服务器的清单。在文件最后追加以下内容
vim /etc/ansible/hosts 
----------------------------------------------------------------------
[web_servers] 
192.168.137.105 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456
----------------------------------------------------------------------

# 测试主机连通性
ansible -i /etc/ansible/hosts web-servers -m ping

注意:模块组只能使用字母、数字、下划线,且字母不能开头

SSH 秘钥访问

一般来说,使用明文密码不安全,所以增加主机无密码访问。在 Ansible 服务端生成密钥,并且复制公钥到节点中。

[root@node_04 ~] ssh-keygen
ssh-copy-id root@192.168.1.12 
ssh-copy-id root@192.168.1.13

#  修改 web_servers 为以下内容
vim /etc/ansible/hosts
[web_servers] 
192.168.137.105 
192.168.137.106


# ping 模块检查网络连通性,command 模块执行 shell 命令
# command:作为 ansible 的默认模块,可以运行远程权限范围内的所有 shell 命令
ansible -i /etc/ansible/hosts web-servers -m ping

注意 ansible web_servers -m ping如果不指定配置文件,默认使用/etc/ansible/hosts 文件

3、Ansible 命令

语法格式:ansible [-i 主机文件] [-f 批次] [组名] [-m 模块名称] [-a 模块参数]

选项

说明

-v,–verbose

详细模式,如果命令执行成功,输出详细的结果 (-vv –vvv -vvvv)

-i PATH, -inventory=PATH

指定 host 文件的路径,默认是在 /etc/ansible/hosts

f NUM,-forks=NUM

NUM 是指定一个整数,默认是 5 ,指定 fork 开启 同步进程的个数。

-m NAME,-module-name=NAME

指定使用的 module 名称,默认使用 command 模块

-a,MODULE_ARGS

指定 module 模块的参数

-s,--sudo (旧) -b, --become(新)

远程执行命令时使用 sudo 方式,相当于 Linux 系统下的 sudo 命令。

-U SUDO_USERNAME(旧) --become-user(新)

sudo 到哪个用户,默认为 root

-K,-ask-sudo-pass

提示输入 sudo 密码,与 -sudo 一起使用

-u USERNAME,-user=USERNAME

指定移动端的执行用户

-k,-ask-pass

提示输入 ssh 的密码,而不是使用基于 ssh 的密钥认证

-C,-check

测试此命令执行会改变什么内容,不会真正的去执行

ansible 基于 ssh 连接 -i (inventory)参数后指定的远程主机时,也可以写端口,用户,密码。

检查节点运行时间
# 检查 Ansible 节点的运行时间 
ansible web_servers -m command -a uptime

给节点增加新用户
# 给节点增加用户 
ansible web_servers -m command -a "useradd user1"

ansible web_servers -m command -a "id user1"

# 给新增的节点用户设置密码
ansible web_servers -m shell -a "echo 'user1:123456' | chpasswd "
将输出重定向本机
# 将 df 命令在所有节点执行后,重定向输出到本机的/tmp/command-output.txt 文件中 
ansible -m command -a "df -Th" 'web-servers' > /tmp/command-output.txt 

cat /tmp/command-output.txt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/413450.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

信号系统之FFT卷积

1 Overlap-Add 方法 在许多 DSP 应用中,长信号必须分段过滤。例如,高保真数字音频需要大约 5 MB/min 的数据速率,而数字视频需要大约 500 MB/min 的数据速率。在数据速率如此之高的情况下,计算机通常没有足够的内存来同时保存要处…

【程序员英语】【美语从头学】初级篇(入门)(笔记)Lesson 16 At the Shoe Store 在鞋店

《美语从头学初级入门篇》 注意:被 删除线 划掉的不一定不正确,只是不是标准答案。 文章目录 Lesson 16 At the Shoe Store 在鞋店对话A对话B笔记会话A会话B替换 Lesson 16 At the Shoe Store 在鞋店 对话A A: Do you have these shoes in size 8? B:…

SQLlabs46关

看看源码 最终我们的id是放到order by后面了 如果我们直接用列去排序 ?sortusername/password username: passward 可以看到顺序是不同的,当然第一列第二列第三列也可以,基本上都是这个原理,那怎么去实现注入呢,我…

Qt程序设计-钟表自定义控件实例

本文讲解Qt钟表自定义控件实例。 效果如下: 创建钟表类 #ifndef TIMEPIECE_H #define TIMEPIECE_H#include <QWidget> #include <QPropertyAnimation> #include <QDebug> #include <QPainter> #include <QtMath>#include <QTimer>#incl…

leetcode hot100 买卖股票的最佳时机1

本题之前采用贪心算法来解决&#xff0c;现在可以采用动态规划来解决&#xff0c;通过dp数组记录每次的状态从而获取到最大的利润。 这里dp数组定义为二维数组 dp[price.length][2]&#xff0c;其中price.length表示第i天&#xff0c;[2]其中有0/1两种状态&#xff0c;[0]表示…

设计模式(五)-观察者模式

前言 实际业务开发过程中&#xff0c;业务逻辑可能非常复杂&#xff0c;核心业务 N 个子业务。如果都放到一块儿去做&#xff0c;代码可能会很长&#xff0c;耦合度不断攀升&#xff0c;维护起来也麻烦&#xff0c;甚至头疼。还有一些业务场景不需要在一次请求中同步完成&…

【LeetCode】【滑动窗口长度不固定】978 最长湍流子数组

1794.【软件认证】最长的指定瑕疵度的元音子串 这个例题&#xff0c;是滑动窗口中长度不定求最大的题目&#xff0c;在看题之前可以先看一下【leetcode每日一题】【滑动窗口长度不固定】案例。 题目描述 定义&#xff1a;开头和结尾都是元音字母&#xff08;aeiouAEIOU&…

python 基础知识点(蓝桥杯python科目个人复习计划51)

今日复习计划&#xff1a;做复习题 例题1&#xff1a;大石头的搬运工 问题描述&#xff1a; 在一款名为“大石头的搬运工”的游戏中&#xff0c;玩家需要 操作一排n堆石头&#xff0c;进行n - 1轮游戏。 每一轮&#xff0c;玩家可以选择一堆石头&#xff0c;并将其移动到任…

【自然语言处理四-从矩阵操作角度看 自注意self attention】

自然语言处理四-从矩阵操作角度看 自注意self attention 从矩阵角度看self attention获取Q K V矩阵注意力分数softmax注意力的输出再来分析整体的attention的矩阵操作过程从矩阵操作角度看&#xff0c;self attention如何解决问题的&#xff1f;W^q^ W^k^ W^v^这三个矩阵怎么获…

安装使用zookeeper

先去官网下载zookeeper&#xff1a;Apache ZooKeeper 直接进入bin目录&#xff0c;使用powerShell打开。 输入: ./zkServer.cmd 命令&#xff0c;启动zookeeper。 zookeeper一般需要配合Dubbo一起使用&#xff0c;作为注册中心使用&#xff0c;可以参考另一篇博客&#xf…

从零开始掌握Docek的基础知识与应用技巧

目录 前言 一.docekr简介 二.docker的环境搭建 查看内核 更新yum源为最新 ​编辑 安装Docker所需要的工具包 设置yum源 下载docker ​编辑 启动Docker并且设置开机自启动 配置镜像仓库 三.docker命令 1.基本命令 2.常用命令 3.docker容器常用命令 Docker创建并启动…

Java中使用Graphics2D实现图片添加文字/图片水印

场景 java实现给图片添加水印实现步骤&#xff1a; 获取原图片对象信息&#xff08;本地图片或网络图片&#xff09; 添加水印&#xff08;设置水印颜色、字体、坐标等&#xff09; 处理输出目标图片。 注&#xff1a; 博客&#xff1a;霸道流氓气质-CSDN博客 实现 1、…

Parquet 文件生成和读取

文章目录 一、什么是 Parquet二、实现 Java 读写 Parquet 的流程方式一&#xff1a;遇到的坑&#xff1a;坑1&#xff1a;ClassNotFoundException: com.fasterxml.jackson.annotation.JsonMerge坑2&#xff1a;No FileSystem for scheme "file"坑3&#xff1a;与 spa…

020—pandas 根据历史高考分段推断当前位次的分数

前言 每年各省都会公布高考「一分一段」表&#xff0c;它是是以「一分」为单位&#xff0c;统计考得该分数的考生人数和累计人数&#xff0c;每一个分数段上有多少人一目了然。考生通过分数分布表可以查询到相关成绩在全市的排名位次&#xff0c;方便对自己进行定位。本例中&a…

嵌入式学习 Day 25

1.线程分离属性: 线程结束后,自动回收线程空间 pthread_attr_init int pthread_attr_init(pthread_attr_t *attr); 功能: 线程属性初始化 pthread_attr_destroy int pthread_attr_destroy(pthread_attr_t *attr); 功能: 线程属性销毁 pthread_attr…

计算机网络实验一 ENSP模拟器使用

实验一 eNSP模拟器的使用 学习目标&#xff1a; 1&#xff09;掌握eNSP模拟器的基本设置方法 2&#xff09;掌握使用eNSP搭建简单的端到端&#xff08;主机&#xff09;网络的方法 3&#xff09;掌握在eNSP中使用wireshark捕获IP报文的方法 4&#xff09;掌握设备的基本配置方…

内网穿透的应用-如何在群晖配置WebDAV实现云同步Zotero科研文献与笔记【内网穿透】

文章目录 前言1. Docker 部署 Trfɪk2. 本地访问traefik测试3. Linux 安装cpolar4. 配置Traefik公网访问地址5. 公网远程访问Traefik6. 固定Traefik公网地址 前言 Trfɪk 是一个云原生的新型的 HTTP 反向代理、负载均衡软件&#xff0c;能轻易的部署微服务。它支持多种后端 (D…

C++基础知识(四:类的学习)

类 类指的就是对同一类对象&#xff0c;把所有的属性都封装起来&#xff0c;你也可以把类看成一个高级版的结构体。 【1】定义 class 类名 { 访问权限:成员属性; 访问权限:成员方法; }访问权限&#xff1a; public:共有的&#xff0c;类内、类外和子类中都可以访问 private:私有…

运维的利器–监控–zabbix–grafana

运维的利器–监控–zabbix–grafana 一、介绍 Grafana 是一个跨平台的开源的度量分析和可视化工具 , 可以通过将采集的数据查询然后可视化的展示 。zabbix可以作为数据源&#xff0c;为grafana提供数据&#xff0c;然后grafana将数据以图表或者其他形式展示出来。zabbix和gra…

AI:142-开发一种智能家居系统,通过语音识别和情感分析实现智能互动

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带关键代码,详细讲解供大家学习,希望…
最新文章