1. 程式人生 > >ansible自動化(二)

ansible自動化(二)

一個 ansi 利用 ins ssl inux 源碼編譯 方式安裝 需要

一、安裝支持包

  yum -y install lrzsz vim net-tools gcc gcc-c++ ncurses ncurses-devel zlib-devel zlib openssl-devel openssl

二、源碼編譯Python3.5

  下載安裝包:技術分享圖片

  解壓: tar xf Python-3.5.2.tgz -C /usr/src/

  移動: cd /usr/src/Python-3.5.2/

  預配置: ./configure --prefix=/usr/local/python/

  編譯: make && make install

  創建軟鏈接: ln -s /usr/local/python/bin/python3 /usr/bin/python3

  查看命令是否存在: which python3

  查看命令版本: python3 -V (linux下默認2.6版本,基本不用)

技術分享圖片

三、使用pip3安裝ansible(ansible的批量分發調用模塊時,基本都需要Python)

安裝ansible最新版本(用pip3的方式安裝,下了Python就有這個命令,這是開發裝軟件的方式,需要用到網絡):

  /usr/local/python/bin/pip3 install ansible

若在此處報錯pip,就按下條命令執行:

  /usr/local/python/bin/pip3 install --upgrade pip

  /usr/local/pyhton/bin/pip3 install ansible

安裝好ansible後,創建軟鏈接: ln -s /usr/local/pyhton/bin/ansible /usr/local/bin

查看命令: which ansible

查看ansible的版本: ansible --version

技術分享圖片

ansible查看幫助:

查看ansible的總幫助: /usr/local/python/bin/ansible-doc -l

查看shell模塊的幫助: /usr/local/python/bin/ansible-doc(總幫助) -s(選擇模塊) shell

           /usr/local/python/bin/ansible-doc -s raw

四、分發密鑰

生成密鑰對: ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ""

技術分享圖片

分發密鑰: scp .ssh/id_rsa.pub [email protected]:/root/.ssh

技術分享圖片

測試免密連接: ssh 192.168.126.151 (默認用root連接)

技術分享圖片

五、ansible連接web服務器的配置文件

創建目錄: mkdir -p /etc/ansible

創建文件: touch /etc/ansible/hosts\

寫入配置文件內容: vim /etc/ansible/hosts (這裏的主機名可以不映射,因為後面的IP已經映射過了)

技術分享圖片

六、ansible的使用方法

獲取web的平均負載值: ansible web01 -m command -a ‘uptime‘

ansible -i /etc/ansible/hosts/ 主機或主機組 -m 指定模塊 -a 命令

-i (指定配置文件位置,如果不指定,默認到ansible配置文件/etc/ansible/hosts找)

檢查服務器是否正常: ansible all -m ping (ping不需要-a指定參數)

技術分享圖片

command模塊 命令不支持管道符、重定向操作 (連接端需要支持Python)

技術分享圖片

shell模塊 命令支持管道符、重定向操作。shell模塊大部分命令都支持。(連接端需要支持Python)

技術分享圖片

raw模塊 最原始的方式執行命令(只有極少數情況下使用,可以不依賴Python,僅通過ssh實現。)

技術分享圖片

copy模塊 批量下發文件或文件夾自動備份,更改屬主屬組。

技術分享圖片

技術分享圖片

script模塊 能夠實現遠程服務器批量運行本地的shell腳本/server/scripts/

編譯腳本:

技術分享圖片

編寫nginx安裝腳本: vim auto_nignx.sh

#!/bin/sh
#nginx install shell scripts

test -d /media/cdrom || mkdir -p /media/cdrom
mount /dev/sr0 /media/cdrom &> /dev/null
yum -y install gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel &> /dev/nul
l
test -d /service/scripts || exit 3
cd /service/scripts
tar xf nginx-1.10.2.tar.gz -C /usr/src
cd /usr/src/nignx-1.10.2/
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module &> /d
ev/null
make &> /dev/null
make install &> /dev/null
exit 0

編寫分發腳本: vim fenfa.sh

#!/bin/sh

Group=$1

ansible $Group -m copy -a "src=/service/scripts dest=/bin/sh /service/scripts/ mode=0755"
ansible $Group -m scripts -a "/service/scripts/auto_nginx.sh"

執行分發腳本:

技術分享圖片

七、劇本play-book和ansible共同使用的方式

創建軟鏈接: ln -s /usr/local/python/bin/ansible-playbook /usr/local/bin/

查看命令: which ansible-playbook

技術分享圖片

設定劇本: vim test_shell.yaml

劇本用.yaml結尾。

技術分享圖片

執行劇本: ansible-playbook test_shell.yaml

技術分享圖片

當傳輸過程中出錯誤時,更改一下配置文件: vim /etc/ssh/sshd_config

更改配置文件之後需要重啟: service sshd reload

技術分享圖片

技術分享圖片

nignx配置下發並檢測:

技術分享圖片

在劇本中引入自定義變量:

技術分享圖片

ansible系統內置變量的取用方法: ansible all(或自己的IP地址) -m setup | less

技術分享圖片

python3的使用方法:

在命令界面直接輸入python3

Python3中取鍵值的方法:

技術分享圖片

利用template模塊下發可變的配置文件:

技術分享圖片

技術分享圖片

技術分享圖片

  下發配置文件裏面使用判斷語法:

技術分享圖片

  測試執行(自定義一個端口號):

技術分享圖片

  執行腳本:

技術分享圖片

技術分享圖片

  測試不定義端口號(置空):

技術分享圖片

  再次執行腳本:

技術分享圖片

技術分享圖片

playbook的notify通知和下發nginx配置

如果你下發的文件引起它改變了,它通知在執行一遍文件,如果他沒有引起改變,則通知不下發就不會觸發改變對方服務。

技術分享圖片

技術分享圖片

ansible自動化(二)