通过批量启动ntp服务来讲讲ansible的安装配置,


云上服务程序采取事务管理,强依赖时间同步,登陆每一台服务器进行安装启动,太麻烦了,肯定是需要批量操作的。
在批量管理工具中,有saltstack,ansible,puppet还有pssh,这里面ansible来说相对轻量且功能比较多,算是比较零门槛的自动化运维工具

  本文,就ansible的轻量部署安装,以及执行命令进行简单的介绍,此次暂不涉及ansible的playbook。

步骤主要包含:

    配置server端和服务器端免密登陆
    安装ansible,并进行配置
    通过ansible下发安装启动ntp的命令
    查看服务器ntp运行状态,以及各服务器之间时间是否有较大差异

说ansible轻量的原因就是因为ansible只需安装server端,不需要安装client,对应用服务器无额外操作,但server端还是需要和各服务器之间通信的,此时有两种方式:

  1. 密码明文操作,这个在后面介绍ansible具体配置的时候说
  2. 设置server端和服务器免密登陆,这种方式相对比较安全,下面优先说这种方式

配置服务器免密登陆

key方式登陆服务器
sh-keygen -t rsa

image

查看公钥位置
ll ~/.ssh/

image

将公钥推送给服务器
sshpass -p密码 ssh-copy-id  -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no ip  //此步骤可通过脚本方式批量执行完成
参数说明:-I 后面跟公钥 ,-o关闭host key交互
脚本参考:

image

-------------------------------------此处是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可以做的还有很多,本文只做了简单的基础操作,后续会继续补充

相关内容