ansible基本命令与剧本编写(二)

文章目录

  • 前言
  • 一、ansible模块基本使用方法
    • [1.1 yum模块](#1.1 yum模块)
    • [1.2 service模块](#1.2 service模块)
    • [1.3 script 模块](#1.3 script 模块)
    • [1.4 setup 模块](#1.4 setup 模块)
  • [二、Inventory 主机清单与变量配置](#二、Inventory 主机清单与变量配置)
    • [2.1 主机清单变量汇总](#2.1 主机清单变量汇总)
    • [2.2 主机清单变量的作用与配置方法](#2.2 主机清单变量的作用与配置方法)
      • [2.3 组嵌套使用](#2.3 组嵌套使用)
  • 三、playbook编写(部分)
    • [3.1 Playbook 的结构](#3.1 Playbook 的结构)
    • [3.2 ansible playbook简单编写](#3.2 ansible playbook简单编写)
    • [3.3 when条件判断](#3.3 when条件判断)
  • 总结

前言

本文紧接上篇博客,本文将将ansible的模块使用方法讲完,并且讲解主机清单与剧本的相关知识。

一、ansible模块基本使用方法

1.1 yum模块

yum模块:用于安装与卸载软件包

ansible 10.0.0.5 -m yum -a 'name=httpd' ------------------------------------安装httpd软件包

ansible xjy -m yum -a 'name=httpd state=absent' ---------------------------------删除httpd软件包

1.2 service模块

service模块:用于操作服务包括started(开启)、stopped(关闭)、reload(重新加载)、restarted(重启)等

ansible xjy -m service -a 'name=httpd state=started' ---------------开启httpd服务

1.3 script 模块

script模块:用于执行shell脚本给远程被操作的主机

例如:利用ansible在控制机中的一个文件中(这里用的1.txt)写入123到被控制机根目录下的123.txt文件中

第一步 在控制机中写入脚本

第二步 用ansible执行脚本

ansible xjy -m script -a '1.txt' ------------------------------执行1.txt文件

1.4 setup 模块

setup模块:用于查看服务器节点信息

用法:ansible 组名或ip -m setup -a 'filter=想搜索的内容' ------------------------查看该组名或ip对应的服务器节点的信息

ansible xjy -m setup -a 'filter=ansible_default_ipv4' ------------------------查看本节点的ens33网卡信息

二、Inventory 主机清单与变量配置

2.1 主机清单变量汇总

2.2 主机清单变量的作用与配置方法

作用:通过定义主机清单变量,可以同时操作不同属性的主机,简单来说它可以用来告诉ansible主机,被控制的主机的属性(比如端口、密码、用户)已经不是默认的了,要远程控制需要用定义的这个变量属性才可以远程连接进行操作。

例如:通过定义主机清单变量,操作不同端口的主机

第一步 更改被控制主机的端口

vim /etc/ssh/sshd_config

(更改完配置文件记得重启sshd服务)

第二步 尝试直接远程操作该主机

ansible 10.0.0.9 -m command -a 'ls /opt' ---------------------------------查看opt下所有文件和目录

第三步 在ansible映射中写入主机清单变量

vim /etc/ansible/hosts ------------------------编辑ansible映射

第四步 再次尝试远程连接操作

这次发现可以连接上了,其实,主要原理就是,我写入了主机清单变量,指定了10.0.0.9的端口,相当于ansible在远程连接被控制主机的端口的时候,告诉了ansible要连接这个端口才可以连接的上。

2.3 组嵌套使用

作用:当我们想同时操作好几台被控制主机是除了all,我们目前只知道的方法就是一个一个输,这样的操作效率太慢,那么,我们想要一次性用一条命令就能操作机台主机就要使用到组嵌套。

概念:组嵌套顾名思义就是将几个组合成一个大组,我们在远程操作时直接操作这个大组就可以实现多个主机同时操作。

大组写法:组名:children

使用方法:在ansible映射中写入大组,远程操作时,直接选定大组为操作对象

ansible www -m command -a 'ls /opt' ------------------------操作大组中所有主机查看opt目录下的所有文件和目录

三、playbook编写(部分)

3.1 Playbook 的结构

Ansible 的 Playbook 是一个包含多个 Play 的 YAML 文件,每个 Play 负责对指定的 主机组 执行一系

列的任务。Playbook 通常由以下几部分组成:

Tasks:每个任务会调用一个模块来在目标主机上执行操作。

Variables:通过定义和使用变量,使 Playbook 更具灵活性和可重用性。

Templates:通过 Jinja2 模板动态生成配置文件。

Handlers:用于响应任务执行后的变更( notify 触发)。(例如在更改配置文件后,可以自动重启服务)

Roles:把多个任务、变量、模板、文件、处理程序组织成模块化结构,便于复用。

3.2 ansible playbook简单编写


可以看到,以上脚本执行成功

ansible-playbook test1.yaml ------------------------------运行 playbook

ansible-playbook test1.yaml --syntax-check ------------------------------检查语法

ansible-playbook test1.yaml --list-task ------------------------------查看任务列表

ansible-playbook test1.yaml --list-hosts ------------------------------查看影响的主机

ansible-playbook test1.yaml --start-at-task='install httpd' ------------------------从指定任务开始执行

3.3 when条件判断


总结

本文紧接上篇博客,本文将将ansible的模块使用方法讲完,并且讲解主机清单与剧本的相关知识,希望本文内容能对大家有所帮助,谢谢观看😜

相关推荐
AOwhisky3 分钟前
Python 学习笔记(第十四期)——运维自动化(下·中篇):远程文件传输——paramiko进阶篇
运维·python·学习·云原生·自动化·文件传输·paramiko
imc.1133 分钟前
linux基础IO
linux·运维·服务器
躺不平的理查德34 分钟前
让Ubuntu 的第二块网卡 ens37 永久固定为 192.168.30.111
运维·服务器
bitbrowser1 小时前
Facebook 验证反复回到原页面,应该从哪里排查
运维·服务器·facebook
Land03291 小时前
AI网页元素变化无法自动修复?自带元素自愈的自动化解决方案
运维·人工智能·ai·自动化·rpa
fengyehongWorld1 小时前
Jenkins 安装与简单配置
运维·jenkins
云智慧AIOps社区2 小时前
2026 国产化 ITSM 替代指南:横向测评 ServiceNow、轻帆云、Jira等五款主流IT服务管理平台
运维·人工智能·运维开发·it服务管理·itsm平台
Urbano2 小时前
针织卫衣全流程生产工序科普:自动化替代、产能优化与设备选型实战方案
运维·自动化
BelongPanda2 小时前
Linux Nginx 纯手动 Let‘s Encrypt 泛域名证书配置教程
linux·nginx
AC赳赳老秦2 小时前
招投标公开数据自动化采集实战:基于 OpenClaw 的定时抓取与业务关键词精准推送
运维·服务器·数据库·自动化·测试用例·deepseek·openclaw