自动化运维利器Ansible

1、什么是ansible

        ansible是一种比较常用自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。远程执行命令只需要打通节点ssh登录即可。是一个开源软件供应,配置管理和应用程序部署工具。可以管理成百上千的节点。

        由于python语言开发,大多数linux系统都支持良好。很多互联网公司运维团队都比较喜欢使用。ansible官网:Ansible is Simple IT Automation。ansible帮助文档:Ansible Documentation

核心组件

        

架构图

2、ansible包含哪些模块

        自动化部署主要模块,包括command、shell、copy、fetch、file、archive、unarchive、cron、yum_repository、dnf、service、firewalld、user、group、lineinfile、replace、setup、debug等模块。下面简单列举两个模块的示例。

2.1、command模块

建立文件: ansible test_host -m command -a “touch /mnt/test_file ”
删除文件:ansible test_host -m command -a “rm -fr /mnt/test_file ”

command模块常用参数
参数功能
cmd执行某个命令
creates判断文件是否存在,存在则不运行
removes判断文件是否存在,存在则运行
chdir进入目录

 2.2、file模块

创建文件:ansible test_host -m file -a ‘path=/mnt/test_host state=touch’
创建目录:ansible test_host -m file -a ‘path=/mnt/test_host state=directory’
创建软连接:ansible test_host -m file -a ‘path=/mnt/test_host.link state=link src=/mnt/test_host’
创建硬链接:ansible test_host -m file -a ‘path=/mnt/test_host.hard state=hard src=/mnt/test_host’
修改目录权限:ansible test_host -m file -a ‘path=/mnt/test_host mode=777’
修改目录权限并且目录中子文件的权限:ansible test_host -m file -a ‘path=/mnt/test_host mode=777 recurse=yes’

3、ansible使用场景

用户与组相关批量操作

远程执行系统命令

与jenkins和gitlab打通CICD

批量管理配置文件

批量部署安装大数据集群组件

批量启停进程

以上均可按角色主机组进行执行

4、ansible使用案例

用户与组相关批量操作

创建用户:ansible test_host -m user -a ‘name=test_user state=present’
修改主组:ansible test_host -m user -a ‘name=test_user group=1000 state=present’
修改附加组:ansible test_host -m user -a ‘name=test_user groups=1002 state=present’
添加附加组:ansible test_host -m user -a ‘name=test_user groups=1001 state=present append=yes’
指定shell:ansible test_host -m user -a ‘name=test_user shell=/sbin/nologin’
修改uid:ansible test_host -m user -a ‘name=test_user uid=1111’
修改注释:ansible test_host -m user -a ‘name=test_user comment=“test_user user”’
删除用户并且删除家目录:ansible test_host -m user -a ‘name=test_user state=absent remove=yes’

生成密钥:ansible test_host -m user -a ‘name=test_user state=present’
openssl passwd -6
修改密码:ansible test_host -m user -a ‘name=test_user password=“密钥”’

用户生成ssh密钥在~/.ssh/:ansible test_host -m user -a ‘name=test_user generate_ssh_key=yes’
创建组,也可指定gid=8888:ansible test_host -m group -a ‘name=test state=present’
删除组:ansible test_host -m group -a ‘name=test state=absent’

5、与其他自动化运维工具比较

Ansible功能特点:

部署较为简单, 只需要在控制主机上部署ansible环境,被控制端上只要求安装ssh和python 2.5以上版本,对于运维人员使用门槛低。

  1. 被管控节点无需安装Agent
  2. 无服务端,使用是直接调用控制端命令或者脚本。
  3. 基于模块工作, 可以使用任意语言开发模块
  4. 基于yaml语法编写playbook
  5. 定义的任务已存在则不会做任何事情,意味着在同一台服务器上多次执行同一个playbook是安全的

Ansible缺点:

  1. 学习成本:需要学习Ansible自定义的脚本语法规则。
  2. 安装成本:控制主机需是一台非Windows远程主机,也就是说至少要有1台远程Server。
  3. 易用性:因为必须有远程主控机,若本地有文件需同步,则需先将文件传输到对应的主控机,才能够做分发同步。
自动化运维工具比较
特点saltstackansibleBatchShell

开发语言

Python

Python

Java

是否有客户端

是否支持二次开发

支持

支持

支持

服务器与远程机器是否相互验证

服务器与远程机器的通信是否加密

是,使用AES加密

是,使用OpenSSH

是,使用OpenSSH、FTPS等多种加密协议

平台支持

BSD, Linux , Mac OS X,Solaris,Windows

AIX , BSD , HP-UX , Linux,Mac OS X ,Solaris

AIX , BSD , HP-UX , Linux,Mac OS X, Solaris

是否提供Web UI

提供

商业版本提供

提供

配置文件格式

YAML

YAML

原生Shell

命令行执行

支持

支持

支持

是否有客户端

是否支持二次开发

支持

支持

支持

可视化文本编辑、查询、替换

支持

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值