云上服务程序采取事务管理,强依赖时间同步,登陆每一台服务器进行安装启动,太麻烦了,肯定是需要批量操作的。
在批量管理工具中,有saltstack,ansible,puppet还有pssh,这里面ansible来说相对轻量且功能比较多,算是比较零门槛的自动化运维工具本文,就ansible的轻量部署安装,以及执行命令进行简单的介绍,此次暂不涉及ansible的playbook。
步骤主要包含:
配置server端和服务器端免密登陆 安装ansible,并进行配置 通过ansible下发安装启动ntp的命令 查看服务器ntp运行状态,以及各服务器之间时间是否有较大差异
说ansible轻量的原因就是因为ansible只需安装server端,不需要安装client,对应用服务器无额外操作,但server端还是需要和各服务器之间通信的,此时有两种方式:
- 密码明文操作,这个在后面介绍ansible具体配置的时候说
- 设置server端和服务器免密登陆,这种方式相对比较安全,下面优先说这种方式
配置服务器免密登陆
key方式登陆服务器
sh-keygen -t rsa
查看公钥位置
ll ~/.ssh/
将公钥推送给服务器
sshpass -p密码 ssh-copy-id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no ip //此步骤可通过脚本方式批量执行完成
参数说明:-I 后面跟公钥 ,-o关闭host key交互
脚本参考:
-------------------------------------此处是ansible正式安装分割线------------------------------------------------
Ansible安装
yum安装方式
#安装ansible依赖包
yum install epel-release -y
#安装ansible
yum install ansible
Ansible配置
Ansible的目录层级如下:
配置文件目录:/etc/ansible/
执行文件目录:/usr/bin/
Lib库依赖目录:/usr/lib/pythonX.X/site-packages/ansible/
Help文档目录:/usr/share/doc/ansible-X.X.X/
Man文档目录:/usr/share/man/man1/
修改ansible.cfg
Vim ansible.cfg
host_key_checking = False //将这行注释打开,避免批量执行命令时需要验证host key导致执行失败
编辑hosts
/etc/ansible/hosts主要是以集群的方式分类被控服务器
vim /etc/ansible/hosts
#在文件最后进行新增。格式如下:
[集群命名]
IP
*通过此类配置后,可直接批量管理集群内配置的服务器*
当不想通过免密登陆的方式管理服务器时,可以通过在/etc/ansible/hosts里配置明文密码的方式
[集群命名]
IP ansible_ssh_user=user ansible_ssh_pass=pass
参数说明:
ansible_ssh_user 是被控机器的登陆用户名
ansible_ssh_pass 是被控机器的登陆密码
探测连通性
#确认ansible server是否可以下发命令到被控机器
ansible xx -m command -a "free -m" //xx为集群名字 “”内的内容为批量执行命令
如果能正常返回被控机器的内存情况,则代表安装已完成
正式执行操作
#批量安装ntp服务并启动
ansible xx -m shell -a "yum install ntp -y && systemctl start ntpd "
#因为ntp服务是缓慢同步的,等待5分钟左右查看状态
ansible xx -m shell -a "systemctl status ntpd && ntpstat"
可选项
设置ntp服务开机自启动
ansible xx -m shell -a " systemctl enable ntpd"
验证命令是否生效
#登陆被控服务器,执行命令查看
date&&ntpstat
ntpq -p
Ntpq -p 每列代表含义
第一列中的字符指示源的质量。星号 ( * ) 表示该源是当前引用。
remote:列出源的 IP 地址或主机名。
when:指出从轮询源开始已过去的时间(秒)。
poll:指出轮询间隔时间。该值会根据本地时钟的精度相应增加。
reach:是一个八进制数字,指出源的可存取性。值 377 表示源已应答了前八个连续轮询。
offset:是源时钟与本地时钟的时间差(毫秒)
至此,ansible的安装配置已完成,且可以正常下发命令
ansible可以做的还有很多,本文只做了简单的基础操作,后续会继续补充