自动化运维软件ansible

自动化运维软件ansible_第1张图片

 一、ansible


基于python语言。简单快捷,被管理端不需要启服务。直接走ssh协议,需要验证,所以机器多的话速度会较慢。

自动化运维软件ansible_第2张图片

 1、ansible环境搭建

自动化运维软件ansible_第3张图片

 5.确认和配置yum源(需要epel源)

自动化运维软件ansible_第4张图片

 免密登录复制的时候可以直接  写ip 不加参数-i

  2、服务器分组(主机清单)

 配置主服务器

自动化运维软件ansible_第5张图片

 自动化运维软件ansible_第6张图片自动化运维软件ansible_第7张图片

 自动化运维软件ansible_第8张图片

 自动化运维软件ansible_第9张图片

 自动化运维软件ansible_第10张图片修改ssh服务的端口号22改成2222  vim /etc/ssh/sshd_config  修改后systemctl restart sshd

自动化运维软件ansible_第11张图片没有做免密登录的服务器可以指定用户名与密码
自动化运维软件ansible_第12张图片自动化运维软件ansible_第13张图片

 小结:
主机清单的作用:服务器分组。

主机清单的常见功能:
1.可以通过IP范围来分,主机名名字的范围来分

2.如果ssh端口不是22的,可以传入新的端口。

3.没有做免密登录,可以传密码。

 3、ansible模块

 3.1、hostname

修改主机清单里的主机名称

hostname模块用于修改主机名(注意:它不能修改/etc/hosts文件)
https:/docs.ansible.com/ansible/latest/modules/hostname module.html#hostname-module

将其中一远程机器主机名修改为agent1.cluster.com
master# ansible 10.1.1.12 -m hostname -a 'name=agent1.cluster.com '

2基本格式为: ansible操作的机器名或组名 -m模块名 -a"参数1=值1参数2=值2
 

自动化运维软件ansible_第14张图片

 用别名修改主机名称自动化运维软件ansible_第15张图片自动化运维软件ansible_第16张图片

 

3.2、 file模块(重点)


file模块用于对文件相关的操作(创建,删除,软硬链接等)
https://docs.ansible.com/ansible/latest/modules/file module.html#file-module
自动化运维软件ansible_第17张图片

 absent缺席 自动化运维软件ansible_第18张图片

 src=/etc/fstab 是源链接  设置新的软链接路径path

 自动化运维软件ansible_第19张图片

这些参数可以在官方文档里面查

自动化运维软件ansible_第20张图片

 3.3、copy模块(重点)

dns域名和主机名的区别是  域名是外网  主机名是内网  都需要解析 但是外网不用搭建dns服务器了
copy模块用于对文件的远程拷贝操作(如把本地的文件拷贝到远程的机器上)
https://docs.ansible.com/ansible/latest/modules/copy_module.html#copy-module

在master上准备一个文件,拷贝此文件到group1的所有机器上

自动化运维软件ansible_第21张图片

 为了避免重要的配置文件被覆盖,最好备份

自动化运维软件ansible_第22张图片

 自动化运维软件ansible_第23张图片

 自动化运维软件ansible_第24张图片

 自动化运维软件ansible_第25张图片

 

 因为copy模块无法自动删除多余的内容,所以为了保证目录的内容一致,必须先删除目录再copy

但是rsync -a --delete 可以实现自动同步并删除多余的内容

自动化运维软件ansible_第26张图片

 自动化运维软件ansible_第27张图片

 自动化运维软件ansible_第28张图片

 

 fetch模块不能拷贝目录   主要是把其他服务器的日志文件整合在本地服务器方便查看自动化运维软件ansible_第29张图片

 自动化运维软件ansible_第30张图片

自动化运维软件ansible_第31张图片自动化运维软件ansible_第32张图片 自动化运维软件ansible_第33张图片

 remove 相当于userdel -r 

自动化运维软件ansible_第34张图片

 uid只要是0就是root用户

自动化运维软件ansible_第35张图片

 自动化运维软件ansible_第36张图片

 自动化运维软件ansible_第37张图片

 组冲突的时候(用户的组id是此组则无法删除)必须先删除bbb用户,必须家目录也删除remove=yes 才能删除aaa

自动化运维软件ansible_第38张图片时间任务的日志查看 cat  /var/log/cron

crontab -e  编辑时间任务  crontab -l 查看时间任务  默认是root用户

vim /var/spool/cron/user1  创建其他用户的定时任务

自动化运维软件ansible_第39张图片

 

 自动化运维软件ansible_第40张图片

 

 自动化运维软件ansible_第41张图片

 copy模块也能实现复制 拷贝 

 

 自动化运维软件ansible_第42张图片

 自动化运维软件ansible_第43张图片删除不需要的yum源  path=/etc/yum.repos.d/

 装包

 

 

 

 自动化运维软件ansible_第44张图片

 自动化运维软件ansible_第45张图片

 自动化运维软件ansible_第46张图片

 自动化运维软件ansible_第47张图片

 

 在shell编程中,“EOF”通常与“<<”结合使用,“<

  EOF是End of file的缩写,自定义终止符。

  既然是分界符,那么形式自然不是固定的,这里可以将”EOF“可以进行自定义,但是前后的”EOF“必须成对出现且不能和shell命令冲突。其使用形式如下:

交互式程序 << EOF
command1
command2
...
EOF

       ”EOF“中间的内容将以标准输入的形式输入到”交互式程序“,当shell看到”<<“知道其后面输入的分界符,当shell再次看到分界符时,两个分界符中间的部分将作为标准输入。

       "EOF"一般常和cat命令连用,通过cat配合重定向能够生成文件并追加操作,在它之前先熟悉几个特殊符号:

  • <:输入重定向
  • >:输出重定向
  • >>:输出重定向,进行追加,不会覆盖之前的内容
  • <<:标准输入来自命令行的一对分隔号的中间内容

自动化运维软件ansible_第48张图片

 三、playbook

自动化运维软件ansible_第49张图片

 同等的参数必须对齐

自动化运维软件ansible_第50张图片

 自动化运维软件ansible_第51张图片

 执行剧本的命令:ansible-playbook 剧本  开机自启服务千万不能设置restarted,会话可能无法保持,就算配置文件是一样的也会断开连接自动化运维软件ansible_第52张图片

 可视化效果好

  •  幂等性,出现错误不需要重新推倒重做,也不用快照

自动化运维软件ansible_第53张图片

 apache的端口是Listen 80

会话保持存储在redis  

练习:写一个playbook实现

1.配置yum
2.安装vsftpd包
3.修改配置文件(要求拒绝匿名用户登录)

4.启动服务并实现vsftpd服务开机自动启动


 

第一步:在主服务器安装vsftpd 并创建配置文件

 修改配置文件(要求拒绝匿名用户登录)

vim  /etc/vsftpd/vsftpd.conf

自动化运维软件ansible_第54张图片自动化运维软件ansible_第55张图片

 自动化运维软件ansible_第56张图片

 

自动化运维软件ansible_第57张图片 

 ansible实现nfs服务器的自动挂载自动化运维软件ansible_第58张图片

 ... 三个点结束  千万注意---只能用在第一行,否则会报错

自动化运维软件ansible_第59张图片

 自动化运维软件ansible_第60张图片

开启剧本playbook

 

 

 setup 这个包服务端也必须安装

vim  /etc/exports

自动化运维软件ansible_第61张图片

 自动化运维软件ansible_第62张图片

 四、roles(难点)

roles介绍


roles(角色):就是通过分别将variables, tasks及handlers等放置于单独的目录中,并可以便捷地调用它们的一种机制。
假设我们要写一个playbook来安装管理lamp环境,那么这个playbook就会写很长。所以我们希望把这个很大的文件分成多个功能拆分,分成apache管理,php管理,mysql管理,然后在需要使用的时候直接调用就可以了,以免重复写。就类似编程里的模块化的概念,以达到代码复用的效果。

就相当于函数的封装并调用

自动化运维软件ansible_第63张图片

 自动化运维软件ansible_第64张图片

 第一步:在 roles目录下创建roles结构自动化运维软件ansible_第65张图片

 报错是因为没有上层目录 需要+p  这里创建的是apache的roles自动化运维软件ansible_第66张图片

 lamp架构还需要创建mysql、php

 自动化运维软件ansible_第67张图片

 自动化运维软件ansible_第68张图片

 自动化运维软件ansible_第69张图片

 自动化运维软件ansible_第70张图片

 自动化运维软件ansible_第71张图片

 安装apache自动化运维软件ansible_第72张图片

 安装mariadb数据库

也是要切换到数据库mysql目录下vim  /tasks/main.yml

自动化运维软件ansible_第73张图片

 安装php

 自动化运维软件ansible_第74张图片

 自动化运维软件ansible_第75张图片自动化运维软件ansible_第76张图片

 安装完成之后可以直接访问服务器ip/index.html 和test.php测试

ansible自动安装部署论坛discuz应用

自动化运维软件ansible_第77张图片

 vim   /httpd/tasks/main.yml自动化运维软件ansible_第78张图片

 

 创建数据库并授权

vim  /mysql/files/create.sh

自动化运维软件ansible_第79张图片

 在 mysql里面执行建库

vim  /mysql/tasks/main.yml

自动化运维软件ansible_第80张图片

 ansible-playbook  /etc/ansible/playbook/lamp.yml

运行剧本文件之后查看数据库信息自动化运维软件ansible_第81张图片

 du  -sh  目录 查看目录 的具体大小 M

这个思路拷贝upload 费时间,不如直接拷贝压缩包过去

因为单个文件的拷贝速度快

 

自动化运维软件ansible_第82张图片

 自动化运维软件ansible_第83张图片

 自动化运维软件ansible_第84张图片

 php模块里面还需要加php-mysql

自动化运维软件ansible_第85张图片

 ansible自动部署lnmp架构

自动化运维软件ansible_第86张图片

 自动化运维软件ansible_第87张图片

 自动化运维软件ansible_第88张图片

 {}这种写法是因为版本太老,所以可以用之前的写法 

自动化运维软件ansible_第89张图片自动化运维软件ansible_第90张图片

 自动化运维软件ansible_第91张图片

 自动化运维软件ansible_第92张图片

 自动化运维软件ansible_第93张图片

 运维体系思路自动化运维软件ansible_第94张图片

 

你可能感兴趣的:(自动化,运维)