Ansible相关工具:ansible-doc、ansible
文章目录
- 管理方式
- 相关工具
- ansible-doc命令
- 用法
- 案例
- ansible
- ansible主配置文件
- 日志文件
- 主机清单
- ansible命令
- 基本格式:
- 选项说明:
- ansible的Host-pattern
- 或关系
- 逻辑与
- 逻辑非
- 正则表达式
- ansible命令执行过程
- ansible 的执行状态
管理方式
利用ansible实现管理的主要方式:
- Ad-Hoc 即利用ansible命令,主要用于临时命令使用场景.(一行一行代码执行)
- Ansible-playbook 主要用于长期规划好的,大型项目的场景,需要有前期的规划过程
相关工具
/usr/bin/ansible
主程序,临时命令执行工具/usr/bin/ansible-doc
查看配置文档,模块功能查看工具/usr/bin/ansible-galaxy
下载/上传优秀代码或Roles模块的官网平台/usr/bin/ansible-playbook
定制自动化任务,编排剧本工具/usr/bin/ansible-pull
远程执行命令的工具/usr/bin/ansible-vault
文件加密工具/usr/bin/ansible-console
基于Console界面与用户交互的执行工具
ansible-doc命令
用法
ansible-doc [options] [module...]
-l, --list #列出可用模块
-s, --snippet #显示指定模块的playbook片段
案例
#列出所有模块
ansible-doc -l
#查看指定模块帮助用法
ansible-doc -s ping
ansible
此工具通过ssh协议,实现对远程主机的配置管理、应用部署、任务执行等功能
建议:使用此工具前,先配置ansible主控端能基于密钥认证的方式联系各个被管理节点
ansible主配置文件
cat /etc/ansible/ansible.cfg
host_key_checking = False 当使用密码登录时需要配置此项不然会报错
日志文件
暂时先将log_path释放出来:
主机清单
vim /etc/ansible/hosts
用于定义被管理主机的认证信息, 例如被管理主机的主机名或IP地址、ssh登录用户名、密码以及key相关信息。
这里分了两个组,分别是webservers和dbservers,webservers添加了linux101 linux102两台主机,dbservers添加了linux103主机。
ansible命令
基本格式:
ansible <host-pattern> [-m module_name] [-a args]
- :所属组
- [-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时的口令
ansible all -m ping
基于密码进行验证(前提:所有主机密码都相同)
ansible all -k -m ping
ssh-keygen -t dsa
ssh-copy-id 192.168.64.101
基于key验证
ssh-copy-id linux102
利用sshpass批量实现基于key验证
vim sshpass.sh
#!/bin/bash
ssh-keygen -f /root/.ssh/id_rsa -P ''
NET=192.168.64
export SSHPASS=123456
for IP in {101..103};do
sshpass -e ssh-copy-id $NET.$IP
done
chmod u+x sshpass.sh
./sshpass.sh
ansible all --list-host
ansible webservers --list-host
hosts (2):
linux101
linux102
ansible dbservers --list-host
hosts (1):
linux103
如果不是root用户需要基于key验证
ansible all -u yu -k -m ping
vim /etc/ansible/hosts
新增一个appservers组,将主机linux101加入
ansible的Host-pattern
用于匹配被控制的主机的列表
All :表示所有Inventory中的所有主机
ansible all –m ping
*:通配符
ansible '*' -m ping
ansible 'linux10*' -m ping
或关系
ansible 'linux101:linux103' -m ping
ansible 'webservers:dbservers' -m ping
逻辑与
ansible 'webservers:&appservers' -m ping
逻辑非
ansible 'webservers:!appservers' -m ping
正则表达式
# web 或 db 开头的任意主机名
ansible '~(web|db).*' -m ping
ansible命令执行过程
1.加载自己的配置文件 默认/etc/ansible/ansible.cfg
2.加载自己对应的模块文件,如:command
3.通过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器的对应执行用户$HOME/.ansible/tmp/ansible-tmp-数字/XXX.PY文件
4.给文件+x执行
5.执行并返回结果
6.删除临时py文件,退出
主机列表中的主机没有下载过ansible,但是还是有.ansible文件目录
ansible 的执行状态
绿色:执行成功并且不需要做改变的操作
黄色:执行成功并且对目标主机做变更
红色:执行失败