【运维】Ansible 自动化运维工具配置及模块使用

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

ansible是基于 paramiko 开发的,并且基于模块化工作,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远

程主机通讯的。

官方文档教程https://docs.ansible.com/

 

测试网络拓扑

【运维】Ansible 自动化运维工具配置及模块使用

ansible安装

配置所需安装yum源,我使用了阿里的centos7源

[root@server yum.repos.d]# wget http://mirrors.aliyun.com/repo/Centos-7.repo
[root@server yum.repos.d]# yum clean all&&yum makecache
[root@server yum.repos.d]# yum -y install ansible

【运维】Ansible 自动化运维工具配置及模块使用

 

ansible 配置公私钥

ansible server中创建ssh的密钥对

[root@server ansible]# ssh-keygen

【运维】Ansible 自动化运维工具配置及模块使用

 

ssh的公钥下发,实现ansible服务器与其余服务器的ssh免密登陆

[root@server ansible]# ssh-copy-id root@192.168.2.131
[root@server ansible]# ssh-copy-id root@192.168.2.132

【运维】Ansible 自动化运维工具配置及模块使用

测试ssh免密登陆

【运维】Ansible 自动化运维工具配置及模块使用

 

配置hosts文件

备份默认的hosts文件,新建hosts,写入被操作端的服务器IP地址,主机组名为test

[root@server ansible]# mv hosts hosts.bak
[root@server ansible]# vim hosts
[test]
192.168.2.131
192.168.2.132

 

测试

执行ping模块,成功测试主机连通性

[root@server ansible]# ansible test -m ping

【运维】Ansible 自动化运维工具配置及模块使用

到此为止已经部署好ansible主控端,被控端无需任何配置

 

ansible-doc查询命令使用

1.查询可执行模块,用法同vim,可直接输入查找

[root@server ansible]# ansible-doc -l

【运维】Ansible 自动化运维工具配置及模块使用

 

-s 查看模块的具体参数

[root@server ansible]# ansible-doc -s yum

#查看yum模块的具体用法

【运维】Ansible 自动化运维工具配置及模块使用

 

 

ansible命令使用

常用语法

ansible  <主机组/IP地址/IP地址通配符>  -m <模块名>  -a <模块参数>
-t 日志输出
-u 指定用户名
-k 指定密码
-I 指定ansible的hosts文件位置
-f 连接并发数

【运维】Ansible 自动化运维工具配置及模块使用

 

ansible常用模块

setup检索系统信息

#检索系统全部信息,可加参数filter过滤所需要的信息字段

[root@server ansible]# ansible test -m setup

【运维】Ansible 自动化运维工具配置及模块使用

 

【运维】Ansible 自动化运维工具配置及模块使用

 

command&shell 命令执行

command和shell模块都可以执行命令

【运维】Ansible 自动化运维工具配置及模块使用

区别在于shell支持shell的语法,如|&;><

而command不支持

【运维】Ansible 自动化运维工具配置及模块使用

user用户管理

#新建用户,设置用户名为admin,密码为加密后的123

[root@server ansible]# ansible test -m user -a 'name=tao password=mAuu0XQsSEPJg'

【运维】Ansible 自动化运维工具配置及模块使用

测试

ssh登陆

【运维】Ansible 自动化运维工具配置及模块使用

 

#删除用户,状态state=absent

[root@server ansible]# ansible test -m user -a 'name=admin state=absent'
[root@server ansible]# ansible test -m user -a 'name=admin state=absent'

【运维】Ansible 自动化运维工具配置及模块使用

测试

查询系统用户admin,返回空,用户已经删除

【运维】Ansible 自动化运维工具配置及模块使用

 

copy文件分发上传

#分发文件,文件为本地/opt/test.txt,目标路径为/root/

[root@server ansible]# ansible test -m copy -a 'src=/opt/test.txt dest=/root'

【运维】Ansible 自动化运维工具配置及模块使用

 

#强制覆盖上传文件,force=yes

[root@server ansible]# ansible test -m copy -a 'src=/opt/test.txt dest=/root force=yes'

【运维】Ansible 自动化运维工具配置及模块使用

 

#创建备份,当同名文件内容发生变化,将之前存在文件备份为时间日期

[root@server ansible]# ansible test -m copy -a 'src=/opt/test.txt dest=/root backup=yes'

【运维】Ansible 自动化运维工具配置及模块使用

 

#直接写入创建文件,修改文件权限

[root@server ansible]# ansible test -m copy -a 'content="systemctl restart network" dest=/root/excute.sh mode=777'

【运维】Ansible 自动化运维工具配置及模块使用

 

测试

有上传的txt

有上传前备份的test

有上传写入权限777的sh文件

【运维】Ansible 自动化运维工具配置及模块使用

 

yum安装管理

#将test组中的服务器,yum安装ftp

[root@server ansible]# ansible test -m yum -a 'name=ftp'

【运维】Ansible 自动化运维工具配置及模块使用

 

#yum卸载ftp, state=absent

[root@server ansible]# ansible test -m yum -a 'name=ftp state=absent'

【运维】Ansible 自动化运维工具配置及模块使用

 

 

service服务管理

#启动服务mariadb,设置开机自启

# state有四种状态, started-启动服务,stopped停止服务, restarted重启服务,reloaded重载配置

[root@server ansible]# ansible test -m service -a 'name=mariadb state=started enabled=yes'

【运维】Ansible 自动化运维工具配置及模块使用

检测

检测3306端口开启,服务已经正常启动

【运维】Ansible 自动化运维工具配置及模块使用

上一篇:TCP协议的三次握手过程


下一篇:数据库必知词汇:Cassandra