参阅:
[1].权威中文指南
[2].珂儿吖.自动化运维工具-ansible详解
[3].马哥教育高薪实战中心.ansible教程-马哥2019全新ansible入门到精通
ansible 简介
传统的远程访问为C/S模式,多台客户机访问一台服务器。
但ansible相反,一个主机(主控端)控制多台主机(被控端),且在控制端不需要安装agent,而是直接借助SSH服务实现(但存在效率差的问题)。
适用于中小型应用环境。
ansible 是什么
ansible 特点
ansible 架构图
Ansible
:Ansible核心程序。HostInventory
:记录由Ansible管理的主机信息,包括端口、密码、ip等。- 主机清单,让ansible知道访问哪些主机。
Playbooks
:“剧本”YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能。CoreModules
:核心模块,主要操作是通过调用核心模块来完成管理任务。CustomModules
:自定义模块,完成核心模块无法完成的功能,支持多种语言。ConnectionPlugins
:连接插件,Ansible和Host通信使用。- 基于SSH协议实现
工作原理
ansible的命令来源
- cmdb(配置管理数据库) api调用
- public/private cloud api调用
- user,普通用户
- 实现管理的方式(1)
- Ad-Hoc方式,类似命令行的,一条一条命令执行。用于临时命令使用场景
- 实现管理的方式(1)
- ansible playbook,用户编写的剧本(命令集)
- 实现管理的方式(2)
- Ansible-playbook方式,用于长期规划好的,大型项目场景,需要提前规划
- 实现管理的方式(2)
通常使用后两种
ansible 任务执行
ansible 任务执行模式
ansible 执行流程
ansible 命令执行过程
ansible 配置详解
ansible 安装方式
三种安装方法
其它方法请参考中文指南
- 使用红帽包管理器
1 | yum install epel-release -y #需要先安装epel包 |
- 使用pip工具
1 | pip install ansible |
- 源码安装
1 | git clone git://github.com/ansible/ansible.git --recursive |
ansible 命令详解
命令的具体格式如下:
1 | ansible <host-pattern> [-f forks] [-m module_name] [-a args] |
可以通过ansible -h
来查看帮助
部分含义:
-a MODULE_ARGS
#模块的参数,如果执行默认COMMAND的模块,即是命令参数,如: “date”,“pwd”等等-k
,--ask-pass
#ask for SSH password。登录密码,提示输入SSH密码而不是假设基于密钥的验证--ask-su-pass
#ask for su password。su切换密码-K
,--ask-sudo-pass
#ask for sudo password。提示密码使用sudo,sudo表示提权操作--ask-vault-pass
#ask for vault password。假设我们设定了加密的密码,则用该选项进行访问-B SECONDS
#后台运行超时时间-C
#模拟运行环境并进行预运行,可以进行查错测试-c CONNECTION
#连接类型使用-f FORKS
#并行任务数,默认为5-i INVENTORY
#指定主机清单的路径,默认为/etc/ansible/hosts
--list-hosts
#查看有哪些主机组-m MODULE_NAME
#执行模块的名字,默认使用 command 模块,所以如果是只执行单一命令可以不用 -m参数-o
#压缩输出,尝试将所有结果在一行输出,一般针对收集工具使用-S
#用 su 命令-R SU_USER
#指定 su 的用户,默认为 root 用户-s
#用 sudo 命令-U SUDO_USER
#指定 sudo 到哪个用户,默认为 root 用户-T TIMEOUT
#指定 ssh 默认超时时间,默认为10s,也可在配置文件中修改-u REMOTE_USER
#远程用户,默认为 root 用户-v
#查看详细信息,同时支持-vvv
,-vvvv
可查看更详细信息
在主机清单文件(/etc/ansible/hosts)中,使用
ansible_ssh_port/user
可指定端口和用户
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小狼的学习笔记!
评论