角色功能說明:
- 該角色實現對客戶端主機的dns服務器、yum倉庫和ntp服務器的配置
- 該角色可以反覆執行以達到重新部署或升級部署的功能
角色部署:
- 創建目錄結構,創建軟連接,關聯默認變量文件
WorkDir=~/devops/ansible/os_init && cd ${WorkDir}
RoleName=dns_yum_ntp
mkdir -pv roles/${RoleName}/{defaults,files,handlers,meta,tasks,templates,vars}
ln -s ${WorkDir}/defaults_var.yml roles/${RoleName}/defaults/main.yml
- 配置dns模版文件,如果環境中包含多個機房,每個機房的dns配置不同時,爲每個機房配置各自的dns模版文件
cat >roles/${RoleName}/templates/dns_192.168.j2<<EOF
nameserver 192.168.1.190
nameserver 223.5.5.5
EOF
- 配置修改ntp的腳本模版文件,如果環境中包含多個機房,每個機房的ntp配置不同時,爲每個機房配置各自的修改ntp的腳本模版文件
cat >roles/${RoleName}/templates/ntp_192.168.j2<<EOF
#!/bin/bash
source /etc/profile
sed -i '/.*ntpdate.*/d' /etc/rc.d/rc.local /var/spool/cron/root
echo '/usr/sbin/ntpdate -u ntp1.aliyun.com'>>/etc/rc.d/rc.local
sed -i 's|.*OS Time Sync.*|&\n0 * * * * /usr/sbin/ntpdate -u ntp1.aliyun.com>>/root/ntpdate.log 2>\&1;/sbin/hwclock -w|g' /var/spool/cron/root
EOF
- 創建角色任務
cat >roles/${RoleName}/tasks/main.yml<<\EOF
---
- name: "定位機房"
shell:
"echo {{ ansible_ssh_host }}|awk -F'.' '{print $1\".\"$2}'"
register: local
- name: "根據位置匹配dns模版"
template:
src: dns_{{ local.stdout }}.j2
dest: /etc/resolv.conf
force: yes
owner: root
group: root
mode: 0644
- name: "獲取yum配置目錄中所有文件"
shell:
ls
args:
chdir: /etc/yum.repos.d/
register: files_list
- name: "刪除yum配置目錄中所有文件"
file:
path: /etc/yum.repos.d/{{ item }}
state: absent
with_items:
- "{{ files_list.stdout_lines }}"
- name: "添加yum倉庫base,CentOS6和CnetOS7通用"
yum_repository:
name: aliyun_base
description: base
baseurl: http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
enabled: yes
gpgcheck: no
file: CentOS_Base_Updates_Extras_Epel
reposdir: /etc/yum.repos.d/
state: present
- name: "添加yum倉庫updates,CentOS6和CnetOS7通用"
yum_repository:
name: aliyun_updates
description: updates
baseurl: http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
enabled: yes
gpgcheck: no
file: CentOS_Base_Updates_Extras_Epel
reposdir: /etc/yum.repos.d/
state: present
- name: "添加yum倉庫extras,CentOS6和CnetOS7通用"
yum_repository:
name: aliyun_extras
description: extras
baseurl: http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
enabled: yes
gpgcheck: no
file: CentOS_Base_Updates_Extras_Epel
reposdir: /etc/yum.repos.d/
state: present
- name: "添加yum倉庫epel,CentOS6和CnetOS7通用"
yum_repository:
name: aliyun_epel
description: epel
baseurl: http://mirrors.aliyun.com/epel/$releasever/$basearch/
enabled: yes
gpgcheck: no
file: CentOS_Base_Updates_Extras_Epel
reposdir: /etc/yum.repos.d/
state: present
- name: "根據位置傳輸ntp腳本模版"
template:
src: ntp_{{ local.stdout }}.j2
dest: /tmp/ntp.sh
force: yes
owner: root
group: root
mode: 0644
- name: "執行ntp腳本,修改ntp"
shell:
bash /tmp/ntp.sh
EOF
- 創建任務playbook並執行
cat >os-init-4-${RoleName}.yml<<EOF
---
- hosts: all
remote_user: root
gather_facts: false
become: no
roles:
- ${RoleName}
EOF
ansible-playbook -i inventory/hosts os-init-4-${RoleName}.yml
[TOC]