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的模块使用方法讲完,并且讲解主机清单与剧本的相关知识,希望本文内容能对大家有所帮助,谢谢观看😜

相关推荐
one____dream9 分钟前
【网安】Reverse-非常规题目
linux·python·安全·网络安全·ctf
j_xxx404_10 分钟前
Linux:进程程序替换
linux·运维·服务器
祁鱼鱼鱼鱼鱼16 分钟前
Keepalived实验环境设定
linux·服务器·网络
Genie cloud20 分钟前
VPS 网络连接故障诊断与排查实用指南
linux·服务器·ssh
RisunJan27 分钟前
Linux命令-lnstat(快速查找文件和目录)
linux·运维·服务器
滴水之功34 分钟前
OpenWrt的WAN和LAN的切换
linux·网络·openwrt
lihui_cbdd1 小时前
Slurm 集群内存管理与限制配置
运维·服务器
历程里程碑1 小时前
Linux 17 程序地址空间
linux·运维·服务器·开发语言·数据结构·笔记·排序算法
CC.GG1 小时前
【Linux】进程控制(二)----进程程序替换、编写自主Shell命令行解释器(简易版)
linux·服务器·数据库
H Journey2 小时前
Linux 下添加用户相关
linux·运维·服务器·添加用户