只有非常努力,才能看起来毫不费力
本文是原创持续连载发布,这篇主要讲解Ansible的搭建及其一些基本的使用命,亲手搭建Ansible环境,因为并没有实战经验,所以本文对于Jenkins+Ansible自动化持续部署没有做讲解(不敢误人子弟),但偶尔会对Ansible在自动化持续部署中所起的作用可讲解一二。如有文中有书写或部署问题,请留言指导修正,互相交流,共同进步,本人QQ:417213902。
一、Ansible 环境搭建
1、Ansible介绍及作用
1.1介绍
Ansible是一种集成IT系统的配置管理, 应用部署, 执行特定任务的开源平台,它基于Python语言实现,部署只需在主控端部署环境, 被控端无需安装代理工具,只需打开SSH,让主控端通过SSH秘钥认证对其进行所有的管理监控操作,相对适合部署到数量比较大且对系统软件安装要求比较严格的集群中。
1.2主要作用
- 配置管理 -playbook
将大量命令行配置集成到一起形成一个可定制的多主机配置管理部署工具,它通过YAML格式定义, 可以实现向多台主机的分发应用部署; - 应用部署
一般都是结合Jenkins配套使用
2、Ansible搭建
- 第一步,安装第三方yum源(也可不执行)
# rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm
说明: 这一步只是为了提供更多、便捷的yum源的软件。
- 第二步,安装Ansible
# yum install ansible -y
说明:需要python环境,初次安装需要一点时间,默认安装目录在/etc/ansible 下 - 第三步,在ansible中配置组
# cd /etc/ansible
# cp hosts hosts.bak
# cat /dev/null > ansible
#vi hosts
[deployServer] #组名称,可根据需求定义
192.168.1.110
192.168.1.112
- 第四步, 配置服务器间的秘钥认证
目的是Ansible宿主服务和应用服务器间通信时不需要再次输入密码
⑴ 在Ansible服务器上生成密钥对,使用ssh-keygen -t rsa命令
# cd ~
# ssh-keygen -t rsa 直接回车
# cd ~/.ssh/
# ll
image.png
出现id_rsa 和 id_rsa.pub 这两个文件表示成功
image.png
⑵把生成的 id_rsa.pub 文件复制到应用服务器上
# scp id_rsa.pub root@192.168.1.110:~/.ssh/
需要输入110服务器的root密码
文件复制成功
把公钥复制到authorized_keys里
⑶验证是否成功
# ssh root@192.168.1.110
应该是无秘自动登录,表示成功,否则请重新检查配置步骤
到目前配置为止,已经Ansible基本配置已经完成
-
第五步,测试
重启deployServer组所有SSH服务
# ansible deployServer -m service -a "name=sshd state=restarted"
image.png
出现以上表示成功,若失败,请检查
1、防火墙是否已经关闭
2、sshd服务是否已经打开
3、秘钥认证是否成功
3、Ansible常用命令
-
远程命令模块
command: 执行远程主机SHELL命令:
# ansible deployServer -m command -a "free -m"
image.png -
远程执行本地SHELL脚本(类似scp+shell)
# echo "date" > ~/test.sh
# ansible deployServer -m script -a "~/test.sh"
image.png copy模块
实现主控端向目标主机拷贝文件, 类似scp功能
# ansible deployServer -m copy -a "src=~/test.sh dest=/tmp/ owner=root group=root mode=0755"stat模块
获取远程文件状态信息, 包括atime, ctime, mtime, md5, uid, gid等信息
# ansible deployServer -m stat -a "path=/etc/sysctl.conf"get_url模块
实现在远程主机下载指定URL到本地
# ansible deployServer -m get_url -a "url=http://www.baidu.com dest=/tmp/index.html mode=0400 force=yes"cron模块
远程主机crontab配置
# ansible deployServer -m cron -a "name='check dir' hour='5,2' job='ls -alh > /dev/null'"service模块
远程主机系统服务管理
# ansible deployServer -m service -a "name=crond state=stopped"
# ansible deployServer -m service -a "name=crond state=restarted"
# ansible deployServer -m service -a "name=crond state=reloaded"user服务模块
远程主机系统用户管理
添加用户:
# ansible deployServer -m user -a "name=deploy comment='test'"
删除用户:
# ansible deployServer -m user -a "name=deploy state=absent remove=yes"
没有具体的实践,不做任何评价,从现在自己的了解程度上来看,还是比较简单的,知识够用就好,需要深入的小伙伴们,可以自行查询官方学习手册,内容还是比较全的。通过这几天的学习,在自动化持续发布中,Ansible其实就是充当着脚本执行的功能,其实感觉如果采用上一篇文章中的插件也是可以实现,好吧!YY结束,有什么问题,留言板、留言板,大家一起学习,讨论,进步!!!
下一篇终于可以开始解决单点问题,自动化部署目前就这样了,后期有什么新的想法再补充。
2017-11-14 23:42:00
参考文档 :
国内最专业的Ansible中文官方学习手册
http://www.ansible.com.cn/docs/playbooks_intro.html#about-playbooks
一路向北的博客
http://www.showerlee.com/archives/1649