【Ansible 学习之旅】Ansible核心工具介绍

系列文章

Ansible 介绍和架构
Ansible 安装和入门
配置控制机器和受控机器
Inventory文件介绍


目录


利用ansible实现管理的主要方式

  • Ad-Hoc 即利用ansible命令,主要用于临时命令使用场景
  • Ansible-playbook 主要用于长期规划好的,大型项目的场景,需要有前期的规划过程

类似于在命令行敲入shell命令和 写shell scripts两者之间的关系


ansible-doc

  • 用途: 显示模块的帮助文档和用法。

  • 格式: ansible-doc [options] [module...]

示例:

  • 列出所有模块
bash 复制代码
ansible-doc -l  
  • 查看指定模块帮助用法
bash 复制代码
ansible-doc ping  

bash 复制代码
ansible-doc -s  ping 

ansible

  • 用途:此工具通过ssh协议,实现对远程主机的配置管理、应用部署、任务执行等功能
    建议使用此工具前,先配置ansible主控端能基于密钥认证的方式联系各个被管理节点
  • 格式:ansible <host-pattern> [-m module_name] [-a args]
    • host-pattern : 指定要执行命令的目标主机或组。可以是具体的主机名、IP 地址或组名
    • -m module_name: 指定要使用的 Ansible 模块
    • -a args: 指定传递给模块的参数

示例:

  • 显示所有主机的存活状态:
bash 复制代码
ansible all -m ping
- 这里的 \<host-pattern> 是 all,意味着这条命令将应用于 Ansible 库存文件中定义的所有主机
- -m 参数后跟的是 ping 模块。ping 模块用于检查远程主机的可达性,它会发送一个 ICMP ping 请求(如果操作系统支持)或尝试通过 SSH 连接来验证远程主机是否响应
  • 以特定用户执行命令:
bash 复制代码
ansible all -m command -u wang -a 'ls /root' 
-m 参数后跟的是 command 模块。command 模块用于在远程主机上执行指定的命令
-u 参数用于指定远程执行的用户。在这里,我们将以 wang 用户的身份执行命令
-a 参数后跟的是传递给 command 模块的参数。这里我们执行的命令是 ls /root

ansible-playbook

  • 用途: 执行预定义的剧本文件,用于执行一系列的自动化任务。

  • 格式: ansible-playbook <playbook-file>

示例:

  • 执行一个简单的 hello.yml 剧本:
bash 复制代码
ansible-playbook hello.yml
  • hello.yml 内容:
yanl 复制代码
---
# hello world yml file
- hosts: mysql
  remote_user: root
  tasks:
    - name: hello world
      command: /usr/bin/wall hello world

Ansible 剧本通常由三个主要部分组成:hosts , remote_usertasks

  • hosts: 指定剧本作用的目标主机或组。在这个例子中,目标是 mysql组。
  • remote_user: 指定远程执行的用户。在这个例子中,我们使用 root 用户。
  • tasks: 包含了一系列要执行的任务。

该yaml解释:

  • 第一行 --- 表示这是一个 YAML 文档的开始。
  • 第二行是一个注释,描述了这个剧本的作用。
  • 第三行定义了目标主机或组,这里是 mysql。
  • 第四行设置了远程执行的用户为 root。
  • 第六行开始定义了一个任务,名字叫做 hello world。
  • 第七行是任务的具体动作,使用 command 模块执行 /usr/bin/wall hello world 命令。/usr/bin/wall 是一个 Linux 命令,用于向所有登录的用户发送消息。在这个例子中,我们会向所有登录到 webrvs 组的用户发送一条消息:"hello world"

如果一切顺利,你会看到类似这样的输出:


ansible-vault

  • 用途:此工具可以用于加密解密yml文件

  • 格式:ansible-vault [create|decrypt|edit|encrypt|rekey|view]

示例:

bash 复制代码
ansible-vault encrypt hello.yml     #加密
ansible-vault decrypt hello.yml     #解密
ansible-vault view hello.yml        #查看
ansible-vault edit  hello.yml       #编辑加密文件
ansible-vault rekey  hello.yml      #修改口令
ansible-vault create new.yml        #创建新文件

ansible-console

  • 用途: 提供交互式的命令行界面,用于执行任务。

  • 格式:

bash 复制代码
ansible-console

示例:

  • 启动 ansible-console 并切换到特定的组:
bash 复制代码
ansible-console
# 切换到 `websrvs` 组
cd websrvs
# 列出当前组内的主机
list
# 设置并发数为 10
forks 10
# 在当前组内安装 `httpd`
yum name=httpd state=present
# 启动 `httpd` 服务
service name=httpd state=started

ansible-galaxy

  • 用途: 用于安装、卸载和管理 Ansible 角色。

  • 格式: ansible-galaxy [command]

示例

bash 复制代码
#列出所有已安装的galaxy
ansible-galaxy list
#安装galaxy
ansible-galaxy install geerlingguy.mysql
ansible-galaxy install geerlingguy.redis
#删除galaxy
ansible-galaxy remove geerlingguy.redis
相关推荐
gywl22 分钟前
openEuler VM虚拟机操作(期末考试)
linux·服务器·网络·windows·http·centos
量子-Alex25 分钟前
【多模态聚类】用于无标记视频自监督学习的多模态聚类网络
学习·音视频·聚类
吉大一菜鸡29 分钟前
FPGA学习(基于小梅哥Xilinx FPGA)学习笔记
笔记·学习·fpga开发
了一li1 小时前
Qt中的QProcess与Boost.Interprocess:实现多进程编程
服务器·数据库·qt
日记跟新中2 小时前
Ubuntu20.04 修改root密码
linux·运维·服务器
唐小旭2 小时前
服务器建立-错误:pyenv环境建立后python版本不对
运维·服务器·python
明 庭2 小时前
Ubuntu下通过Docker部署NGINX服务器
服务器·ubuntu·docker
BUG 4042 小时前
Linux——Shell
linux·运维·服务器
007php0072 小时前
Go语言zero项目部署后启动失败问题分析与解决
java·服务器·网络·python·golang·php·ai编程