基於ansible的生產環境部署構建(五) 角色dns_yum_ntp

角色功能說明:

  • 該角色實現對客戶端主機的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]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章