什么是ansible
ansible是目前最受运维欢迎的自动化运维工具,基于Python开发,集合了众多运维工具(SaltStack puppet、
chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。 ansible是基于
paramiko 开发的,并且基于模块化工作,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,
ansible只是提供一种框架。ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯
的。ansible目前已经已经被红帽官方收购,是自动化运维工具中大家认可度最高的,并且上手容易,学习简单。是
每位运维工程师必须掌握的技能之一。
ansible 特点
1 部署简单,只需要在主控制台部署好ansible环境,被控端无需任何操作。
2 默认使用ssh对系统进行管理
3 有大量常规运维操作模块,可实现日常大部分的操作。
4 配置简单,功能强大,扩展性强。
5 支持APL自定义模块以及自定义模块,可通过Python轻松扩展。
6 通过playbook来定制强大的配置、状态管理。
7 轻量级,无需客户端安装agent,更新时,只需在操作机上进行一次更新即可。
8 提供一个功能强大、操作性强的web管理界面和REST APL接口 -- AWX平台。
ansible 命令执行的过程
1 加载自己的配置文件,默认 /etc.ansible/ansible.cfg;
2查找对应的主机配置文件,找到执行的主机或着组;
3 加载自己对应的模块文件,如command;
4 通过ansible将模块或命令生成临时py文件(python文件),并将文件传输至远程服务器;
5 对应执行用户的家目录 .ansible/tmp/xxx/xxx.py
6 给文件 +x 执行权限
7 执行并返回结果
8 删除临时py文件,sleep 0 退出
使用yum安装
yum -y install epel-release
yum -y install ansible
ansible配置文 件/etc/ansible/ansible.cfg
inventory = /etc/ansible/hosts #这个参数表示资源清单inventory文件的位置 library = /usr/share/ansible #指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以 forks = 5 #并发连接数,默认为5 sudo_user = root #设置默认执行命令的用户 remote_port = 22 #指定连接被管节点的管理端口,默认为22端口,建议修改,能够更加安全host_key_checking = False #设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例 timeout = 60 #设置SSH连接的超时时间,单位为秒 log_path = /var/log/ansible.log #指定一个存储ansible日志的文件(默认不记录日)
ansible 主机清单
[root@server ~]# vim/etc/ansible/hosts
[web]
192.168.37.122
192.168.37.133
##ansible 配置公钥私钥
生成私钥
1.生成私钥
[root@server ~]# ssh-keygen
2.向主机分发私钥
[root@server ~]# ssh-copy-id root@192.168.37.122
[root@server ~]# ssh-copy-id root@192.168.37.133
这样就可以免密登陆了
ssh-copy-id: command not found
如果上面行不通就安装
yum -y install openssh-clientsansible
网友评论