ansible自動化(二)
一、安裝支持包
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自動化(二)