Ansible安装基本原理及操作(初识)

news/2024/10/19 15:25:49/

作者主页:点击! 

Ansible专栏:点击!

创作时间:2024年4月23日15点18分


Ansible 是一款功能强大且易于使用的IT自动化工具,可用于配置管理、应用程序部署和云端管理。它使用无代理模式(agentless mode)来完成任务,这意味着您无需在目标主机上安装任何额外的软件。Ansible 通过 SSH 连接到目标主机并执行任务。

什么是无代理模式?

Ansible 的无代理模式是一种无需在目标主机上安装任何额外软件的管理方式。与传统的基于代理的配置管理工具不同,Ansible 通过 SSH 连接到目标主机并执行任务。

Ansible 的工作原理

可以概括为以下几个步骤:

  1. 解析 Playbook:Ansible 首先会解析 Playbook 文件,其中定义了要执行的任务列表。Playbook 使用 YAML 编写,YAML 是一种易于阅读和编写的语言。
  2. 建立连接:Ansible 会使用 SSH 连接到目标主机。连接信息在主机清单中定义,主机清单是一个 YAML 文件,其中包含了主机及其相关信息。
  3. 执行任务:Ansible 会根据 Playbook 中的任务列表逐个执行任务。每个任务都使用 Ansible 模块来完成,Ansible 模块是用于执行特定任务的代码块。
  4. 处理结果:Ansible 会处理任务的执行结果,并根据需要进行后续操作。

Ansible 的核心组件

Ansible 的核心组件包括:

Playbook:Playbook 是 Ansible 中用于定义任务列表的文件。Playbook 使用 YAML 编写。

模块:模块是 Ansible 中用于执行特定任务的代码块。Ansible 提供了大量的内置模块,还可以创建自定义模块。

主机清单:主机清单是 Ansible 中用于定义要管理的主机组的文件。主机清单是一个 YAML 文件,其中包含了主机及其相关信息。

变量:变量用于存储和传递数据。Ansible 支持多种类型的变量,包括事实变量、inventory 变量、Playbook 变量和角色变量。

模板:模板用于生成配置文件和其他文本文件。Ansible 使用 Jinja2 模板引擎。

角色:角色是 Ansible 中用于组织任务和变量的集合。角色可以用于共享代码和提高代码的可重用性。

Ansible 的优势

Ansible 具有以下优势:

易于使用:Ansible 使用 YAML 编写,YAML 是一种易于阅读和编写的语言。

功能强大:Ansible 可用于执行各种任务,并且可以扩展以满足新的需求。

无代理:Ansible 不需要在目标主机上安装任何额外的软件。

开源:Ansible 是开源的,这意味着它是免费的并且可以自由修改和分发。

1.安装教程

1.首先第一步配置网络源(需要扩展包)

我之前写过配置源的文章:
配置方法icon-default.png?t=N7T8http://t.csdnimg.cn/uQI7c

[root@localhost ~]# yum install -y ansible

安装完成之后查看是否成功

rpm -ql ansible	列出他的所有相关文件rpm -qc ansible	列出配置文件ansible-doc -l	 查看它的所有模块

安装完成之后我们来做一个小测试带大家理解ansible

2实验

以下实验环境

3台Centos7

1台用于部署ansible服务器

2台用来被控制(其中一台免密登录,一台需用账户和密码登录)

主机名映射

[root@ansible ~]# vim /etc/hosts

1.设置ssh-key

SSH密钥(Secure Shell key)是SSH(Secure Shell)协议中用于身份验证的凭证。与传统的基于密码的身份验证相比,它提供了一种更安全的方式连接到远程服务器。

[root@localhost ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
47:b6:e3:55:27:5c:8f:93:03:be:fc:87:28:a8:6d:cc root@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
|            .   .|
|           . o +.|
|          o . O o|
|         o o o = |
|        S + +    |
|         + o o . |
|       o. o . o .|
|       oE  .   . |
|      ...        |
+-----------------+

查看是否成功

[root@localhost ~]# ls .ssh/
id_rsa  id_rsa.pub
[root@localhost ~]# ssh-copy-id 192.168.93.112
The authenticity of host '192.168.93.112 (192.168.93.112)' can't be established.
ECDSA key fingerprint is e8:64:5f:06:f8:8c:63:6d:c9:eb:73:7d:78:d5:93:2b.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.93.112's password: Number of key(s) added: 1Now try logging into the machine, with:   "ssh '192.168.93.112'"
and check to make sure that only the key(s) you wanted were added.

 ssh-copy-id 192.168.93.112

尝试在本地计算机和 IP 地址为 192.168.93.112 的服务器之间设置基于 SSH 密钥的身份验证。这样您就无需在每次使用 SSH 连接到服务器时输入密码。

2.定义主机清单
[root@localhost ~]# vim /etc/ansible/hosts 

在配置文件的最后一行加入如下配置

3.测试连通性
免密登录

ping的结果显示绿色就是成功的

[root@localhost ~]# ansible localhost -m ping	对本机进行测试
localhost | SUCCESS => {"changed": false, "ping": "pong"
}
[root@localhost ~]# ansible host1 -m ping		对host1进行测试The authenticity of host 'host1 (192.168.93.112)' can't be established.
ECDSA key fingerprint is e8:64:5f:06:f8:8c:63:6d:c9:eb:73:7d:78:d5:93:2b.
Are you sure you want to continue connecting (yes/no)? yes
host1 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},    "changed": false, "ping": "pong"

简洁化显示

[root@localhost ~]# ansible host1 -m ping -o
host1 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"}
  • ansible :这是 Ansible 命令行工具。
  • host1 :指定要 ping 的目标计算机的主机名或 IP 地址。
  • -m ping :此选项告诉 Ansible 使用 ping 模块,该模块尝试 ping 目标主机。
  • -o选项简化输出
用户名密码登录
[root@localhost ~]# ansible host2 -m ping -o -u root -k
  • host2 :这是 Ansible 将定位的主机或主机组的名称。在本例中,它是一个名为 host2 的主机。
  • -m ping :这指定您要使用 ping 模块。 ping 模块通常用作测试主机连接的简单方法。
  • -o :此标志告诉 Ansible 仅运行 playbook 一次。它对于 ping 模块不是必需的,但在其他上下文中可能很有用。
  • -u root :指定连接到目标主机时要使用的远程用户。在本例中,它是 root
  • -k :此标志告诉 Ansible 提示输入 SSH 密码。如果您尚未设置 SSH 密钥以进行无密码身份验证,这会非常有用。

出现报错的情况下

host2 | FAILED! => {"msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this.  Please add this host's fingerprint to your known_hosts file to manage this host."
}

解决办法

这个时候需要登录一次 再使用上边的命令才可以成功(因为你的密码自动输出给yes/no的选项中)

[root@localhost ~]# ansible host2 -m ping 
The authenticity of host 'host2 (192.168.93.113)' can't be established.
ECDSA key fingerprint is e8:64:5f:06:f8:8c:63:6d:c9:eb:73:7d:78:d5:93:2b.
Are you sure you want to continue connecting (yes/no)? yes
host2 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}

一并输出

[root@localhost ~]# ansible all -m ping -o

all :这是 Ansible 中的特殊关键字,指您库存中的所有主机。

这边报错正常的因为 host2没有设置免密登录需要账号密码来登录


http://www.ppmy.cn/news/1438384.html

相关文章

关于MCU核心板的一些常见问题

BGA植球与焊接(多涂焊油): 【BGA芯片是真麻烦,主要是植锡珠太麻烦了,拆一次就得重新植】https://www.bilibili.com/video/BV1vW4y1w7oNvd_source3cc3c07b09206097d0d8b0aefdf07958 / NC电容一般有两种含义&#xff1…

ubuntu中可以查看照片的程序

ubuntu中可以查看照片的程序 在Ubuntu中,您可以使用多种图片查看器来查看照片。以下是几个常用的图片查看器: GIMP GIMP是一个免费的开源图片编辑器,它也可以用来查看和打印图片。 安装命令: sudo apt-get update sudo apt-ge…

Recommended Azure Monitors

General This document describes the recommended Azure monitors which can be implemented in Azure cloud application subscriptions. SMT incident priority mapping The priority “Blocker” is mostly used by Developers to prioritize their tasks and its not a…

安卓手机连接电脑实用技巧:实现文件传输与共享

在手机使用过程中,我们常常需要将手机中的文件传输到电脑,或者将手机与电脑进行共享。为了实现这一需求,掌握一些实用的安卓手机连接电脑技巧就显得尤为重要。本文将为您详细介绍2种简单、高效且安全的方法,让您轻松实现安卓手机与…

『FPGA通信接口』串行通信接口-IIC(2)EEPROM读写控制器

文章目录 1.EEPROM简介2.AT24C04简介3.逻辑框架设计4.随机读写时序5.仿真代码与仿真结果分析6.注意事项7.效果8.传送门 1.EEPROM简介 EEPROM (Electrically Erasable Programmable read only memory) 是指带电可擦可编程只读存储器。是一种掉电后数据不丢失的存储芯片。在嵌入…

去年十八,初识Java 2

我的Python和PHP是怎么学的?是直接写项目,在项目中学的。 不过…这招到 java 里好像不好使了QAQ 零、前置基础 1、类的继承 在 Java 中,extends 用于创建类的继承关系。当一个类继承另一个类时,它会获得父类的属性和方法&…

lettcode1005.k次取反后最大的数组和

题目描述: 给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组: 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。 以这种方式修改数组后,返回数组 可能的最大…

平衡小车的控制算法--结合自动控制原理学习

单纯的去看自控原理,很多概念有点抽象,最好找些应用去理解相关的概念,就找了实验室的一个平衡小车作为应用,不过主要根据小车去跑matlab去验证一些控制算法。结合台湾国立交通大学林沛群的自控线上课的总结 一、自控原理重要概念 …