Ansible01-Ansible的概述、实验环境初始化、Inventory

news2024/11/24 9:44:50

目录

  • 写在前面
  • 1. Ansible是什么
    • 1.1 简介与来历
    • 1.2 Ansible的特点
    • 1.3Ansible的架构与工作流程
      • 1.3.1 ansible 任务执行模式
      • 1.3.2 ansible 执行流程
      • 1.4 Ansible的模块
  • 2. Ansible实验初始化
    • 2.1 实验环境
    • 2.2Ansible的安装
      • 2.2.1 Ansible的程序结构
    • 2.3 修改Ansible配置文件
      • 2.3.1 配置文件中常见参数
    • 2.4 Ansible的命令参数
  • 3. Ansible Inventory 主机清单文件
    • 3.1 设置Inventory
      • 3.2.1 子组
      • 3.2.2 指定ansible用户、密码、端口(不推荐)

写在前面

在ansible部分,决定以多篇文章的方式进行记录。写成一篇太累太费时太费脑TuT

1. Ansible是什么

1.1 简介与来历

Ansible 是一个开源的基于Python开发的自动化工具,用于配置管理、应用程序部署和任务自动化。它旨在简化 IT 基础设施管理,使得开发运维 (DevOps) 流程更加高效和可靠。
Ansible 由 Michael DeHaan 于 2012 年创建,并于同年发布。它由 Red Hat 赞助,并于 2015 年被 Red Hat 收购。Ansible 的设计理念是简洁易用,旨在解决传统自动化工具复杂性和学习曲线的问题。

1.2 Ansible的特点

  • 无客户端模式:仅需在控制端部署Ansible环境,被控端无需操作;
  • SSH工作:基于ssh协议对设备进行管理;
  • 框架概念:Ansible基于模块进行工作,本身没有能力,真正工作的是运行的模块
  • playbook:使用基于yaml的playbook实现自动化操作;
  • 可扩展性:支持API等方式扩展;
  • 幂等性:不关注执行过程,执行的结果无关次数,结果相同;

1.3Ansible的架构与工作流程

在这里插入图片描述

1.3.1 ansible 任务执行模式

Ansible 系统由控制主机对被管节点的操作方式可分为两类,即adhoc和playbook

  • ad-hoc模式(点对点模式)
     使用单个模块,支持批量执行单条命令。ad-hoc 命令是一种可以快速输入的命令,而且不需要保存起来的命令。就相当于bash中的一句话shell。
  • playbook模式(剧本模式)
     是Ansible 主要管理方式 ,也是Ansible功能强大的关键所在。playbook通过多个task集合完成一类功能,如Web服务的安装部署、数据库服务器的批量备份等。可以简单地把playbook理解为通过组合多条ad-hoc操作的配置文件。

1.3.2 ansible 执行流程

Ansible在运行时, 首先读取ansible.cfg中的配置, 根据规则获取Inventory中的管理主机列表, 并行的在这些主机中执行配置的任务, 最后等待执行返回的结果。

  • 命令执行过程
  1. 加载自己的配置文件,默认/etc/ansible/ansible.cfg;
  2. 查找对应的主机配置文件,找到要执行的主机或者组;
  3. 加载自己对应的模块文件,如 command;
  4. 通过ansible将模块或命令生成对应的临时py文件(python脚本), 并将文件传输至远程服务器;
  5. 对应执行用户的家目录的.ansible/tmp/XXX/XXX.PY文件;
  6. 给文件 +x 执行权限;
  7. 执行并返回结果;
  8. 删除临时py文件,sleep 0退出;

1.4 Ansible的模块

  • Ansible:Ansible核心程序。
  • Host Inventory:记录由Ansible管理的主机信息,包括端口、密码、ip等。
  • Playbooks:“剧本”YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能。
  • CoreModules:核心模块,主要操作是通过调用核心模块来完成管理任务。
  • CustomModules:自定义模块,完成核心模块无法完成的功能,支持多种语言。
  • ConnectionPlugins:连接插件,Ansible和Host通信使用

2. Ansible实验初始化

2.1 实验环境

Server:    manager     CentOS8     192.168.100.151
Host01:    front   	CentOS8     192.168.100.148
Host02:    storage     CentOS8     192.168.100.150
Host03:    backup  	CentOS8     192.168.100.149

2.2Ansible的安装

#ansible需要有epel源的支持,所以先安装epel-release
[root@manager ~]# yum install -y epel-release

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

[root@manager ~]# ansible --version
ansible [core 2.16.2]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.11/site-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.11.5 (main, Oct 25 2023, 14:45:39) [GCC 8.5.0 20210514 (Red Hat 8.5.0-21)] (/usr/bin/python3.11)
  jinja version = 3.1.2
  libyaml = True

#####

#也可以用pip安装,首先安装python-pip,然后pip拉取ansible的包
yum install -y python-pip
pip install ansible

2.2.1 Ansible的程序结构

  • 配置文件目录:/etc/ansible/
  • 执行文件目录:/usr/bin/ansible
  • lib库依赖目录:/usr/lib/pythonx.xx/site-packages/ansible*
  • help文档目录:/usr/share/doc/ansible*
  • man文档目录:/usr/share/man/man1/ansible*

2.3 修改Ansible配置文件

从 Ansible 2.12 版本开始,默认的配置文件不再有具体内容。但可以通过运行一个命令来生成一个示例配置文件。这个文件会包含所有默认设置,但都是被注释掉的(即“disabled”),如同2.12版本之前一样。

#生成配置文件
ansible-config init --disabled > ansible.cfg

#或者更加完整的
ansible-config init --disabled -t all > ansible.cfg

关于配置文件,这里修改两点:

  • 关闭主机密钥检查(host_key_checking)
  • 开启日志功能
#不必生成新的配置文件,就在空的配置文件内添加即可
cat >> /etc/ansible/ansible.cfg << EOF
[defaults]
host_key_checking = False
log_path = /var/log/ansible.log
EOF

2.3.1 配置文件中常见参数

inventory = /etc/ansible/hosts		  #这个参数表示资源清单inventory文件的位置
library = /usr/share/ansible		 #指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以
forks = 5		                      #并发连接数,默认为5
sudo_user = root		              #设置默认执行命令的用户
remote_port = 22		              #指定连接被管节点的管理端口,默认为22端口,建议修改,能够更加安全
ask_pass = True                #是否需要密码
host_key_checking = False		     #设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例
timeout = 60		                #设置SSH连接的超时时间,单位为秒
log_path = /var/log/ansible.log		#指定一个存储ansible日志的文件(默认不记录日志)

2.4 Ansible的命令参数

# ansible 命令参数
# anisble命令语法: ansible [-i 主机文件] [-f 批次] [组名] [-m 模块名称] [-a 模块参数]
ansible详细参数:
 -v,-verbose            # 详细模式,如果命令执行成功,输出详细的结果 (-vv –vvv -vvvv)
 -i PATH, -inventory=PATH  #  指定 host 文件的路径,默认是在 /etc/ansible/hosts 
inventory  [ˈɪnvəntri]  库存
 -f NUM,-forks=NUM      # NUM 是指定一个整数,默认是 5 ,指定 fork 开启同步进程的个数。
 -m NAME,-module-name=NAME    #   指定使用的 module 名称,默认使用 command模块
 -a,MODULE_ARGS         #指定 module 模块的参数
 -k,-ask-pass           #提示输入 ssh 的密码,而不是使用基于 ssh 的密钥认证
 -sudo                  # 指定使用 sudo 获得 root 权限
 -K,-ask-sudo-pass      #提示输入 sudo 密码,与 -sudo 一起使用
 -u USERNAME,-user=USERNAME          # 指定移动端的执行用户
 -C,-check             #测试此命令执行会改变什么内容,不会真正的去执行

# ansible-doc详细参数:
	ansible-doc -l          #列出所有的模块列表
	ansible-doc -s 模块名    #查看指定模块的参数  -s,   snippet  [ˈsnɪpɪt]   片断
[root@manager~]#  ansible-doc -s service
 
#列出模块使用简介
[root@manager~]# ansible-doc -l   
 
# 指定一个模块详细说明
[root@ansible_server~]# ansible-doc -s fetch   
 
# 查询模块在剧本中应用方法
[root@manager~]# ansible-doc fetch      

3. Ansible Inventory 主机清单文件

Ansible Inventory指的是ansible管理的主机的列表,即主机清单
ansible默认读取/etc/ansible/hosts文件,也可以修改路径(用ansible -i指定)

3.1 设置Inventory

  • 指明主机的方式:
    • 直接指明主机ip或域名
    • 定义主机组再加入
#设置Inventory
[root@manager ~]# vim /etc/ansible/hosts
[front]
192.168.100.148

[storage]
192.168.100.150

[backup]
192.168.100.149
...


#测试,对Inventory的所有主机ping测试
[root@manager ~]# ansible all -m ping
192.168.100.148 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}
192.168.100.149 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: ssh: connect to host 192.168.100.149 port 22: No route to host",
    "unreachable": true
}
...


3.2.1 子组

对于多个不同的组,创建一个聚合的组,便于一次对多组执行操作。

创建组data,包含storage和backup
ansible data -m ping

#在/etc/ansible/hosts中添加
[data:children]
storage
backup

#测试(测试主机未开机)
ansible data -m ping
192.168.100.149 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: ssh: connect to host 192.168.100.149 port 22: No route to host",
    "unreachable": true
}
192.168.100.150 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: ssh: connect to host 192.168.100.150 port 22: No route to host",
    "unreachable": true
}

3.2.2 指定ansible用户、密码、端口(不推荐)

前文提到,ansible是基于ssh控制Inventory中的主机的。我之前的文章已经写过如何配置ssh密钥认证
但若没有配置,也可以在Inventory中指定ansible使用的用户、密码以及ssh的端口。
推荐设置ssh密钥登录

#/etc/ansible/hosts中的内容
[front]
192.168.100.148 ansible_user=root ansible_password=Huawei@123 ansible_port=22

[storage]
192.168.100.150  ansible_user=root ansible_password=Huawei@123 ansible_port=22

[backup]
192.168.100.149 ansible_user=root ansible_password=Huawei@123 ansible_port=22

#测试
#若报错,为ssh: Permission denied (publickey.password)。即无密码。
192.168.100.148 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[杂项]优化AMD显卡对DX9游戏(天谕)的支持

目录 关键词平台说明背景RDNA 1、2、3 架构的显卡支持游戏一、 优化方法1.1 下载 二、 举个栗子&#xff08;以《天谕》为例&#xff09;2.1 下载微星 afterburner 软件 查看游戏内信息&#xff08;可跳过&#xff09;2.2 查看D3D9 帧数2.3 关闭游戏&#xff0c;替换 dll 文件2…

【C语言】8.C语言操作符详解(3)

文章目录 10.操作符的属性&#xff1a;优先级、结合性10.1 优先级10.2 结合性 11.表达式求值11.1 整型提升11.2 算术转换11.3 问题表达式解析11.3.1 表达式111.3.2 表达式211.3.3 表达式311.3.4 表达式411.3.5 表达式5: 11.4 总结 10.操作符的属性&#xff1a;优先级、结合性 …

【教学类-综合练习-05】20240524 中4班实物点数-纽扣(0-5加法、0-10加法)

背景需求&#xff1a; 百日咳班级只有5人&#xff0c;把库存的python纸类学具都用掉。其中就有大量的加减法题。 0-5以内题目早就没有了&#xff0c;中班幼儿做5以内。所以只能硬着头皮发0-10以内的加法题练习&#xff0c;并让孩子们去材料去拿10颗纽扣&#xff0c;进行两列摆…

webpack5 splitChunks分割代码

首先明确webpack 自身的打包行为 当splitChunks为false时&#xff0c;此时不启用任何打包设置 可以看到&#xff0c;静态引入全都打到一个chunk里&#xff0c;动态引入会拆分出来一个chunk,这是纯webpack无配置的打包&#xff0c; webpack会给每个模块打上标记 ,如下 { m…

Android Activity 设计详解

文章目录 Android Activity 设计说明1. Activity 的生命周期2. Activity 的启动模式3. Activity 的通信4. Activity 的布局和视图管理5. Activity 的配置变化处理6. Activity 的保存和恢复状态7. Activity 的任务和返回栈 总结 Android Activity 设计说明 在 Android 中&#…

24-LINUX-UDP网络连接

一UDP协议特点 TCP 协议提供的是&#xff1a;面向连接、可靠的、字节流服务。使用 TCP 协议通信的双发必须 先建立连接&#xff0c;然后才能开始数据的读写。双方都必须为该连接分配必要的内核资源&#xff0c;以管理 连接的状态和连接上数据的传输。TCP 连接是全双工的&…

Linux信号:信号的保存

目录 一、信号在内核中的表示 二、sigset_t 2.1sigset_t的概念和意义 2.2信号集操作数 三、信号集操作数的使用 3.1sigprocmask 3.2sigpending 3.3sigemptyset 四、代码演示 一、信号在内核中的表示 实际执行信号的处理动作称为信号 递达(Delivery) 。 信号从产生到递达…

Day48 Javascript详解

Day48 Javascript详解 文章目录 Day48 Javascript详解一、什么是javascript二、javascript特点三、 Javascript的历史四、Javascript vs Java五、JS的基本数据类型六、JS基本数据类型的特殊点七、数组 一、什么是javascript JavaScript是一种高级的、解释型的编程语言&#xf…

automa:循环元素的一个示例,取TME结合插件实现自动下载音乐。

因为tme没提供批量下载音乐的功能。我找到了一个插件可以下载。但需要点击播放时&#xff0c;才能感 知。 我原来用python写了一个&#xff0c;能实现&#xff0c;这想把他移植到automa上&#xff0c;同时想使用循环元素的方法&#xff0c;避免不必要的时间浪费。 开始。首先…

揭秘:水滴式粉碎机为何如此受欢迎

在粉碎机市场中&#xff0c;水滴式粉碎机以其D特的设计和G效的性能脱颖而出&#xff0c;成为众多用户的选择产品。那么&#xff0c;水滴式粉碎机究竟有何魅力&#xff0c;能够赢得如此广泛的赞誉呢&#xff1f; 首先&#xff0c;水滴式粉碎机的G效性能是其受欢迎的关键因素之一…

那些网络安全上的事实,很多人不见得知道!

明月发现不少小白对网络安全的认知几乎为零&#xff0c;甚至明月还碰到一个说 VPN 能彻底隐匿自己的&#xff0c;至于现在这帮动不动就利用 DDos/CC 攻击被人网站来推销境外高防服务器、高防 CDN 的老鼠屎们更是网络安全知识白痴的水平&#xff0c;破坏和攻击的水平完全取决于能…

阿里云oss存储直传回调服务的内网穿透

阿里云oss存储直传回调服务的内网穿透 前提 为什么在使用阿里云的oos直传的时候要使用内网穿透呢&#xff1f; 因为阿里云在使用回到服务的时候&#xff0c;要求访问的必须是外网&#xff0c;而我们的本地IPv4只是内网&#xff0c;无法被回调&#xff0c;所以我们需要使用内网…

【0007day】总体标准差、样本标准差和无偏估计

文章目录 总体标准差和样本标准差无偏估计无偏性与无偏估计量 总体标准差和样本标准差 一些表示上的差别。 总体标准差 样本标准差 两者的区别 样本方差为什么除以n-1? 这主要是由于样本的方差会低估总体的方差&#xff08;抽样的过程中&#xff0c;按照概率来说&#xff0…

融资融券利率4.0%!融资融券保证金比例和余额

融资融券利率最低是4.0%~5.0%&#xff0c;这是目前市场最低的利率水平&#xff0c;股票佣金万一。 各家券商的利率差异是较大的&#xff0c;现在无门槛利率是5%&#xff0c;根据投资者的资金量大小在4.0%~5%之间浮动&#xff0c;具体需要通过对应证券经理协商办理&#xff01;…

极空间部署本地最强私有化PDF工具箱『Stirling-PDF』

极空间部署本地最强私有化PDF工具箱『Stirling-PDF』 哈喽小伙伴们好&#xff0c;我是Stark-C~ 关注我的粉丝应该知道&#xff0c;我在前几天教大家怎么在NAS上部署本地最强私有化PDF工具箱『Stirling-PDF』&#xff1a; &#x1f53a;评论区好几位小伙伴都提到了极空间的部署…

当面试官问出“Unsafe”类时,我就知道这场面试废了,祖坟都能给你问出来!

一、写在开头 依稀记得多年以前的一场面试中&#xff0c;面试官从Java并发编程问到了锁&#xff0c;从锁问到了原子性&#xff0c;从原子性问到了Atomic类库&#xff08;对着JUC包进行了刨根问底&#xff09;&#xff0c;从Atomic问到了CAS算法&#xff0c;紧接着又有追问到了…

Github 2024-05-25 Rust开源项目日报Top10

根据Github Trendings的统计,今日(2024-05-25统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10Svelte项目1TypeScript项目1Python项目1Go项目1Dart项目1RustDesk: 用Rust编写的开源远程桌面软件 创建周期:1218 天开发语言:Rust…

基于地理坐标的高阶几何编辑工具算法(1)——目录

文章目录 背景目录效果相交面裁剪相离面吸附线分割面合并相交面合并相离面矩形绘制整形面 背景 在实际的地图编辑平台中&#xff0c;有一些场景是需要对几何面做修形操作&#xff0c;低效的做法是通过新增形点拖拽来实现。为了提高面几何的编辑效率&#xff0c;需要提供一些便…

社区医院|基于SprinBoot+vue的社区医院管理服务系统(源码+数据库+文档)

社区医院管理服务系统 目录 基于SprinBootvue的社区医院管理服务系统 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3用户功能模块 4医生功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取…

XSS漏洞:pikachu靶场中的XSS通关

目录 1、反射型XSS&#xff08;get&#xff09; 2、反射性XSS&#xff08;POST&#xff09; 3、存储型XSS 4、DOM型XSS 5、DOM型XSS-X 6、XSS之盲打 7、XSS之过滤 8、XSS之htmlspecialchars 9、XSS之href输出 10、XSS之js输出 最近在学习XSS漏洞&#xff0c;这里使用…