Ansible重要组成:
ansible的执行过程:
1加载自己的配置文件,默认/etc/ansible/ansible.cfg
2加载自己的对应模块文件,如:command
3通过ansible将模块或命令生成对应的临时Python文件,并将改文件传输至远程服务器的对应执行用户$HOME/.ansible/tmp/ansible-tmp-数字/XXX.PY文件
4给文件+x执行
5执行并返回结果
6删除临时Python文件,sleep 0退出
ANSIBLE PLAYBOOK:任务剧本,编写ansible任务集的配置文件,顺序执行,通常是JSON格式的YML文件
INVENTORY:管理主机清单
MODULES:执行命令的模块,可以自定义
PLUGINS:模块功能的补充,如连接类插件,循环插件,变量插件等
API:供第三方程序调用的应用程序编程接口
ANSIBLE:组合上面的绿框,ansible命令工具,核心工具
ansible命令执行来源:USER,普通用户,即SYSTEM ADMINISTARTOR
用户直接敲命令CMDB,(配置管理数据库)API调用
CMDB
PUBLIC/PRIVATE CLOUD API 调用
通过公有云私有云开发接口USER-> Ansible Playbook ->Ansible
用户通过编写playbook调用ansible
利用ansible实现管理的方式:
Ad-Hoc:通过用户敲单条命令实现,偶尔用
Ansible-playbook:通过编写剧本实现,多数时候用
playbook执行过程:
将编写好的任务集写入playbook
通过ansible-playbook命令分拆任务集至逐条ansible命令。按规则逐条执行。
Ansible操作对象:
HOSTS主机
NETWORKING网络设备
注意事项:
执行ansible的主机一般称为主控端,中控,master或堡垒机
主控端Python版本需要2.6以上
被控端Python版本小于2.4需要安装Python-simplejson
被控端如果开启SELinux需要安装libselinux-python
Windows不能作为主控端
ansible安装:
yum方式:
yum install ansible
Git方式
git clone git://github.com/ansible/ansible.git --recursive
cd ./ansible
source ./hacking/env-setup
source相当于. ;用来运行脚本的
可以,先用yum info ansible看看,反正我看不懂,
看看ansible里的清单列表
rpm -ql ansible因为很多所以可以一点一点看
rpm -ql ansible | less 一点一点看
查看ansible安装情况的命令
ansible命令对应的路径是软链接,方便跟换版本,
配置文件:
/etc/ansible/ansible.cfg主配置文件。
/etc/ansible/hosts主机清单
/ect/ansible/roles/存放角色的目录
程序:
/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界面与用户交互的执行工具
1.主机清单:Inventory
ansible为了便捷使用主机。在Inventory file中将主机分组命名
默认的Inventory file文件为/etc/ansible/hosts
Inventory file文件可以有多个
在不添加主机清单时会报提示,
添加后,不加-k 口令验证报提示
基于key验证后不用加-k口令验证,提示
注意:在第一次用-k口令连接时输入错误口令会被机器记住,把口令记录文件 /root/.ssh/known_hosts里,把改文件删除后重连就可以。也可以单独重新连接重新输入正确口令,也可以。
ansible的配置文件/etc/ansible/ansible.cfg
[defaults]
#incentory = /etc/ansible/hosts
主机清单
#library = /usr/share/my_modules/
库
#module_utils = /usr/share/my_module_utils/
模块的路径
#remote_tmp = ~/.ansible/tmp
远程的临时目录
#local_tmp = ~/.ansible/tmp
远程的临时目录
#plugin_filters_cfg = /etc/ansible/plugin_filters.yml
插件的配置文件
#forks = 5
如果执行20台主机,同时并发执行5次(5台主机),
#poll_interval = 15
多长时间拉一次数据 默认15秒
#sudo_user = root
不仅仅以当前身份执行,还可以默认以root身份执行,在本机以普通身份远程控制,可以切换到sudo形式控制
#ask_sudo_pass = True
s是否sudo需要口令
#ask_pass = True
用户名是否询问口令
#transport = smart
#remote_port = 22
s远程主机的端口号
#module_lang = C
#module_set_locale = Fales
#host_key_checking = False
a检查对应服务器或链接主机的host_key. 建议吧#去掉,取消注释