CentOS-7快速部署Ansible自動化工具

安裝Ansible自動化工具:

查看 Python 版本

python -V

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

yum list |grep ansible

在這裏插入圖片描述
安裝 ansible 服務

yum install -y ansible

在這裏插入圖片描述

修改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文件中:
定義主機組和主機

cat >/etc/ansible/hosts<<EOF
[app]
192.168.137.132
192.168.137.133
EOF

在這裏插入圖片描述

補充:

默認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 的主機。

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

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

ssh-keygen -t rsa

在這裏插入圖片描述
通過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

在這裏插入圖片描述
登陸 192.168.137.133 進行查看:在這裏插入圖片描述
修改ansible配置,指定私鑰文件路徑:

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

ping 命令測試:

ansible all -m ping

在這裏插入圖片描述

使用ansible-playbook批量安裝mysql:

cd /etc/ansible		#進入目錄
mkdir deploy-yml	#創建目錄
cat >/etc/ansible/deploy-yml/mysql.yml<<EOF	  #創建 mysql.yml 文件
- hosts: mysql-test
  remote_user: root
  gather_facts: False
  roles:
    - mysql
EOF

在這裏插入圖片描述

進入roles 創建mysql 目錄 ,並創建以下目錄及文件:

暫時用不到的目錄爲空:templates、files、handlers、meta
在這裏插入圖片描述

創建 /etc/ansible/roles/mysql/ 下的目錄結構

mkdir files handlers meta tasks templates vars

在這裏插入圖片描述

tasks 下創建copy.yml

cat >tasks/copy.yml<<EOF
#複製源碼至目標服務器
- name: copy mysql source code to client
  copy: src={{mysql_package}} dest={{install_dir}} owner=root group=root
#複製模板文件至目標服務器
- name: copy mysql install script to client
  template: src={{shell_dir}} dest={{install_dir}} owner=root group=root mode=0775
EOF

在這裏插入圖片描述

tasks 下創建install.yml

cat >tasks/install.yml<<EOF
#執行模板文件進行安裝
- name: install mysql
  shell: bash {{install_dir}}/{{shell_name}}
EOF

在這裏插入圖片描述

tasks 下創建main.yml

cat >tasks/main.yml<<EOF
#引用copy、install模塊
- include: copy.yml
- include: install.yml
EOF

在這裏插入圖片描述

vars 下創建main.yml

cat >vars/main.yml<<EOF
mysql_version: mysql-5.7.12
#這裏事先下好了包 放在指定路徑下即可
mysql_package: /usr/local/mysql-5.7.12-linux-glibc2.5-x86_64.tar.gz
shell_name : insmysql.sh
install_dir: /usr/local
shell_dir: /install/insmysql.sh
EOF

在這裏插入圖片描述

在/etc/ansible/hosts 中創建一個mysql-test的組 然後把需要安裝mysql 的ip加進去

此處只做一臺進行測試,批量直接在mysql-test組下添加機器即可 - - 所有機器必須做SSH免密登錄

cat >>/etc/ansible/hosts<<EOF
[mysql-test]
192.168.137.133
EOF

使用 ansible-playbook -C mysql.yml 進行測試在這裏插入圖片描述

測試沒問題之後“ ansible-playbook mysql.yml ” 執行

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