Chinaunix首页 | 论坛 | 博客
  • 博客访问: 23949
  • 博文数量: 4
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 40
  • 用 户 组: 普通用户
  • 注册时间: 2018-04-14 11:46
个人简介

专业打杂,挨踢

文章分类

全部博文(4)

文章存档

2018年(4)

我的朋友

分类: 系统运维

2018-04-26 19:20:36

Ansible优点
轻量级,安装简单。不需要去客户端安装agent,更新时,只需要在操作机上进行一次更新即可,采用SSH协议。       
批量任务执行可以写成脚本,而且不用分发到远程就可以执行。       
使用python编写的,维护更简单。       
支持sudo普通用户命令。
可以批量操作很多机器,可以对机器进行分组。
可以将琐碎的脚本集中在一起操作,集中度较好。
当前项目可以优化的点
应用服务器需要建立普通用户和更改密码,每个项目大概30台服务器,通过跑shell脚本的方式建用户需要安装expect,相对繁琐。通过ansible来管理账户和更新密码,省事省力,只需要在编写yaml文本就可以,通过ansible-playbook定期执行。
应用服务器端需要定期采集软件版本信息,软件项目部署路径,目前通过SHELL脚本定期来收集。每个应用服务器都需要部署计划任务和脚本,采集信息,然后回传给管理服务器。日常机器巡检的量也比较大,通过部署ansible,还可以用来提升人工巡检的效率,解放双手。
Ansible工作机制和命令
部署结构
ansible端------->servers(APP,WEB,DB…)
命令
/usr/bin/ansible:命令行工具
ansible命令通用格式:ansible [options] [-m module_name] [-a args]
/usr/bin/ansible-doc:帮助文档
/usr/bin/ansible-playbook:剧本执行工具
/etc/ansible/ansible.cfg:主配置文件
/etc/ansible/hosts:管理的主机清单
安装ansible
管理机器安装epel yum源
yum install
yum install ansible
注意事项:版本要求
ansible服务器:需要安装 Python2.6/2.7,一般centos6.5自带了python2.6.6版本,无需安装。
管理服务器:需要安装 Python2.4 以上版本,若低于 Python2.5 需要安装 pythonsimplejson; 若启用了 selinux,则需要安装 libselinux-python。Centos6机器默认python2.6以上,centos5机器默认python2.4。
ansible端部署配置
创建用户
/etc/ansible/hosts添加服务器ip,本地编辑好粘贴即可,如下
[servers]
192.168.2.2
192.168.2.3
通过ansible-playbook执行ansible批量新建用户
user.yaml内容如下:
编辑user.yaml
---
- name : create user for all servers and vi sudoer
  hosts: servers
  remote_user: root
   vars:
    user:fhd
  tasks:
  - name: create new user {{ user }}
    user: name={{ user }} shell=/bin/bash password={{ '12345678' |password_hash('sha512') }} update_password=always append=yes
  - name: add user in sudoers
    lineinfile: 
        dest: /etc/sudoers 
        regexp: '^root'
        insertafter: '^root' 
        line: 'fhd  ALL=(ALL)       ALL'


创建的时候需要输入对端服务器root密码
ansible-playbook user.yaml  -k
确认无报错,完成应用服务器用户新建和为应用服务器配置sudo权限


管理应用服务器,采集信息
添加应用机器fhd账户和密码
备份一下之前的hosts文件cp /etc/ansible/hosts /ect/ansible/hosts1
vi添加主机监控账户和密码,本地编辑好粘贴即可。
[servers]
192.168.2.2 ansible_ssh_user=fhd ansible_ssh_pass=12345678
192.168.2.3 ansible_ssh_user=fhd ansible_ssh_pass=12345678
....


手工测试能否正常收集应用服务器的信息
ansible-playbook collect.yaml
---
- name: Transfer and execute a script,copy the result.
  hosts: servers
  remote_user: fhd
  become: yes
  vars:
      sip: "{{ ansible_eth0['ipv4']['address'] }}"
      ftime: "{{ lookup('pipe',' date +%Y%m%d' ) }}"
  tasks:
     - name: create directory
       file: path=/usr/local/process owner=fhd group=fhd mode=0644 state=directory
     - name: Execute the script
       script: /etc/ansible/collect.sh
     - name: copy the txts to ansible server
       fetch: src=/usr/local/process/{{ item }} dest=/home/fhd/{{ ftime }}/ owner=fhd group=fhd mode=0644 flat=yes
       with_items:
            - cron.txt
            - pro.txt
            - port.txt
            - vers.txt


建立计划任务
echo "01 12 * * * ansible-playbook /etc/ansible/collect.yaml" > /var/spool/cron/root
通过yum用扩展源安装,非常方便。
由于是一台控制机,控制所有应用服务器。带来方便的同时,必然需要考虑安全性问题。同时对控制机进行访问权限严格控制。

阅读(4657) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:Centos6.5 yum在线升级mysql5.7.21至mysql5.7.22

给主人留下些什么吧!~~