【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
相关推荐
Charles Ray27 分钟前
C++学习笔记 —— 内存分配 new
c++·笔记·学习
小宋102133 分钟前
玩转RabbitMQ声明队列交换机、消息转换器
服务器·分布式·rabbitmq
m0_6090004236 分钟前
向日葵好用吗?4款稳定的远程控制软件推荐。
运维·服务器·网络·人工智能·远程工作
我要吐泡泡了哦1 小时前
GAMES104:15 游戏引擎的玩法系统基础-学习笔记
笔记·学习·游戏引擎
骑鱼过海的猫1231 小时前
【tomcat】tomcat学习笔记
笔记·学习·tomcat
kejijianwen2 小时前
JdbcTemplate常用方法一览AG网页参数绑定与数据寻址实操
服务器·数据库·oracle
贾saisai3 小时前
Xilinx系FPGA学习笔记(九)DDR3学习
笔记·学习·fpga开发
北岛寒沫4 小时前
JavaScript(JS)学习笔记 1(简单介绍 注释和输入输出语句 变量 数据类型 运算符 流程控制 数组)
javascript·笔记·学习
铁匠匠匠5 小时前
从零开始学数据结构系列之第六章《排序简介》
c语言·数据结构·经验分享·笔记·学习·开源·课程设计
Karoku0666 小时前
【网站架构部署与优化】web服务与http协议
linux·运维·服务器·数据库·http·架构