【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
相关推荐
Komorebi.py20 分钟前
【Linux】-学习笔记05
linux·笔记·学习
Mr_Xuhhh26 分钟前
重生之我在学环境变量
linux·运维·服务器·前端·chrome·算法
中云DDoS CC防护蔡蔡1 小时前
微信小程序被攻击怎么选择高防产品
服务器·网络安全·微信小程序·小程序·ddos
HPC_fac130520678162 小时前
以科学计算为切入点:剖析英伟达服务器过热难题
服务器·人工智能·深度学习·机器学习·计算机视觉·数据挖掘·gpu算力
yaoxin5211233 小时前
第二十七章 TCP 客户端 服务器通信 - 连接管理
服务器·网络·tcp/ip
sinat_384241098 小时前
使用 npm 安装 Electron 作为开发依赖
服务器
朝九晚五ฺ8 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习
Kkooe9 小时前
GitLab|数据迁移
运维·服务器·git
猫爪笔记9 小时前
前端:HTML (学习笔记)【1】
前端·笔记·学习·html
pq113_610 小时前
ftdi_sio应用学习笔记 3 - GPIO
笔记·学习·ftdi_sio