ansible自动化运维入门

匿名 (未验证) 提交于 2019-12-02 21:53:52

1.ansible的安装

1)使用源码安装Python3.5

安装支持包

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

tar xf Python-3.5.2.tgz -C /usr/src/

./configure --prefix=/usr/local/python/

make && make install

ln -s /usr/local/python/bin/python3 /usr/bin/python3

2)使用pip3安装ansible

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

ln -s /usr/local/python/bin/ansible /usr/local/bin/

2.模块简单使用

1)ansible的配置文件

vim /etc/ansible/hosts

机器1 ansible_ssh_host=ip ansible_ssh_port=22 ansible_ssh_user=root

机器2 ansible_ssh_host=ip ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=666666

  1. ansible_ssh_host ===>主机IP
  2. ansible_ssh_port ===>ssh的默认端口
  3. ansible_ssh_user ===>ssh的用户名
  4. ansible_ssh_pass ===>ssh的用户的连接密码

如果我们已经设置了ssh免密钥了。那么就不需要写密码了。例如:webA

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

yum -y install sshpass

2)进行ansible远程执行命令测试

ansible -i /etc/ansible/hosts 主机或主机组 -m 指定模块 -a 命令

使用ping模块用来查看服务器是否连接正常,ping模块不需要-a指定参数

-m ping

  1. [root@ansible .ssh]# ansible all -m ping
  2. webA | SUCCESS => {
  3. }
  4. webB | SUCCESS => {
  5. }

3)ansible模块command(不支持管道,不建议使用)

ansible all -m command -a "pwd"

ansible all -m command -a "echo bb >> /tmp/testansible"

4)ansible模块shell(支持管道,支持重定向)

ansible all -m shell -a "echo testansible | grep a"

ansible all -m shell -a "echo bb >> /tmp/testansible"

ansible all -m shell -a "cat /etc/passwd | awk -F":" '{print \$1}'"

ansible all -m copy -a "src=/service/scripts/test.txt dest=/service/scripts/"

-m copy -a "src=/service/scripts/test.txt dest=/service/scripts/"

copy模块拷贝文件夹,如果目标路径里有与我拷贝的文件同名文件的话,会直接覆盖目标路径下的文件

参数:backup=yes ===>意思是,如果目标路径下,有与我同名但不同内容的文件时,在覆盖前,对目标文件先进行备份。

ansible webB -m copy -a "src=/service/scripts/ dest=/service/scripts/ backup=yes"

6)ansible的script模块批量运行脚本

在指定的机器上执行本地脚本

3.ansible-playbook的初步使用

playbook的使用,playbook可以把ansible的模块进行组合

cat test_shell.#playbook的执行模板

  1. 模板说明:

执行playbook配置文件,ansible-playbook test_shell.yaml #执行playbook配置文件

1)准备三台Linux,其中一台安装好ansible,三台机器互相连通

2)准备.yaml文件,setup.yaml

---









#!/bin/bash
#in ansible use
#install myysql
#20180731
mysql_tar="mysql-5.6.40.tar.gz"
mysql_dir="mysql-5.6.40"
cmake_tar="cmake-2.8.6.tar.gz"
cmake_dir="cmake-2.8.6"
dest="/service/"

#删旧版本

rpm -e mysql mysql-server --nodeps &>/dev/null
#关防火墙
rpm -q make gcc gcc-c++ &>/dev/null
if [ $? -ne 0 ];then

fi
#安装cmake

cd $dest
tar xf $cmake_tar -C /usr/src/ &>/dev/null
cd /usr/src/$cmake_dir

#删除包
rm -fr /usr/src/$cmake_dir &>/dev/null
cd $dest
rm -fr $cmake_tar
#安装依赖
yum -y install ncurses ncurses-devel &>/dev/null
groupadd mysql &>/dev/null

#解压源码包

tar xf $mysql_tar -C /usr/src/ &>/dev/null
#安装
cd /usr/src/$mysql_dir

#优化
cd /usr/local/mysql

#安装数据


echo "PATH=$PATH:/usr/local/mysql/bin">>/etc/profile

chown -R mysql:mysql /usr/local/mysql/ &>/dev/null

chmod +x /etc/init.d/mysqld
sed -i -e '1a #chkconfig: 35 50 45' /etc/init.d/mysqld
cd $dest
rm -fr /usr/src/$mysql_dir &>/dev/null
rm -fr $mysql_tar

#启动服务

/usr/sbin/chkconfig --add mysqld
/etc/init.d/mysqld start

3)准备好安装包

4)ansible-playbook setup.yaml

剩下的时间,你可以喝杯茶了,休息一下。两台机器部署完成,登录下机器看是否服务启动

成功登录。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!