Ansible是一款简单的运维自动化工具,使用ssh协议连接来进行系统管理、自动化执行命令、部署等任务,因此不需要单独安装客户端,也不需要启动任何服务,但在使用ansiable前要先做 ssh 信任,即免密登录。
Ansible组成结构
Ansible:
Ansible的命令工具,核心执行工具;一次性或临时执行的操作都是通过该命令执行。
Ansible Playbook:
又称任务集,编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,yaml格式。
Inventory:
Ansible管理主机的清单,默认是/etc/ansible/hosts文件。
Modules:
Ansible执行命令的功能模块,到Ansible 2.3版本为止,共有1039个模块,支持自定义模块,常用模块有command、shell、copy、fetch、file、yum、service、mount、cron、group、user等。
Plugins:
插件部分(对模块功能的补充),常有连接类型插件、循环插件、变量插件、过滤插件,插件功能用的较少。
API:
提供给第三方程序调用的应用程序编程接口。
ansiable使用示例:
ansible -i /home/hosts -m shell -f 200 -a "echo hello"
ansiable常用选项:
-a 后面跟着要执行的模块参数。
-k 输入SSH的登录密码
-K sudo提权的密码
-B SECONDS:后台运行超时时间
-f 指定要使用的并行进程数,default = 5
-i 指定库存主机文件,default = /etc/ansible/hosts
-m 要执行的模块名称,default = command
-s 运行sudo(nopasswd)
-T 指定SSH默认超时时间,default = 10
--version 显示程序版本号并退出
ansiable配置文件的默认路径为/etc/ansible/ansible.cfg,常用参数如下:
inventory = /etc/ansible/hosts #被控制的主机配置文件
library = /usr/share/my_modules/ #Ansible默认搜寻模块的位置
remote_tmp = ~/.ansible/tmp #远程主机缓存目录
local_tmp = ~/.ansible/tmp #本地缓存目录
forks = 5 #这个选项设置在与主机通信时的默认并行进程数
poll_interval = 15 #轮询时间
sudo_user = root #默认sudo用户
ask_sudo_pass = True #默认sudo用户是否需要输入密码
ask_pass = Fales #每次执行都需要询问ssh密码
remote_port = 22 #被控主机默认端口
module_lang = C #ansible默认语言
timeout = 10 #默认ssh尝试连接超时时间