Day 47 Ansible-playbook劇本

Day 47 Ansible-playbook劇本

1.1 Playbook 劇本

playbook是由一個或多個模塊組成的,使用多個不同的模塊,完成一件事情。

yum  copy   service

安裝一個服務,配置,並啓動。

    1.找誰來拍。

    2.大概的任務。

    3.具體怎麼做。

 

1.2 安裝httpd服務->playbook

1.安裝

2.配置

3.啓動

[root@m01 ~]# cat httpd_install.yaml   安裝並配置httpd

#這是一個ansible的playbook

 

- hosts: web     指定主機模塊

  tasks:         執行操作

 

    - name: Install Httpd Server    說明信息

      yum: name=httpd,httpd-tools state=installed      安裝httpd

 

    - name: Configure Httpd Server

      copy: src=./httpd.conf dest=/etc/httpd/conf/httpd.conf   

       本地修改好的配置文件發送到指定主機

 

    - name: Start Httpd Server

      service: name=httpd state=started enabled=yes

       啓動對應服務

2.修改本地拷貝好的httpd.conf文件

3.執行ansible-playbook httpd_install.yaml 推送

 

1.3 環境規劃 (全網備份/實時備份)

角色     外網IP(NAT)    內網IP(LAN)       部署軟件

m01      eth0:10.0.0.61    eth1:172.16.1.61       ansible

backup  eth0:10.0.0.41    eth1:172.16.1.41       rsync

nfs        eth0:10.0.0.31       eth1:172.16.1.31           nfsSersync

web01  eth0:10.0.0.7      eth1:172.16.1.7     httpd

 

1.3.1 目錄規劃

[root@m01 ~]# mkdir /etc/ansible/ansible_playbook/{file,conf,scripts} -p

[root@m01 ~]# tree /etc/ansible/ansible_playbook/

/etc/ansible/ansible_playbook/8

├── conf

└── file

└── scripts

 

1.3.2 基礎環境:所有機器統一的配置

    1.需要關閉firewalld以及selinuxepel倉庫、ssh端口、優化基礎配置

    2.需要安裝rsyncnfs-utils

    3.準備www用戶

    4.需要準備/etc/rsync.pass密碼文件

    5.需要準備全網備份腳本

 

1.3.3 基礎的playbook劇本

[root@m01 ansible_playbook]# cat base.yaml   基礎劇本

- hosts: all     (all:所有主機)指定主機清單內的所有主機

  tasks:          執行操作

 

    - name: Install Epel Repos      說明信息

      get_url: url=http://mirrors.aliyun.com/repo/epel-7.repo dest=/etc/yum.repos.d/epel.repo

      配置epel源

    - name: Dns Client         說明信息

      copy: src=./conf/resolv.conf dest=/etc/resolv.conf

        本地修改好的配置文件發送到指定主機

    - name: Install Rsync Nfs-Utils    說明信息

      yum: name=rsync,nfs-utils state=installed

      安裝指定軟件包

    - name: Create Group WWW    說明信息

      group: name=www gid=666   創建指定組

 

    - name: Create User WWW    說明信息

      user: name=www uid=666 group=666 create_home=no shell=/sbin/nologin

          創建指定用戶

    - name: Create Rsync_Client_Pass   說明信息

      copy: content='1' dest=/etc/rsync.pass mode=600   創建密碼文件並修改權限

 

    - name: Create Scripts Directory     說明信息

      file: path=/server/scripts recurse=yes state=directory    創建指定目錄

 

    - name: Push File Scripts    說明信息

      copy: src=./scripts/rsync_backup_md5.sh dest=/server/scripts/

       本地寫好的腳本推送到指定主機

#!/usr/bin/bash      指定腳本
#
定義變量
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
Ip=`ifconfig eth1|awk 'NR==2{print $2}'`
Host=`hostname`
Date=`date +%F`
Path=/backup
df=${Host}_${Ip}_${Date}
#創建目錄
mkdir -p $Path/$df
#打包重要文件
tar zchf  $Path/$df/system.tar.gz /etc/fstab /etc/rsyncd.conf
tar zchf  $Path/$df/log.tar.gz    /var/log/secure /var/log/messages
#攜帶md5信息
find $Path/$df/ -type f -name "*.tar.gz" |xargs md5sum >$Path/$df/falg_$Date
#不輸入密碼
export RSYNC_PASSWORD=1
#推送至備份服務器
rsync -avz $Path/ [email protected]::backup
#保留七天內的文件
find $Path/ -type d -mtime +7 |xargs rm -rf

    - name: Crontable Scripts           說明信息

      cron: name="backup scripts" hour=01 minute=00 job="/bin/bash /server/scripts/rsync_backup_md5.sh &>/dev/null"

      書寫定時任務

 

1.3.4 應用環境:Rsync

    1.安裝rsync

    2.配置rsync(配置變更,一定要進行重載操作)

    3.創建虛擬用戶,權限調整

    4.創建目錄/data/  /backup

    5.啓動rsync

    6.配置郵箱->郵箱的發件人->校驗的腳本

   

[root@m01 ansible_playbook]# cat rsync.yaml  配置備份服務器的rsync

- hosts: backup    指定主機172.16.1.41

  tasks:           執行操作

    - name: Installed Rsync Server             說明信息

      yum: name=rsync,mailx state=installed     安裝郵件系統

 

    - name: configure Rsync Server                 說明信息

      copy: src=./conf/rsyncd.conf dest=/etc/rsyncd.conf 

本地修改好的配置文件發送到指定主機

      notify: Restart Rsync Server   

      如果配置文件發生改變,則執行handlers中以Restart Rsync Server命名的對應操作

 

    - name: Create Virt User             說明信息

      copy: content='rsync_backup:1' dest=/etc/rsync.password mode=600

       書寫密碼文件並修改權限

 

    - name: Create Data               說明信息

      file: path=/data state=directory recurse=yes owner=www group=www mode=755

      創建目錄並指定屬主和屬組並修改權限

 

    - name: Create Backup              說明信息

      file: path=/backup state=directory recurse=yes owner=www group=www mode=755

       創建目錄並指定屬主和屬組並修改權限

 

    - name: Start RsyncServer              說明信息

      service: name=rsyncd state=started enabled=yes  啓動對應服務

 

    - name: Push Check Scripts          說明信息

      copy: src=./scripts/rsync_check_backup.sh dest=/server/scripts/

          本地寫好的腳本推送到指定主機

#!/usr/bin/bash     指定腳本
#
定義變量
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
Date=`date +%F`
Path=/backup
#驗證md5信息是否正確
find $Path/ -type f -name "falg_$Date"|xargs md5sum -c >$Path/falgmd5_$Date
#清理長時間滯留信息
find $Path/ -type f -name "falgmd5*" -mtime +7 |xargs rm -rf
find $Path/ -type d -mtime +180 |xargs rm -rf
#發送驗證結果給管理員
mail -s "驗證信息$Date" [email protected] <$Path/falgmd5_$Date

    - name: Crond Check Scripts          說明信息

      cron: name="check scripts" hour=05 minute=00 job="/bin/bash /server/scripts/rsync_check_backup.sh &>/dev/null"

      書寫定時任務

  handlers:   觸發notify後執行相對應的操作

    - name: Restart Rsync Server       說明信息

      service: name=rsyncd state=restarted    重啓對應服務

   

1.3.5 應用環境:NFS

    1.安裝nfs-utils

    2.配置nfs     (當修改了配置,觸發重載操作)

    3.創建目錄,授權

    4.啓動

 [root@m01 ansible_playbook]# cat nfs.yaml  共享指定目錄

- hosts: nfs     指定主機172.16.1.31

  tasks:         執行操作

 

    - name: Installed Nfs Server     說明信息

      yum: name=nfs-utils state=installed    安裝指定軟件包

 

    - name: Configure Nfs Server       說明信息

      copy: src=./conf/exports dest=/etc/exports  

本地修改好的配置文件發送到指定主機

      notify: Restart Nfs Server   

      如果配置文件發生改變,則執行handlers中以Restart Nfs Server命名的對應操作

    - name: Create Share Data    說明信息

      file: path=/data state=directory recurse=yes owner=www group=www mode=755

      創建目錄並指定屬主和屬組,修改權限

    - name: Start Nfs Server    說明信息

      service: name=nfs-server state=started enabled=yes

      啓動對應服務

  handlers:     觸發notify後執行相對應的操作

    - name: Restart Nfs Server    說明信息

      service: name=nfs-server state=restarted

      重啓對應服務

 

1.3.6 應用環境:Sersync

    1.下載sersync

    2.解壓,改名,配置

    3.啓動

[root@m01 ansible_playbook]# cat sersync.yaml  實時同步

- hosts: nfs   指定主機172.16.1.31

  tasks:       執行操作

    - name: Scp Sersync       說明信息

      copy: src=./file/sersync2.5.4_64bit_binary_stable_final.tar.gz dest=/usr/local/sersync.tar.gz

      將本地的壓縮包推送至指定主機並改名

    - name: Zip             說明信息

      shell: cd /usr/local && tar xf sersync.tar.gz && mv GNU-Linux-x86 sersync

            進入目錄並解壓,改名

      args:      判斷

        creates: /usr/local/sersync     如果無則創建,有則不改變

   

    - name: configure Sersync          說明信息

      copy: src=./conf/confxml.xml dest=/usr/local/sersync/

        本地修改好的配置文件發送到指定主機並改名

 

    - name: Start Sersync              說明信息

      shell: /usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml

            開啓Sersync服務

 

1.3.7 應用環境:WEB

    [root@m01 ansible_playbook]# cat web.yaml    掛載nfs共享的目錄

- hosts: web     指定主機172.16.1.7

  tasks:         執行操作

 

    - name: Mount NFS Server Share Data     說明信息

      mount: src=172.16.1.31:/data path=/data fstype=nfs opts=defaults state=mounted  

    掛載172.16.1.31共享的目錄/data  掛到哪兒  指定類型   默認defaults  狀態=掛載

 

1.3.8 包含include (執行書寫的所有劇本)

[root@m01 ansible_playbook]# cat mail.yaml    所有劇本

- import_playbook: base.yaml    基礎劇本

- import_playbook: rsync.yaml   配置rsync劇本

- import_playbook: nfs.yaml     配置nfs劇本

- import_playbook: sersync.yaml   配置Sersync劇本

- import_playbook: web.yaml    掛載劇本

 

 

1.3.9 快照還原

    1.推送公鑰

    2.使用ping模塊測試

    3.執行ansible-playbook測試

    4.測試全網備份,測試是否能發郵件,並校驗結果

    5.測試nfs的掛載

    6.測試實時同步   

   

 


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