Centos7安裝ansible


CentOS下部署Ansible自動化工具

1.確保機器上安裝的是 Python 2.6 或者 Python 2.7 版本:

python -V

wKioL1kvfCbzO0vTAAAKtYgsq-I214.png

2.查看yum倉庫中是否存在ansible的rpm包

yum list|grep ansible

若不存在或是低版本可更換yum源或者采用源碼安裝

阿里雲的yum源:http://mirrors.aliyun.com/repo/  備份源文件,然后下載對應的版本至/etc/yum.repos.d/目錄即可,如epel-6.repo (通過該yum源安裝ansible會依賴python 2.6,如果python版本是2.7以上可能會安裝失敗)

wKioL1kvfDSR3cZzAAAZ7DNP8sQ445.png

3.安裝ansible服務:

yum install ansible -y

4.修改ansible配置和主機列表hosts:

1)關閉第一次使用ansible連接客戶端時輸入命令提示:

sed -i "s@\#host_key_checking = False@host_key_checking = False@g" /etc/ansible/ansible.cfg

指定日志路徑:

sed -i "s@\#log_path = \/var\/log\/ansible.log@log_path = \/var\/log\/ansible.log@g" /etc/ansible/ansible.cfg

2)將所有主機ip加入到/etc/ansible/hosts文件中:

定義主機組和主機

wKiom1kvfEPSL34_AAALDgKvzmI430.png

默認ssh的端口為22端口,如果為其他端口號,可在主機名后面加上端口號,如 192.168.159.131:9604 ,也可以修改配置文件中的remote_port變量值

/etc/ansible/hosts也可以定義一個主機范圍,如192.168.159.[100:200] ,表示192.168.159.100 - 192.168.159.200 的主機

5.創建和配置 SSH 公鑰認證(免密碼登錄):

ssh-keygen -t rsa

按提示使用默認配置一路回車即可:

wKioL1kvfFHSTklVAAA-V5vepVg800.png

6.通過ansible將公鑰分發至各主機上:

ansible all -m authorized_key -a "user=root key='{{ lookup('file', '/root/.ssh/id_rsa.pub') }}' path=/root/.ssh/authorized_keys manage_dir=no" --ask-pass -c paramiko

wKioL1kvfF7T4VlnAACF1MzgY-E291.png

需要輸入主機的密碼,若是有的主機密碼不一致,那么該主機會分發失敗,此時只需再執行一遍命令輸入該主機密碼即可。或者先將密碼相同的主機進行分組,然后依次指定主機組執行命令分批分發公鑰。

此命令是通過追加的方式來推送公鑰至authorized_keys,所以不用擔心原來的文件內容會被覆蓋。

到任意一台主機上查看,可以看到公鑰已成功推送:

wKiom1kvfHChwbWpAABIQ5dXUGY294.png

7.修改ansible配置,指定私鑰文件路徑:

sed -i "s@\#private_key_file = \/path\/to\/file@private_key_file = \/root\/.ssh\/id_rsa@g" /etc/ansible/ansible.cfg

8.測試:

wKiom1kvfHzjd6XfAAAMsSxk49U677.png

可以在命令后面加上-vvvv參數查看詳細的輸出結果,尤其是在命令執行失敗需要排錯的時候非常有用。

9.自動化安裝腳本:

注意:

①執行腳本前需要配置/root/hosts主機列表文件,內容如:

[root@localhost ~]# cat /root/hosts

[app]

192.168.159.130

[web]

192.168.159.131

②腳本分發公鑰至遠程主機時會提示輸入遠程主機的密碼

③腳本通過yum方式安裝

腳本內容:

#!/bin/bash 

############################################# 
# author:ellen 
# describes:自動化安裝和配置ansible 
# version:v1.0 
# updated:20170531 
############################################# 

# 主機列表文件 
hostfile='/root/hosts'
# 錯誤信息以紅色顯示 
function _err 

echo -e "\033[1;31m[ERROR] $@\033[0m"

# 一般信息以綠色顯示 
function _info 

echo -e "\033[1;32m[Info] $@\033[0m"

# 僅限指定用戶運行本腳本 
if [ $EUID != "0" ];then
echo "Please use root run script!!!"
exit 1 
fi
rpm -qa|grep ansible 
if [ $? -eq 0 ];then
_err "ansible 已存在,無需重復安裝!退出..."
exit 1 
fi
if [ -e $hostfile ];then
yum list|grep ansible 
if [ $? -ne 0 ];then
_err "倉庫不存在ansible的rpm包,退出..."
exit 1 
else
yum install ansible -y 
if [ $? -eq 0 ];then
_info "ansible 安裝完畢..."
sed -i "s@\#host_key_checking = False@host_key_checking = False@g" /etc/ansible/ansible.cfg 
sed -i "s@\#log_path = \/var\/log\/ansible.log@log_path = \/var\/log\/ansible.log@g" /etc/ansible/ansible.cfg 
cp $hostfile /etc/ansible/hosts
_info "$hostfile 已拷貝至 /etc/ansible/目錄"
ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa
_info "請按以下提示輸入 ${hostfile} 列表中的主機密碼:"
ansible all -m authorized_key -a "user=root key='{{ lookup('file', '/root/.ssh/id_rsa.pub') }}' path=/root/.ssh/authorized_keys manage_dir=no" --ask-pass -c paramiko 
sed -i "s@\#private_key_file = \/path\/to\/file@private_key_file = \/root\/.ssh\/id_rsa@g" /etc/ansible/ansible.cfg 
_info "ansible 已部署完畢!"
else
_err "ansible 安裝失敗!"
fi
fi
else
_err "$hostfile 主機列表文件不存在,請檢查!"
exit 1 
fi

 ansible命令:

在另外兩台機上執行ping命令:ansible group1 -m ping

復制本機文件到組group1:ansible group1 -m copy -a “src=/etc/hosts dest=/etc/”

幫group1安裝軟件:ansible group1 -m shell -a “yum install wget -y”

ansible myservers -a 'pwd

ansible myservers -m script -a "/opt/app/target.sh"

 

參考:https://www.linuxidc.com/Linux/2017-06/144430.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM