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 ” 执行

猜你喜欢

转载自blog.csdn.net/wkl1007/article/details/103510310
今日推荐