ansible实现服务器批量初始化


通过ansible的playbook实现服务器批量初始化工作,会节省大量时间,提高工作效率

ansible模块目录结构

$ tree roles/ roles/ └── base ├── defaults ├── files │ ├── puppet.conf │ ├── yum65.repo │ ├── yum67.repo │ └── yum.repo ├── handlers │ └── main.yml ├── meta ├── tasks │ ├── chkconfig.yml │ ├── hostname.yml │ ├── main.yml │ ├── ntpd.yml │ ├── puppet.yml │ ├── repo.yml │ └── route.yml ├── templates │ ├── hosts.j2 │ └── static-routes.j2 └── vars └── main.yml 

入口文件的site.yml

$ more site.yml 
---
- hosts: all
  remote_user: test
  become: yes
  become_method: sudo
  roles:
        - base

模版文件template

修改主机名
$ more base/templates/hosts.j2 
127.0.0.1   {{ ansible_fqdn }}   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         {{ ansible_fqdn }}   localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.1 puppet.server
 
添加静态路由,需要重启网络
$ more base/templates/static-routes.j2 
any net 10.0.0.0/8 gw {{ gateway }}
any net 172.0.0.0/8 gw {{ gateway }}
any net 192.168.1.0/24 gw {{ gateway }}

可以在base/vars/main.yml中定义变量,由于环境特殊,我在命令行中使用变量。

yml中定义使用变量的格式如下
 
name:value

task中的入口文件

$ more base/tasks/main.yml 
---
- include: ntpd.yml
- include: repo.yml
- include: route.yml
- include: hostname.yml
- include: chkconfig.yml
- include: puppet.yml

时间同步

$ more base/tasks/ntpd.yml 
---
- name: sync datatime
  command: /usr/sbin/ntpdate 202.120.2.101
   
- name: sync hwclock
  command: /sbin/hwclock -w

更具不同系统版本配置yum源

$ more base/tasks/repo.yml 
---
- name: configure RedHat5 yum repo
  copy: force=yes src=yum.repo  dest=/etc/yum.repos.d/rhel-debuginfo.repo owner=root group=root mode=0644
  when: ansible_distribution_major_version == '5'
 
- name: configure RedHat6.5 yum repo
  copy: force=yes src=yum65.repo  dest=/etc/yum.repos.d/rhel-debuginfo.repo owner=root group=root mode=0644
  when: ansible_distribution_version == '6.5'
 
- name: configure RedHat6.7 yum repo
  copy: force=yes src=yum67.repo  dest=/etc/yum.repos.d/rhel-debuginfo.repo owner=root group=root mode=0644
  when: ansible_distribution_version == '6.7'

配置路由

$ more base/tasks/route.yml 
- name: config static route
  template:  force=yes src=static-routes.j2 dest=/etc/sysconfig/static-routes owner=root group=root mode=0644
  notify: restart network

批量配置服务器的hostname(动态inventory脚本实现)

$ more base/tasks/hostname.yml 
---
- name: install facter
  yum: name=facter state=latest
 
- name: install rubygem-json
  yum: name=rubygem-json state=latest
 
- hostname: name={{ hostname }}
 
- name : gather facts again
  setup :
 
- name: config hosts
  template:  force=yes src=hosts.j2 dest=/etc/hosts owner=root group=root mode=0644

关闭iptables,sendmail和selinux

$ more base/tasks/chkconfig.yml 
- name: chkconfig off  iptables
  shell: /sbin/chkconfig iptables off
 
- name: stop iptables
  service: name=iptables state=stopped
 
- name: chkconfig off  sendmail
  shell: /sbin/chkconfig sendmail off
 
- name: stop sendmail
  service:  name=sendmail state=stopped 
   
- name: stop selinux 
  command:  /sbin/setenforce  0

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM