ansible自动化运维(一)配置主机清单

目录

一、介绍

1.1了解自动化运维

1.2 ansible简介

1.3 ansible自动化运维的优势

1.4 ansible架构图

二、部署ansible

2.1 基本参数

2.2 Ansible帮助命令

2.3 配置主机清单

2.3.1 查看ansible的所有配置文件

2.3.2 /etc/ansible/ansible.cfg常用配置选项

2.3.3 ssh密码登录

2.3.4 Ansible主机清单里还可以定义变量、使用嵌套

​编辑

​编辑

2.3.5 ssh密钥登录


一、介绍

1.1了解自动化运维

我们要了解ansible自动化运维工具,就要先弄明白何为自动化运维。

自动化运维是指将日常运维的、大量的重复性工作自动化,把手工执行的工作,通过梳理分析,进行逻辑分解,借助平台或工具转为自动化操作。自动化是IT运维工作的升华,IT运维自动化不单纯是一个维护过程,更是一个管理的提升过程,是运维的更高层次,也是未来的发展趋势

1.2 ansible简介

Ansible是一款使用Python开发,模块化,依赖于ssh协议实现的自动化统一配置管理工具,自动化主要体现在Ansible集成了丰富模块以及功能组件,可以通过一个命令完成一系列的操作,进而能减少重复性的工作和维护成本,可以提高工作效率。

Ansible官网地址:www.ansible.com

官方文档:Ansible 文档 — Ansible 社区文档

1.3 ansible自动化运维的优势

  1. 可以提高项目的工作效率  ==》可以实现批量执行任务,自动化流程安排。
  2. 减少人为的失误操作  ==》 具有幂等性原则,如当执行一个安装任务时,ansible会先检查是否已安装且版本是否正确,如满足条件,便不会重复安装,避免重复安装导致的额外错误。
  3. 事务留痕  ==》会有具体执行任务的信息,比如执行任务发现服务器异常时,可根据执行记录去查看报错信息。
  4. 运维工作更加灵活  ==》 ansible默认情况是无代理模式的,这就意味着它不需要额外的代理程序,只需要服务器支持ssh(这对大部分linux服务器来说是满足的)
  5. 可以跨平台管理  ==》 ansible能够管理不同的操作系统,如linux,windows等等
  6. 方便信息的传递  ==》 ansible是允许定义变量和使用模板的,可以灵活地根据不同环境(如开发环境、测试环境、生产环境)传递相应的配置参数信息。

1.4 ansible架构图

 

1、主机清单Inventory:定义Ansible需要操作被控端主机的范围

2、剧本Playbook :Ansible的配置文件,将多个任务定义在剧本中,由ansible自动执行

3、核心模块Core Modules:连接主机实现操作, 它依赖于具体的模块来做具体的事情

4、扩展模块Custom Modules:根据自己的需求编写具体的模块

5.插件Plugins:对模块功能的补充,如连接插件Connection Plugins:用于连接主机 用来连接被控端,还有查找插件、模块实用插件、回调插件等。

最重要的一点是:Ansible是模块化的,它所有的操作都依赖于模块。

二、部署ansible

# 先拉取epel扩展源

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

# 更新yum源

yum makecache fast

# 安装Ansible

yum -y install ansible

# 查看Ansible版本

[root@localhost ~]# ansible --version

ansible 2.9.27

  config file = /etc/ansible/ansible.cfg

  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']

  ansible python module location = /usr/lib/python2.7/site-packages/ansible

  executable location = /usr/bin/ansible

  python version = 2.7.5 (default, Aug  7 2019, 00:51:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
  1. 2.1 基本参数

其实最常用的莫过于-m,-a 和验证语法错误

-m          #指定使用的模块名称,不指定默认使用command模块

-a          #使用的模块参数,模块的具体动作;指定要执行的具体命令

--syntax-check      #验证语法

--version   #ansible版本信息

-v          #显示详细信息

-i          #主机清单文件路径,默认是在/etc/ansible/hosts

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

-C          #模拟执行测试,但不会真的执行

-T          #执行命令的超时

-f            #一次返回几个结果

  1. 2.2 Ansible帮助命令

ansible –help   #查询更多的参数命令

ansible-doc           #帮助命令

ansible-doc -l      #列出所以的模块

ansible-doc 模块名   #查看模块的详细信息

ansible-doc 模块名 -s  #查看模块的选项使用说明

2.3 配置主机清单

主机清单,用于定义被管理主机的认证信息, 例如被管理主机的主机名或IP地址、ssh登录用户名、密码以及key相关信息。

2.3.1 查看ansible的所有配置文件

[root@web01 ~]# rpm -qc ansible

/etc/ansible/ansible.cfg

/etc/ansible/hosts

2.3.2 /etc/ansible/ansible.cfg常用配置选项

[defaults]

#inventory      = /etc/ansible/hosts      #主机列表配置文件

#library        = /usr/share/my_modules/  #库文件存放目录

#remote_tmp     = ~/.ansible/tmp          #临时py文件存放在远程主机目录

#local_tmp      = ~/.ansible/tmp          #本机的临时执行目录

#forks          = 5                       #默认并发数

#sudo_user      = root                    #默认sudo用户

#ask_sudo_pass = True                     #每次执行是否询问sudo的ssh密码

#ask_pass      = True                     #每次执行是否询问ssh密码

#remote_port    = 22                      #远程主机端口

host_key_checking = False                 #跳过检查主机指纹

log_path = /var/log/ansible.log           #ansible日志

host_key_checking = False    当使用密码登录时需要配置此项不然会报错

因为ansible是通过ssh对被管理主机建立连接,所以他的登录方式也就是ssh的登陆方式

分为密码登录,密钥登录(公钥、私钥)

2.3.3 ssh密码登录

此方式没有密钥登录安全

密码登录可将密码,用户等信息直接放在主机清单里,在/etc/ansible/hosts中配置

[web01]

192.168.143.161 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=050801

# [web01]是用户组,可以在里面配置多个ip,后续对组进行操作时可对里面所有ip进行操作

[web02]

192.168.143.162 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=050801

~

Ansible执行命令返回的四种颜色

黄色:执行命令成功,并且做了修改;

绿色:执行命令成功,只查看信息,没有修改

红色:执行失败,报错

紫色:表示对命令发错的操作有警告信息

测试是否成功

2.3.4 Ansible主机清单里还可以定义变量、使用嵌套

语法格式:嵌套 [组名:children]

本身web_group里没有任何主机,但使用嵌套把web01,web02都赋予给了web_group

对组定义变量 [组名:vars]

2.3.5 ssh密钥登录

除了使用密码连接,还可以用密钥连接,实现免密登录。这时就不需要为在主机清单中指定密码了。

Ssh加密使用的是非对称算法,即公钥用于加密,私钥用于解密

实现操作:

生成密钥对

[root@web01 ~]# ssh-keygen

密钥存放位置

推送公钥到远程服务器上

[root@web01 ssh]# ssh-copy-id 192.168.143.162

 尝试登录看看是否需要密码

[root@web01 ssh]# ssh 192.168.143.162

Last failed login: Mon Dec  2 14:00:04 CST 2024 from 192.168.143.161 on ssh:notty

There were 2 failed login attempts since the last successful login.

Last login: Mon Dec  2 09:16:21 2024 from 192.168.143.1

[root@web02 ~]#

此时配置主机清单便不需要密码了。

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

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

相关文章

计算机网络 —— HTTP 协议(详解)

前一篇文章:网页版五子棋—— WebSocket 协议_网页可以实现websocket吗-CSDN博客 目录 前言 一、HTTP 协议简介 二、HTTP 协议格式 1.抓包工具的使用 2.抓包工具的原理 3.抓包结果 4.HTTP协议格式总结 三、HTTP 请求 1. URL (1)UR…

GaussDB的BTree索引和UBTree索引

目录 一、简介 二、BTree索引和UBTree索引结构 三、BTree索引和UBTree索引优势 四、总结与展望 一、简介 数据库通常使用索引来提高业务查询的速度。本文将深入介绍GaussDB中最常用的两种索引:BTree索引和UBTree索引。我们将重点解读BTree索引和UBTree索引的存储…

通义灵码走进北京大学创新课堂丨阿里云云原生 10 月产品月报

云原生月度动态 云原生是企业数字创新的最短路径。 《阿里云云原生每月动态》,从趋势热点、产品新功能、服务客户、开源与开发者动态等方面,为企业提供数字化的路径与指南。 趋势热点 🥇 通义灵码走进北京大学创新课堂,与 400…

python 练习题

目录 1,输入三个整数,按升序输出 2,输入年份及1-12月份,判断月份属于大月,小月,闰月,平月,并输出本月天数 3,输入一个整数,显示其所有是素数因子 4&#…

IDEA 2024 配置Maven

Step 1:确定下载Apache Maven版本 在IDEA 2024中,随便新建一个Maven项目; 在File下拉菜单栏中,找到Setings; 在Build,Execution,Deployment中找到Maven 确定下载的Apache Maven版本应略低于或等于IDEA绑…

ubuntu20.04更换安装高版本CUDA以及多个CUDA版本管理

Ubuntu 20.04下多版本CUDA的安装与切换 CUDA安装配置环境变量软连接附上参考博客CUDA安装 cuda官方下载地址 因为我需要安装的是11.1版本的,所以这里按着11.1举例安装 安装命令如下: wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cu…

Web基础

实践目标 (1)Web前端HTML(2)Web前端javascipt(3)Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表(4)Web后端&#xff1a…

C++:unordered_map与unordered_set详解

文章目录 前言一、KeyOfT1. 为什么需要仿函数?2. MapKeyOfT与SetKeyOfT代码实现 二、迭代器1. 设计背景2. 为什么需要存储哈希表指针3. operator 的逻辑4. begin() 和 end() 的实现5. 友元和前置声明的作用6. 完整代码 三、迭代器map与set的复用1. map的复用&#x…

redis下载、基础数据类型、操作讲解说明,持久化、springboot整合等

1 Redis是什么 官网:https://redis.io 开发者:Antirez Redis诞生于2009年全称是Remote Dictionary Server 远程词典服务器,是一个基于内存的键值型NoSQL数据库。 Redis是一个开源的、高性能的键值对存储系统,它支持多种数据结构&…

《 C++ 修炼全景指南:二十五 》缓存系统的技术奥秘:LRU 原理、代码实现与未来趋势

摘要 本篇博客深入解析了 LRU(Least Recently Used)缓存机制,包括其核心原理、代码实现、优化策略和实际应用等方面。通过结合双向链表与哈希表,LRU 缓存实现了高效的数据插入、查找与删除操作。文章还对 LRU 的优化方案进行了详…

【k8s】给ServiceAccount 创建关联的 Secrets

说明 k8s v1.24.0 更新之后进行创建 ServiceAccount 不会自动生成 Secret 需要对其手动创建. 创建步骤 创建SA apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata:namespace: jtkjdevname: gitcicd-role rules: - apiGroups: ["apps"]resources: [&…

C++(4个类型转换)

1. C语言中的类型转换 1. 隐式 类型转换: 具有相近的类型才能进行互相转换,如:int,char,double都表示数值。 2. 强制类型转换:能隐式类型转换就能强制类型转换,隐式类型之间的转换类型强相关,强制类型转换…

Linux——命名管道及日志

linux——进程间通信及管道的应用场景-CSDN博客 文章目录 目录 文章目录 前言 一、命名管道是什么? 理解: 2、编写代码 makefile 管道封装成类,想用中管道时只需要调用实例化 读端 写端 日志 1、日志是什么? 2、日志有什么&#x…

动态代理如何加强安全性

在当今这个信息爆炸、网络无孔不入的时代,我们的每一次点击、每一次浏览都可能留下痕迹,成为潜在的安全隐患。如何在享受网络便利的同时,有效保护自己的隐私和信息安全,成为了每位网络使用者必须面对的重要课题。动态代理服务器&a…

5G学习笔记之随机接入

目录 1. 概述 2. MSG1 2.1 选择SSB 2.2 选择Preamble Index 2.3 选择发送Preamble的时频资源 2.4 确定RA-RNTI 2.5 确定发送功率 3. MSG2 4. MSG3 5. MSG4 6. 其它 6.1 切换中的随机接入 6.2 SI请求的随机接入 6.3 通过PDCCH order重新建立同步 1. 概述 随机接入…

《DSL-FIQA》论文翻译

《DSL-FIQA: Assessing Facial Image Quality Via Dual-Set Degradation Learning and Landmark-Guided Transformer》 原文链接:DSL-FIQA: Assessing Facial Image Quality via Dual-Set Degradation Learning and Landmark-Guided Transformer | IEEE Conference…

Redis实现限量优惠券的秒杀

核心&#xff1a;避免超卖问题&#xff0c;保证一人一单 业务逻辑 代码步骤分析 全部代码 Service public class VoucherOrderServiceImpl extends ServiceImpl<VoucherOrderMapper, VoucherOrder> implements IVoucherOrderService {Resourceprivate ISeckillVoucher…

STL算法之其它算法_中

目录 lower_bound(应用于有序区间) upper_bound&#xff08;应用于有序区间&#xff09; binary_search&#xff08;应用于有序区间&#xff09; next_permutation prev_permutation lower_bound(应用于有序区间) 这是二分查找(binary search)的一种版本&#xff0c;试图在…

Windows下从命令行(Powershell/CMD)发送内容到系统通知中心

Windows下从命令行&#xff08;Powershell/CMD&#xff09;发送内容到系统通知中心 01 前言 在平时写脚本的时候&#xff0c;将日志等信息直接输出到控制台固然是最直接的&#xff0c;而如果是一些后台执行的任务&#xff0c;不需要时刻关注运行细节但是又想知道一些大致的情…

计算机的错误计算(一百七十二)

摘要 探讨 MATLAB 对于算式 的计算误差。 例1. 在 MATLAB 中计算 的值。 直接贴图吧&#xff1a; 这样&#xff0c;MATLAB 的输出中只有3位正确数字&#xff0c;有效数字的错误率为 (16-3)/16 81.25% . 因为16位的正确输出为 0.2971242332737277e-18&#xff08;ISReals…