系列文章
Ansible 介绍和架构
Ansible 安装和入门
配置控制机器和受控机器
Inventory文件介绍
目录
- 系列文章
- 利用ansible实现管理的主要方式
- ansible-doc
- ansible
- ansible-playbook
- ansible-vault
- ansible-console
- ansible-galaxy
利用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_user 和 tasks。
- 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