ansible 常用命令

1.ansible-doc 命令

ansible-doc 命令常用于获取模块信息及其使用帮助,一般用法如下:
ansible-doc -l #获取全部模块的信息
ansible-doc -s MOD_NAME #获取指定模块的使用帮助
ansible-doc的全部用法:
ansible 常用命令
-h, --help # 显示命令参数API文档
-l, --list #列出可用的模块
-M MODULE_PATH, #指定模块的路径
-s, --snippet #显示playbook制定模块的用法
-a 显示所有模块文档
实例:
ansible-doc -l 列出所有模块
ansible-doc ping 查看指定模块的帮助用法
ansible-doc -s ping 查看指定模块的帮助用法
ansible通过ssh实现配置管理、应用部署,任务执行等功能

ansible配置文件
ansible 的配置文件为/etc/ansible/ansible.cfg,ansible 有许多参数,下面我们列出一些常见的参数:
inventory = /etc/ansible/hosts #这个参数表示资源清单inventory文件的位置
library = /usr/share/ansible #指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以
forks = 5 #并发连接数,默认为5,一次处理5个
sudo_user = root #设置默认执行命令的用户
remote_port = 22 #指定连接被管节点的管理端口,默认为22端口,建议修改,能够更加安全
== host_key_checking = False(去掉#) #设置是否检查SSH主机的**,值为True/False。关闭后第一次连接不会提示配置实例,不需要ssh连接,可以直接ansible==
timeout = 60 #设置SSH连接的超时时间,单位为秒
== log_path = /var/log/ansible.log(去掉#) #指定一个存储ansible日志的文件(默认不记录日志)==

2.ansible 命令详解

命令的具体格式如下:
ansible [-f forks] [-m module_name] [-a args]
也可以通过ansible -h来查看帮助,下面我们列出一些比较常用的选项,并解释其含义:
-a #模块的参数,如果执行默认COMMAND的模块,即是命令参数,如: “date”,“pwd”,linux的命令等等
-k,#登录密码,提示输入SSH密码而不是假设基于**的验证
-K,#提示密码使用sudo,sudo表示提权操作

-B #后台运行超时时间
-C #模拟运行环境并进行预运行,可以进行查错测试
-c #连接类型使用
-f #并行任务数,默认为5
-i #指定主机清单的路径,默认为/etc/ansible/hosts
–list-hosts #查看有哪些主机组
-m == #执行模块的名字,默认使用 command 模块==,所以如果是只执行单一命令可以不用 -m参数
-S #用 su 命令

-R #指定 su 的用户,默认为 root 用户
-s #用 sudo 命令
-U SUDO_USER #指定 sudo 到哪个用户,默认为 root 用户
-T #指定 ssh 默认超时时间,默认为10s,也可在配置文件中修改
-u #远程用户,默认为 root 用户
-v #查看详细信息,同时支持-vvv,-vvvv可查看更详细信息

[[email protected] ~]# vim /etc/ansible/hosts
ansible 常用命令

如果在主机清单中加了目标主机,但是目标主机无法回pong,是因为ansible默认是基于ssh登陆连接,基于key进行验证登陆的,因此在连接之前需要对主机进行安全性认证
ansible 常用命令

解决:
修改ansible.cfg文件
vim /etc/ansible/ansible.cfg
host_key_checking=False这行去掉#, #设置是否检查SSH主机的**,值为True/False。关闭后第一次连接不会提示配置实例,不需要ssh连接,可以直接ansible
ansible 常用命令
这种加选项-k的方式只适用于只有一个目标主机或者多个密码口令一样的目标主机的情况下。如果有多个主机的情况下,这种方式只会询问一次密码口令,不能实现多个访问
so, 当多个被控主机密码不同时,需要基于**
ansible 常用命令
被控端:[[email protected] ~]# visudo

ansible 常用命令
ansible 常用命令

ansible 配置公私钥
上面我们已经提到过 ansible 是基于 ssh 协议实现的,所以其配置公私钥的方式与 ssh 协议的方式相同,具体操作步骤如下:
基于key的验证来实现免密管理验证的方式
配置基于key验证:
#1.生成私钥
[[email protected] ~]# ssh-******
#2.向主机分发私钥
[[email protected] ~]# ssh-copy-id [email protected]
[[email protected] ~]# ssh-copy-id [email protected]

基于key的验证来实现免密管理验证的方式,没有密码了,不用加-k
ansible 常用命令