自动化运维工具ansible初探
-----------------------------------------------------------------------------------------------------------------------------------------------
ansible作为自动化运维工具篇幅会有很多,此篇只是初探,后面还会有内容
蓝绿环境:准备两套发布环境,一套依旧是老版本,一套是刚上线的新版本,升级后先将平台转换到新版本的环境,如果新版本不稳定,此时可以用调度器指到旧版本,平滑切换
灰度环境:抽取少数占比的服务器,发布新版本更新,这小部分服务器更新可以先让某个地区或者某些特定用户来提取使用,如果发现不稳定的地方可以及时修改,等到新版本稳定时再大批量更新
远程系统维护平常用ansible和saltstack
ansible:控制端,服务器是被控制端,配置简单,适合于中小型应用环境
saltstack:一般部署agent,配置复制,执行效率高
由于ansible也是基于openssh,所以管理起来最好还是需要基于key验证
ansible具有幂等性,也就是说某个任务执行一遍和执行n遍的效果一样,举例如果复制某个文件到100个服务器上,有些设备有该文件,有些设备没有该文件,此时执行结果是有该文件的设备将被跳过,没有的文件将会复制
ansible基于ssh服务无需代理,puppet或者saltstack需要安装代理
使用ansible管理服务器,需要满足两个条件:
(1)ansible控制机可以通过ssh连接到被控制机,基于key或者基于账户密码验证都可以
(2)被控制机的ip地址信息处于ansible的管理清单中
ansible,epel源安装,yum install ansible
1、控制机对被控制机建立基于key连接
2、被控制机需要在ansible的主机清单中
配置文件
/etc/ansible/ansible.cfg 主配置文件
/etc/ansible/hosts 主机清单
/etc/ansible/roles 存放角色的目录
主配置文件
/etc/ansible/ansible.conf该文件一般不用更改,不过为了使用方便,建议
(1)搜索host_key_checking,将该项取消注释,其意为使用ssh连接时避免首次连接时让输入yes/no部分的提示,避免了批量操作的交互性
(2)搜索log_path,将该项取消注释,工作中还是需要查看ansible的日志文件
主机清单
[组1]
IP1
IP2
IP...
[组2]
IPm
IPn
192.168.1.[1:3]7 ===>>代表192.168.1.17,192.168.1.27和192.168.1.37
ansible用法
ansible IP -m MODULE -a 'CMD'
组名
ALL
MODULE:模块
ansible-doc -l,列出模块列表,截止到现在共1852个
ansible-doc CMD,列出该模块的详细说明用法
默认情况下模块是用command模块,因此如果我们输入command模块支持的命令,此时-m COMMAND可以省略不写,例如
但是该模块不支持逻辑关系重定向等符号,所以我们可以用-m shell 模块,或者修改/etc/ansible/ansible.conf将默认模块更改为shell,但此时如果再执行command模块就必须-m command了
举例说明
ansible centos7 -a 'echo hello > /app/hi'