Ansible自动化运维详细教程及playbook详解

2023-11-05

Ansible 一种集成 IT 系统的配置管理、应用部署、执行特定任务的开源平台,是 AnsibleWorks 公司名下的项目,该公司由 Cobbler 及 Func 的作者于 2012 年创建成立。

Ansible 基于 Python 语言实现,由 Paramiko 和 PyYAML 两个关键模块构建。

Ansible 特点:

部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作。
默认使用 SSH(Secure Shell)协议对设备进行管理。
主从集中化管理。
配置简单、功能强大、扩展性强。
支持 API 及自定义模块,可通过 Python 轻松扩展。
通过 Playbooks 来定制强大的配置、状态管理。
对云计算平台、大数据都有很好的支持。
提供一个功能强大、操作性强的 Web 管理界面和 REST API 接口 —- AWX 平台。
Ansible 与 SaltStack:

最大的区别是 Ansible 无需在被监控主机部署任何客户端代理,默认通过 SSH 通道进行远程命令执行或下发配置。
相同点是都具备功能强大、灵活的系统管理、状态配置,都使用 YAML 格式来描述配置,两者都提供丰富的模板及 API,对云计算平台、大数据都有很好的支持。

安装ansible
在这里插入图片描述
配置ansible
在这里插入图片描述

ansible.cfg 是 Ansible 工具的配置文件;hosts 用来配置被管理的机器;roles 是一个目录,playbook 将使用它

SSH秘钥认证

在这里插入图片描述
在这里插入图片描述

添加被管理主机
在这里插入图片描述在这里插入图片描述

测试ansible
在这里插入图片描述
-i 指定 hosts 文件位置
-u username 指定 SSH 连接的用户名
-k 指定远程用户密码
在这里插入图片描述
-f 指定并发数
-s 如需要 root 权限执行时使用 ( 连接用户不是 root 时 )
-K -s 时,-K 输入 root 密码

vim /etc/ansible/hosts
www.abc.com # 定义域名
192.168.1.100 # 定义 IP
192.168.1.150:37268 # 指定端口号
[WebServer] # 定义分组 192.168.1.10 192.168.1.20 192.168.1.30
[DBServer] # 定义多个分组 192.168.1.50 192.168.1.60 Monitor ansible_ssh_port=12378 ansible_ssh_host=192.168.1.200 # 定义别名
ansible_ssh_host 连接目标主机的地址
ansible_ssh_port 连接目标主机的端口,默认 22 时无需指定
ansible_ssh_user 连接目标主机默认用户
ansible_ssh_pass 连接目标主机默认用户密码
ansible_ssh_connection 目标主机连接类型,可以是 local 、ssh 或 paramiko
ansible_ssh_private_key_file 连接目标主机的 ssh 私钥
ansible_*_interpreter 指定采用非 Python 的其他脚本语言,如 Ruby 、Perl 或其他类似 ansible_python_interpreter 解释器
[webservers] # 主机名支持正则描述 www[01:50].example.com [dbservers] db-[a:f].example.com

ansible常用模块

列出 Ansible 支持的模块

在这里插入图片描述
查看该模块帮助信息
在这里插入图片描述
远程命令模块(command / script / shell)
Command
command 作为 Ansible 的默认模块,可以运行远程权限范围所有的 shell 命令,不支持管道符

查看 Client 分组主机内存使用情况

在这里插入图片描述
script
script 的功能是在远程主机执行主控端存储的 shell 脚本文件,相当于 scp + shell 组合。
远程执行本地脚本
在这里插入图片描述
shell
Shell 实现主控端向目标主机拷贝文件,类似于 scp 功能

在这里插入图片描述
copy模块
Copy 实现主控端向目标主机拷贝文件,类似于 scp 功能
#向 Client 组中主机拷贝 test.sh 到 /tmp 下,属主、组为 root ,权限为 0755
在这里插入图片描述
stat模块
获取远程文件状态信息,atime/ctime/mtime/md5/uid/gid 等信息

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
get_url
实现在远程主机下载指定 URL 到本地,支持 sha256sum 文件校验
在这里插入图片描述
在这里插入图片描述
yum
软件包管理
name参数:必须参数,用于指定需要管理的软件包,比如 nginx。
state参数:用于指定软件包的状态 ,默认值为。present,表示确保软件包已经安装,除了。present,其他可用值有 installed、latest、absent、removed,其中 installed 与present 等效,latest 表示安装 yum 中最新的版本,absent 和 removed 等效,表示删除对应的软件包。
disable_gpg_check参数:用于禁用对 rpm 包的公钥 gpg 验证。默认值为 no,表示不禁用验证,设置为 yes 表示禁用验证,即不验证包,直接安装。在对应的 yum 源没有开启 gpg 验证的情况下,需要将此参数的值设置为 yes,否则会报错而无法进行安装。
enablerepo参数:用于指定安装软件包时临时启用的 yum 源。假如你想要从A源中安装软件,但是你不确定A源是否启用了,你可以在安装软件包时将此参数的值设置为 yes,即使A源的设置是未启用,也可以在安装软件包时临时启用A源。
disablerepo参数:用于指定安装软件包时临时禁用的 yum 源。某些场景下需要此参数,比如,当多个 yum 源中同时存在要安装的软件包时,你可以使用此参数临时禁用某个源,这样设置后,在安装软件包时则不会从对应的源中选择安装包。

enablerepo 参数和 disablerepo 参数可以同时使用。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
确保 Client 主机上通过 yum 源安装了 nginx (对应 yum 源未开启 gpg 验证,所以需要设置 disable_gpg_check=yes),如下三条命令的效果相同。
ansible Client -m yum -a ‘name=nginx disable_gpg_check=yes’
ansible Client -m yum -a ‘name=nginx state=present disable_gpg_check=yes’
Ansible Client -m yum -a ‘name=nginx state=installed disable_gpg_check=yes’
2.确保 Client 主机上安装了 yum 源中最新版本的 nginx。
ansible Client -m yum -a ‘name=nginx state=latest disable_gpg_check=yes’
3.确保 Client 主机上通过 yum 源安装的 nginx 被卸载了。如下两条命令效果相同。
ansible Client -m yum -a ‘name=nginx state=absent’
Ansible Client -m yum -a ‘name=nginx state=removed’
4.在 Client 主机上安装 telnet 时不确定 local 源是否启用,使用 enablerepo=local确保临时启用 local 源。
ansible Client -m yum -a ‘name=telnet disable_gpg_check=yes enablerepo=local’
5.在 Client 主机上安装 telnet 时,确定多个源中都有 telnet,但是不想从 local 源中安装,所以在安装时临时禁用 local 源。
ansible Client -m yum -a ‘name=telnet disable_gpg_check=yes disablerepo=local’
corn
远程主机 crontab 配置
在这里插入图片描述
在这里插入图片描述
mount
远程主机分区挂载
在这里插入图片描述
在这里插入图片描述
service
远程主机系统服务管理
在这里插入图片描述
user
远程主机用户管理
添加删除用户
在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ansible自动化运维详细教程及playbook详解 的相关文章

  • 使用 with_items 连接字符串并分配给 Ansible 中的变量

    启动 ec2 实例时 我需要将两个 2 IP 保存到 vars 文件中的变量中 以便稍后在部署期间使用 这就是我保存单个服务器 IP 的方式 name Save server public IP to vars file lineinfil
  • 如何配置 Ansible 跳过两个堡垒主机?

    我想编写一个 Ansible 剧本 使用 Ansible 2 7 5 它将在到达目标服务器之前跳过两个主机来执行诸如安装 docker 和 python 等操作 我能够让 Ansible 通过一台主机跳转到server1通过将其添加到我的h
  • ansible 用户模块总是显示已更改

    我正在努力正确使用 ansible 的用户模块 问题是每次我运行我的剧本时 我创建的用户always显示为已更改 即使我已经创建了它们 我在这里发现其他人也有同样的问题 https github com ansible ansible is
  • 使用 ansible 'Docker login' 和 _json_key Docker 登录到 GCE

    我正在尝试编写一个 ansible 角色 首先执行以下操作docker login从容器注册表中提取映像之前 将其复制到 GCE 实例 由于提到的问题 我需要这样做here https stackoverflow com questions
  • ansible 重新启动 2.1.1.0 失败

    我一直在尝试创建一个非常简单的 Ansible 剧本 它将重新启动服务器并等待它回来 我过去在 Ansible 1 9 上有一个可以运行的 但我最近升级到 2 1 1 0 并且失败了 我正在重新启动的主机名为 idm IP 为 192 16
  • Ansible local_action 指令

    我对 Ansible 很陌生 有一个简单的问题来了解我的理解local action指示 这是否意味着该命令完全在本地执行 假设你有这样的东西 local action command which nginx register check
  • if else 在 ansible 打印语句中

    我需要有关具有多个条件的打印语句的语法的帮助 目前 报价为 inventory hostname 导致错误 如果我删除剧本运行的引号 但列出文本 inventory hostname 而不是变量 我想知道如何打印变量以及 if else 语
  • 包含 contains 的 json 格式查询

    我在 ansible 中有以下 json 输出 active transaction null cores 4 hostname alpha auth wb01 active transaction null cores 4 hostnam
  • Ansible 输出格式选项

    是否有一个选项可以使用 ansible 而不是任何其他脚本 来格式化 ansible 输出 例如 name Show version sudo true hosts web front end tasks name Create yum c
  • 如何从 Ansible 模块获取当前主机名?

    我正在开发自定义 Ansible 模块来控制 Vagrant 控制多个 VM 服务器上的多个 VM 节点 遵循指南https docs ansible com ansible latest dev guide developing modu
  • Ansible - 默认/显式标签

    我有一本剧本 其中包含并标记了各种角色 name base hosts host default localhost roles role apt tags base apt ubuntu role homebrew tags base h
  • 'extra_vars' 可以接收多个文件吗?

    根据 Ansible 文档在运行时定义变量 https docs ansible com ansible latest user guide playbooks variables html defining variables at ru
  • 如何在 Ansible 中创建相对符号链接?

    在我的剧本中 我需要为存储库创建符号链接 使用命令 shell 它可能像这样工作 Create symbolic link name Create symbolic link shell ln s SOURCE FOLDER SYMLINK
  • 有没有办法使用正则表达式来匹配ansible中的主机?

    我正在尝试使用正则表达式模式与 ansible 匹配主机 但它没有按预期工作 我的库存情况如下 group1 hello1 world1 hello2 world2 group2 hello3 而我的任务是 debug msg item w
  • 我们如何在使用循环时调用 ansible playbook 中的变量

    我有两个文件 其中这些文件包含server names and server IP s 我想更改 替换一些特定的server names and IP addressees根据要求在两个文件中 这与这篇文章 因为它被要求开设一个新职位 ht
  • Ansible:对任务失败执行清理

    我目前正在编写一个 Ansible play 它遵循此通用格式并通过 cron 作业运行 pre tasks Configuration package installation tasks Work with installed pack
  • Ansible - 任务系列 1 逆序

    我想创建两本剧本 一本用于停止环境 另一本用于启动它 环境的一部分是 RabbitMQ 集群 对于其停止 启动顺序非常重要 特别是最后一个停止的节点需要是第一个启动的节点 我想知道是否有一种方法可以指定针对组运行任务的相反顺序 这样我就可以
  • 在 Ansible playbook 中指定多个默认组作为主机

    我正在寻找一种方法来指定多个默认组作为 Ansible 剧本中的主机 我一直在使用这个方法 name Do things on hosts hosts specific hosts default development tasks do
  • Ansible 从列表中使用存档模块创建 tar.gz

    我试图在 Ansible 中查找超过一天的文件 然后创建这些文件的 tar gz 我已经尝试过archive模块 尽管它只创建列表中最后一个元素的 tar 有什么方法可以创建包含所有文件的 tar gz 吗 下面是我的脚本 name Che
  • Ansible:findall 正则表达式中变量的正确语法是什么

    我使用的是 Ansible 版本 2 9 我想做一个 GET 它返回一个信息块 从该信息中正则表达式一个 ID 该 ID 对应于我目前正在迭代的任何主机 然后使用该 ID 执行操作 我有正则表达式工作 https regex101 com

随机推荐

  • Win10 安装系统跳过创建用户,直接启用 Administrator

    oobe 到创建用户那里 第一种方法 按 shift F10 打开 cmd 输入 lusrmgr msc 将 administrator 启用 关闭 lusrmgr msc 回到 cmd 输入 taskmgr exe 打开任务管理器 结束进
  • (三) 计算机图形学 之 Shader 定义 (顶点 着色器)

    shader 决定材质 跟灯光的作用 shader 属性定义的通用格式 Properties Property Property 相当于一个类的公共变量 Properties 定义一个Int name display name Int 1
  • 身份证省市区SQL代码

    转载自 https blog csdn net xiaofanku article details 18085865 身份证号码的意义 前1 2位数字表示 所在省份的代码 第3 4位数字表示 所在城市的代码 第5 6位数字表示 所在区县的代
  • JWT讲解

    目录 什么是JWT 为什么会出现JWT cookie session模式 JWT模式 JWT认证过程 JWT数据格式 优点 缺点 什么是JWT 为什么会出现JWT cookie session模式 传统cookie session模式是通过
  • stm32中断详解

    中断介绍 1 在单片机系统中 如果遇到需要紧急处理的突发事件时 CPU需要迅速的作出反应 暂停正在运行的程序来处理突发事件 这时就需要中断 2 中断是指单片机正在执行程序的时 发生突发事件从而打断当前程序 转而去处理这一事件 当处理完成后再
  • this.el_.vjs_getProperty is not a function

    前言 在使用video js播放rtmp视频中切换页面 如果是弹框引入 关闭弹框时 必然会发现控制台报错这个 这是谈谈我这边遇到的这个问题 以及怎么解决的 问题 在说这个问题怎么解决之前 先说一下我这边的应用场景 以及遇到的问题 我这边使用
  • 高端大气的艺术海报的ps教程

    Step 1海报尺寸宽和高为768 1152像素 分辨率150像素 英寸 背景白色 Step 2 确定了之后复制背景图层 双击图层进入图层样式 选择渐变叠加 颜色渐变绿色到蓝色 线性渐变 Step 3 用椭圆工具绘制正圆填充颜色白色 大小为
  • 竞赛——【蓝桥杯】2022年11月第十四届蓝桥杯模拟赛第一期Java

    1 二进制位数 问题描述 十进制整数 2 在十进制中是 1 位数 在二进制中对应 10 是 2 位数 十进制整数 22 在十进制中是 2 位数 在二进制中对应 10110 是 5 位数 请问十进制整数 2022 在二进制中是几位数 答案提交
  • 外网访问内网kafka无法链接

    根据业务需要 需要在外网访问内网的kafka 外网设备给内网推送数据 以为只需要通过NGINX代理kafka的端口就可以了 但是实际上端口代理后 端口可以链接 但是无法推送数据 猜测大概原因是因为 kafka是将链接信息注册到zookeep
  • 香港Web3欲戴王冠,银行如何承受合规之重?

    前言 6月19日 据明报报道 香港金融管理局 HKMA 总裁余伟文针对虚拟资产交易平台在香港银行开户难问题表示 一向有与香港银行有交流 交流时是否有压力则大家感觉不一 上周四 HKMA向汇丰银行 渣打银行和中国银行施压 要求其接受加密交易所
  • 后钢板弹簧吊耳—铣叉口两内侧面夹具设计

    摘 要 本次设计是对后钢板弹簧吊耳零件的加工工艺规程及一些工序的专用夹具设计 后钢板弹簧吊零件的主要加工表面是平面及孔 由加工工艺原则可知 保证平面的加工精度要比保证孔的加工精度容易 所以本设计遵循先面后孔的原则 并将孔与平面的加工明确划分
  • mysql中LEFT JOIN分页时的优化方法

    引言 查询的时候使用LEFT JOIN 配合分页要怎么优化 正文 常见的 分页SQL SELECT FROM table1 t1 LEFT JOIN table2 t2 ON t2 id t1 id LEFT JOIN table3 t3
  • 双点双向重发布小实验

    要求 1 如图搭建网络拓扑 所有路由器各自创建一个环回接口 合理规划IP地址 2 R1 R2 R2 R4 R6之间运行OSPF协议 R4 R5 R6之间运行RIP协议 3 R1环回重发布方式引入OSPF网络 4 R4 R6双点双向重发布 5
  • 华为OJ(记负均正)

    描述 从输入任意个整型数 统计其中的负数个数并求所有非负数的平均值 输入 输入任意个整数 输出 输出负数个数以及所有非负数的平均值 注意 当输入的数字的个数未知时 ivec的用法 以 0结束输入 样例测试 输入 13 4 7 输出 3 0
  • 20230904 QT客户端服务器搭建聊天室

    Ser cpp include app h include ui app h APP APP QWidget parent QWidget parent ui new Ui APP ui gt setupUi this this gt re
  • 设置git bash打印log的颜色

    在git安装目录下的 gitconfig文件中编辑 color diff auto status auto branch auto interactive true ui true alias hist log color graph pr
  • 人工智能正在重塑生产方式、优化产业结构、提升生产效率、赋能千行百业

    近日 清华大学科技情报大数据挖掘与服务系统平台AMiner发布 人工智能发展报告2011 2020 阐述过去十年人工智能取得的重要成果 探讨人工智能未来发展前景与蓝图 含此在内 多项人工智能研究报告均引发业界广泛关注 专家表示 作为引领新一
  • 如何方便的去除返回Date时间戳后面的0(或者做其他设置)

    这是get请求后 返回个前端的时间戳 可以看到后面有三个的0 如何去除这0呢 但我们在java里面返回的类又是date 有两个方法 一 重新定义返回视图对象 将createTime 和 updateTime定义为long 然后在赋值的时候更
  • DataGridView控件用法(二):为每行记录最后加“编辑”-“删除”按钮列

    1 在DataGridView控件用法 一 中已经显示出列表数据 这时我们需要对每行数据记录进行编辑 需要添加 编辑 删除 查看 这样的超链接 代码如下 view source print 1 为每行数据增加编辑列 2 设定列不能自动作成
  • Ansible自动化运维详细教程及playbook详解

    Ansible 一种集成 IT 系统的配置管理 应用部署 执行特定任务的开源平台 是 AnsibleWorks 公司名下的项目 该公司由 Cobbler 及 Func 的作者于 2012 年创建成立 Ansible 基于 Python 语言