基于python语言。简单快捷,被管理端不需要启服务。直接走ssh协议,需要验证,所以机器多的话速度会较慢。
5.确认和配置yum源(需要epel源)
配置主服务器
修改ssh服务的端口号22改成2222 vim /etc/ssh/sshd_config 修改后systemctl restart sshd
小结:
主机清单的作用:服务器分组。
主机清单的常见功能:
1.可以通过IP范围来分,主机名名字的范围来分
2.如果ssh端口不是22的,可以传入新的端口。
3.没有做免密登录,可以传密码。
修改主机清单里的主机名称
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
file模块用于对文件相关的操作(创建,删除,软硬链接等)
https://docs.ansible.com/ansible/latest/modules/file module.html#file-module
src=/etc/fstab 是源链接 设置新的软链接路径path
这些参数可以在官方文档里面查
dns域名和主机名的区别是 域名是外网 主机名是内网 都需要解析 但是外网不用搭建dns服务器了
copy模块用于对文件的远程拷贝操作(如把本地的文件拷贝到远程的机器上)
https://docs.ansible.com/ansible/latest/modules/copy_module.html#copy-module
在master上准备一个文件,拷贝此文件到group1的所有机器上
为了避免重要的配置文件被覆盖,最好备份
因为copy模块无法自动删除多余的内容,所以为了保证目录的内容一致,必须先删除目录再copy
但是rsync -a --delete 可以实现自动同步并删除多余的内容
fetch模块不能拷贝目录 主要是把其他服务器的日志文件整合在本地服务器方便查看
remove 相当于userdel -r
uid只要是0就是root用户
组冲突的时候(用户的组id是此组则无法删除)必须先删除bbb用户,必须家目录也删除remove=yes 才能删除aaa
crontab -e 编辑时间任务 crontab -l 查看时间任务 默认是root用户
vim /var/spool/cron/user1 创建其他用户的定时任务
copy模块也能实现复制 拷贝
删除不需要的yum源 path=/etc/yum.repos.d/
装包
在shell编程中,“EOF”通常与“<<”结合使用,“< EOF是End of file的缩写,自定义终止符。 既然是分界符,那么形式自然不是固定的,这里可以将”EOF“可以进行自定义,但是前后的”EOF“必须成对出现且不能和shell命令冲突。其使用形式如下: ”EOF“中间的内容将以标准输入的形式输入到”交互式程序“,当shell看到”<<“知道其后面输入的分界符,当shell再次看到分界符时,两个分界符中间的部分将作为标准输入。 "EOF"一般常和cat命令连用,通过cat配合重定向能够生成文件并追加操作,在它之前先熟悉几个特殊符号: 同等的参数必须对齐 执行剧本的命令:ansible-playbook 剧本 开机自启服务千万不能设置restarted,会话可能无法保持,就算配置文件是一样的也会断开连接 可视化效果好 apache的端口是Listen 80 会话保持存储在redis 练习:写一个playbook实现 1.配置yum 4.启动服务并实现vsftpd服务开机自动启动 第一步:在主服务器安装vsftpd 并创建配置文件 修改配置文件(要求拒绝匿名用户登录) vim /etc/vsftpd/vsftpd.conf ... 三个点结束 千万注意---只能用在第一行,否则会报错 开启剧本playbook setup 这个包服务端也必须安装 vim /etc/exports 就相当于函数的封装并调用 报错是因为没有上层目录 需要+p 这里创建的是apache的roles 安装mariadb数据库 也是要切换到数据库mysql目录下vim /tasks/main.yml 安装php 安装完成之后可以直接访问服务器ip/index.html 和test.php测试 ansible自动安装部署论坛discuz应用 创建数据库并授权 vim /mysql/files/create.sh 在 mysql里面执行建库 vim /mysql/tasks/main.yml ansible-playbook /etc/ansible/playbook/lamp.yml du -sh 目录 查看目录 的具体大小 M 这个思路拷贝upload 费时间,不如直接拷贝压缩包过去 因为单个文件的拷贝速度快 php模块里面还需要加php-mysql {}这种写法是因为版本太老,所以可以用之前的写法 交互式程序 << EOF
command1
command2
...
EOF
三、playbook
2.安装vsftpd包
3.修改配置文件(要求拒绝匿名用户登录)
ansible实现nfs服务器的自动挂载
四、roles(难点)
roles介绍
roles(角色):就是通过分别将variables, tasks及handlers等放置于单独的目录中,并可以便捷地调用它们的一种机制。
假设我们要写一个playbook来安装管理lamp环境,那么这个playbook就会写很长。所以我们希望把这个很大的文件分成多个功能拆分,分成apache管理,php管理,mysql管理,然后在需要使用的时候直接调用就可以了,以免重复写。就类似编程里的模块化的概念,以达到代码复用的效果。 ansible自动部署lnmp架构
运维体系思路