《Ansible权威指南 》一Ansible命令用法详解

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: Ansible命令行执行方式有Ad-Hoc、Ansible-playbook两种方式,Web化执行方式其官方提供了付费产品Tower(10台以内免费),个人的话可以基于其提供的API开发类似的Web化产品。

本节书摘来自华章出版社《Ansible权威指南 》一书中的第2章,第2.3节,李松涛 魏 巍 甘 捷 著更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.3 Ansible命令用法详解

Ansible命令行执行方式有Ad-Hoc、Ansible-playbook两种方式,Web化执行方式其官方提供了付费产品Tower(10台以内免费),个人的话可以基于其提供的API开发类似的Web化产品。关于命令行执行的两种方式Ad-Hoc和Ansible-playbooks、什么是Ad-Hoc及Ad-Hoc与Ansible-playbook的区别我们在第3章有详细介绍,这里不再赘述。需简要说明的是两者没有本质上的区别,Ad-Hoc主要用于临时命令的执行,Ansibel-playbook可以理解为Ad-Hoc的集合,通过一定的规则编排在一起。两者的操作也极其简便,且提供了如with_items、failed_when、changed_when、until、ignore_errors等丰富的逻辑条件和Dry-run的Check Mode。但在Chceck Mode下并不真正执行命令,即将执行的操作不会对端服务器产生任何影响,只模拟命令的执行过程是否能正常执行。
通过第1章的学习我们知道,Ansible的通信默认基于SSH,因此我们需要对主机先进行认证。Ansible认证方式有密码认证和公私钥认证两种方式,其实完全等同于SSH的认证,所以这里关于这两种认证方式不做过多介绍。Ansible默认使用(笔者也建议各位使用)公私钥认证方式,究其原因无非是出于安全的考虑,密码不用明文存放。以本机为例,执行如下命令即可添加本机认证信息。

// 随机生成公私钥对,ssh-keygen是Linux下认证密钥生成、管理和转换工具,详细用法可参考其man文档
ssh-keygen  -N "" -b 4096 -t rsa -C "stanley@magedu.com" -f /root/.ssh/stanley.rsa
// 为本机添加密钥认证
ssh-copy-id –i /root/.ssh/stanley.rsa root@localhost
输入的时候会有如下提示:
Are you sure you want to continue connecting (yes/no)?
输入全小写的英文字母yes即可。
而后会有类似如下提示输入对应root用户的密码信息:
root@localhost's password:
输入正确的密码信息后结果认证,随后在当前命令行输入如下命令尝试免密码登录:
ssh -i /root/.ssh/stanley.rsa root@localhost

如不提示输入密码即可直接登录则表示密钥验证成功。当然,这里只是为大家简要演示密钥认证的过程,实际应用中为方便起见,一般会使用非root用户生成默认文件名为id_rsa、id_rsa.pub的密钥对,在使用时通过sudo的方式获取权限。
Ansible的命令使用格式如下:

ansible <host-pattern> [options]

是Inventory中定义的主机或主机组,可以为ip、hostname、Inventory中的group组名、具有“.”或“*”或“:”等特殊字符的匹配型字符串,<>表示该选项是必须项,不可忽略。
[options]是Ansible的参数选项,[]表示该选项中的参数任选其一。
Ansible命令可用选项非常多,这里列举如下会用到的选项,详细选项可参考man或第3章。

-m NAME, --module-name=NAME:指定执行使用的模块。
-u USERNAME, --user=USERNAME:指定远程主机以USERNAME运行命令。
-s, --sudo:相当于Linux系统下的sudo命令。
-U SUDO_USERNAME, --sudo-user=SUDO_USERNAME:使用sudo,相当于Linux下的sudo命令。

具体示例如下:

// 以bruce用户执行ping存活检测
ansible all -m ping -u bruce
// 以bruce sudo至root执行ping存活检测
ansible all -m ping -u bruce --sudo
// 以bruce sudo至batman用户执行ping存活检测
ansible all -m ping -u bruce --sudo --sudo-user batman

但在新版本中Ansible的sudo命令废弃,改为--become或-b,如上命令需改为如下:

// 以bruce sudo至root执行ping存活检测
ansible all -m ping -u bruce -b
// 以bruce sudo至batman用户执行ping存活检测
ansible all -m ping -u bruce -b --become-user batman

Ansible-playbook的命令用法和Ansible略有不同,虽然参数选项与Ansible有很多相同的地方,但也新增了针对Ansible-playbook特有的参数。
Ansible-playbook的命令使用格式如下:

ansible-playbook playbook.yml
``
ansible-playbook命令后跟事先编辑好的playbook.yml文件即可。本节只简单介绍其用法,在第4、5、6章有大量内容介绍其写法、高级用法及优化方向。Ansible-playbook新增的功能参数如下:

--ask-vault-pass:加密playbook文件时提示输入密码。
-D, --diff:当更新的文件数及内容较少时,该选项可显示这些文件不同的地方,该选项结合-C用会有较好的效果。
-e EXTRA_VARS, --extra-vars=EXTRA_VARS:在Playbook中引入外部变量。
--f?lush-cache:将fact清除到的远程主机缓存。
--force-handlers:强制运行handlers的任务,即使在任务失败的情况下。
-i INVENTORY:指定要读取的Inventory文件。
--list-tags:列出所有可用的tags。
--list-tasks:列出所有即将被执行的任务。
--skip-tags=SKIP_TAGS:跳过指定的tags任务。
--start-at-task=START_AT_TASK:从第几条任务开始执行。
--step:逐步执行Playbook定义的任务,并经人工确认后继续执行下一步任务。
--syntax-check:检查Playbook中的语法书写。
-t TAGS, --tags=TAGS:指定执行该tags的任务。

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
5月前
|
Shell 数据安全/隐私保护
Ansible Ad-hoc,命令执行模块
Ansible Ad-hoc,命令执行模块
46 1
|
7月前
|
算法 安全 Linux
Ansible自动化工具copy复制用法
Ansible 中的 copy 模块用于将文件或目录从本地计算机或远程主机复制到远程主机上的特定位置。它是一个功能强大的模块,可用于各种文件传输任务. ### 作用 将配置文件复制到远程服务器 将应用程序部署到远程服务器 将日志文件从远程服务器复制到本地计算机 备份和恢复文件和目录
184 2
Ansible自动化工具copy复制用法
|
运维 监控
【运维知识进阶篇】Zabbix5.0稳定版详解10(Zabbix自动注册+Ansible自动部署,实现一条命令监控任意主机)
【运维知识进阶篇】Zabbix5.0稳定版详解10(Zabbix自动注册+Ansible自动部署,实现一条命令监控任意主机)
185 0
|
Shell 网络安全 网络架构
Ansible模块介绍——命令模块
Ansible模块介绍——命令模块
145 0
|
运维 自然语言处理 Shell
金鱼哥戏说RHCE认证:部署Ansible---运行临时命令
第二章 部署Ansible---运行临时命令
233 0
金鱼哥戏说RHCE认证:部署Ansible---运行临时命令
|
XML NoSQL 关系型数据库
实现 Ansible 企业级用法 playbook| 学习笔记
快速学习实现 Ansible 企业级用法 playbook
实现 Ansible 企业级用法 playbook| 学习笔记
|
缓存 运维 关系型数据库
Ansible 实现 role 运维自动化高级用法| 学习笔记
快速学习 Ansible 实现 role 运维自动化高级用法
Ansible 实现 role 运维自动化高级用法| 学习笔记
ansible获取命令帮助信息(三)
1.获取ansible命令帮助 1.1.查看某个模块的帮助信息
333 0
LXJ
|
运维 Shell Linux
03-Ansible管理命令
03-Ansible管理命令
LXJ
161 0
LXJ
|
安全 网络安全 数据安全/隐私保护
02-第一条Ansible命令
02-第一条Ansible命令
LXJ
203 0