ansible系列命令和ansible模块
ansible系列命令
1.ansible系列命令
- ansible
- ansible-doc
- ansible-playbook
- ansible-vault
- ansible-console
- ansible-galaxy ansible-pull
- ansible-inventory
- …
2.ansible-doc
-
Usage: ansible-doc [-l|-F|-s] [options] [-t ] [plugin]
-
选项:
- -a 显示所有模块的文档
- -l, --list 列出可用模块
- -s, --snippet显示指定模块的playbook片段
- ansible-doc -s module 查看指定模块帮助用法
-
ansible-doc执行示例:
3.ansible
-
ansible通过ssh实现配置管理、应用部署、任务执行等功能,建议配置ansible端能基于 密钥认证的方式联系各被管理节点
-
ansible [-m module_name] [-a args]
- –version
显示版本 - -m module
指定模块,默认为command - -v
详细过程 –vv -vvv更详细 - –list-hosts
显示主机列表,可简写 --list -k, - –ask-pass
提示输入ssh连接密码,默认Key验证 - -C, --check
检查,并不执行 - -T, --timeout=TIMEOUT
执行命令的超时时间,默认10s - -u, --user=REMOTE_USER
执行远程执行的用户 - -b, --become
代替旧版的sudo切换 - –become-user=USERNAME
指定sudo的runas用户,默认为root - -K, --ask-become-pass
提示输入sudo时的口令
- –version
-
ansible的Host-pattern 匹配主机的列表
- All :表示所有Inventory中的所有主机
ansible all –m ping - * :通配符
ansible 192.168.38.* -m ping - 或关系
nsible “webserver:dbserver” -m ping
- All :表示所有Inventory中的所有主机
-
ansible 命令示例:
4.ansible-galaxy
- 连接 https://galaxy.ansible.com 下载相应的roles
- 列出所有已安装的galaxy
ansible-galaxy list - 安装galaxy
ansible-galaxy install geerlingguy.redis - 删除galaxy
ansible-galaxy remove geerlingguy.redis
5.ansible-pull
- 推送命令至远程,效率无限提升,对运维要求较高
6.ansible-playbook
- 执行playbook
7.ansible-vault
-
ansible-vault功能:管理加密解密yml文件
-
ansible-vault [create|decrypt|edit|encrypt|rekey|view]
-
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 创建新文件
8.Ansible-console:2.0+新增,可交互执行命令,支持tab
- root@test (2)[f:10] $ 执行用户@当前操作的主机组 (当前组的主机数量)[f:并发数]$
- 设置并发数: forks n 例如: forks 10
- 切换组: cd 主机组 例如: cd web
- 列出当前组主机列表: list
- 列出所有的内置命令: ?或help
ansible常用模块
-
模块文档:
https://docs.ansible.com/ansible/latest/modules/modules_by_category.html -
Command:在远程主机执行命令,默认模块,可忽略-m选项
- command模块支持的主机命令有限,不支持 $VARNAME < > | ; & 等,用shell模块实现
- 因此可以修改/etc/ansible/ansible.cfg文件[defaults] 模块的#module_name = command 更改为shell,将shell设为默认模块
vim /etc/ansible/ansible.cfg
[defaults]
#module_name = shell
-
Shell:和command相似,用shell执行命令
- 调用bash执行命令 类似 cat /tmp/stanley.md | awk -F’|’ ‘{print $1,$2}’ &> /tmp/example.txt 这些复杂命令,即使用shell也可能会失败,解决办法:写到脚本时,copy到远程,执行,再把需要的结果拉回执行命令的机器
-
Script:在远程主机上运行ansible服务器上的脚本
-
Copy:从主控端复制文件到远程主机
-
Fetch:从远程主机提取文件至主控端,copy相反,目前不支持目录
-
File:文件管理模块
-
unarchive:解包解压缩,有两种用法:
1、将ansible主机上的压缩包传到远程主机后解压缩至特定目录,设置copy=yes,默认copy=yes。
2、将远程主机上的某个压缩包解压缩到指定路径下,设置copy=no -
Archive:打包压缩
-
Hostname:管理主机名
-
Cron:计划任务
支持时间:minute,hour,day,month,weekday -
Yum:管理包
-
Service:管理服务
-
User:管理用户
-
u Group:管理组
-
表格形式:
常见模块 功能 command 在远程主机执行linux命令 shell 在远程主机执行linux命令 script 在远程主机运行ansible上的脚本 copy 从ansible主机复制文件至远程主机 fetch 从远程主机拉去文件至ansible主机 file ansible主机对远程主机实现文件管理 unarchive 解包解压缩 archive 打包压缩 hostname ansible管理远程主机的主机名 cron 计划任务 yum 包管理 service 服务管理 user 用户管理 group 组管理 -
以上模块用法查看帮助: ansible-doc -s module