一 安装Ansible
1.更改名字(双节点)
2. ansible-01节点安装epel-release
3.安装ansible前先关闭防火墙,selinux等服务
(防火墙这里是friewalld,selinux立即生效是seteforce 0)
4.配置主机映射文件(双节点)![在这里插入图片描述](https://img-blog.csdnimg.cn/20210526104012686.png#pic_center)
5. 01节点安装ansible
6.双节点配置免密
(ssh命令)
7.再服务器节点(01节点)的ansible的配置文件中(vi /etc/ansible/hosts)增加点东西(即主机群)
(添加完成后,再按照第六不把127.0.0.1设置免密)
二 Ansible的使用
1.远程执行命令
ansible远程执行命令ansible+主机ip或者组 -m +模块名 -a ‘命令’:测试命令(查看主机名)
本地主机测试
### 远程主机测试
批量测试主机组的主机名(即主机群)
shell模块测试(查看主机名)
ansible拷贝文件或者目录:ansible+主机名 -m copy模块 -a “src源地址() + dest目标地址 + 所属用户 + 所属组 + 权限”
如果只能目标目录不存在他会自动创建
如果拷贝的是文件,dest指定名字和源文件名字不同且不是已存在目录则相当于拷贝过去并重命名
相反,dest是目标机上已存在目录就会把文件拷贝到该目录下面
testhost(主机群)拷贝测试
结果
ansible远程执行脚本:编写一个脚本并发送到主机/远程主机上
远程执行脚本:
shell还支持管道符,例
ansible管理任务计划:ansible +主机 -m +模块 -a “name=‘任务名称’ + job='命令 + 创建的目录和文件‘ 时间"例定时创建文件:
删除任务计划:(只需要再名字后面加state=absent)
(文件为空就是删除成功了)
ansible安装rpm包/管理服务:(ansible testhost(主机)m模块 -a “name=安装模块的名字(服务的名字)
ansible命令远程启动httpd服务,并设置开机自启(ansible+主机 -m service模块 -a "name=服务名称 + state=启动/关闭 + enable=yes/ no”)
state=started就是启动成功了
ansible文档的使用:ansible-doc -l 列出所有模块;ansible-doc cron查看指定模块的文档
ansible playbook的使用:(后缀必须是yml;运行playbook的时候要加绝对路径)
结果
第二种:(创建用户)
结果
ansible-palybook中的循环:
结果:
三。ansible-playbook实战安装nginx(1-3)
1.本机(01节点)安装nginx
1:先在本机编译安装nginx:本机下载nginx的安装包
解压安装包:
安装依赖包:(双节点)
进入到nginx目录下进行编译
,完成后安装
然后用echo $?命令检测有无错误,,返回零就是没有;
接下来是配置文件(下面是文件一部分)
配置nginxconf 文件(这里文件中的中文要删除)
检查一遍有没有错误:(这样是没有错误的)
启动nginx服务(这里可能会报权限不够,给权限就可以了)
nginx成功以后是这样的
2.编写配置文件
1.创建目录文件,打包nginx,并移动到对应目录
2.打包nginx:这里是把/usr/local/下的nginx打包(打包命令tar -zcvf nginx.tar.gz nginx/)
3.然后把这个包移动到file目录下
4.把nginx的配置文件复制到install的templates下
5.编译安装文件也要复制到templates下
ansible-playbook nginx的文件编辑:创建main.yml文件
1.(在/etc/ansinble/nginx_install/roles/common/tasks/目录下编译)
2.然后再在install目录下的vars下创建main.yml
3.在install/tasks下创建copy脚本
4.在install/tasks下编译install.yml:
5.创建调用文件(还是在install/tasks文件下):
6.最后在nginx_install目录下编译执行文件
7.执行nginx安装和结果:
结果:
ansible-playbook管理配置文件:
创建目录:
1.没有虚拟主机vhosts目录,所以要在/usr/local/nginx/conf目录下新建一个
2.在vhosts目录下创建1.conf(文件名随意),再在上级目录(/usr/local/nginx/conf)修改一下nginx.conf文件
3.(31节点也要修改配置文件);把虚拟主机和配置文件复制到cp /etc/ansible/ nginx_config/roles/new/files目录下(-r参数是可以把子文件一起复制)
4.创建vi文件:在roles/new/ vars下创建main.yml文件(定义变量)
5.在roles/new/handlers下创建:main(定义重新加载nginx服务)
6.在roles/new/tasks下创建main内容:(核心任务文件)
最后在定义个入口配置文件:(在/etc/ansible/ nginx_config下创建)
执行 ansible-playbook /etc/ansible/ nginx_config/update.yml :
回滚:使用rsync把new里面的文件内容发送到old上(-a使用递归方式传送文件,并保留属性和权限;-v显示过程):(没有rsync命令的自行下载)
定义回滚入口配置(在/etc/ansible/ nginx_config下配置):
执行 ansible-playbook /etc/ansible/ nginx_config/rollback.yml 命令: