通过shell模块, 编写安装nginx脚本,为yaml脚本,远程到135机器上安装并启动nginx
- hosts: 192.168.45.135
remote_user: root
tasks:
- name: 安装Nginx依赖环境和库文件
yum: name=wget,tar,make,gcc,pcre-devel,pcre,zlib-devel state=installed
- name: 从Nginx官网下载软件包
shell: wget -c http://nginx.org/download/nginx-1.26.1.tar.gz -P /usr/src/
- name: 解压nginx安装包
shell: cd /usr/src/; tar -xzvf nginx-1.26.1.tar.gz
- name: 安装Nginx软件服务
shell: cd /usr/src/nginx-1.26.1/;./configure --prefix=/usr/local/nginx;make;make install
- name: 启动Nginx服务进程;
shell: /usr/local/nginx/sbin/nginx
ansible-playbook -C nginx_install.yaml相当于预编译yaml脚本,也可理解为检查剧本是否正确
ansible-playbook -C nginx_install.yaml
如果编译通过则显示如下截图所示
真正执行时删除掉-C检查即可
ansible-playbook nginx_install.yaml
此时通过前台访问192.168.45.135,即可成功显示nginx欢迎界面
通过script模块,编写shell脚本安装nginx
#!/bin/bash
#2024年9月25日15点12分
#auto install nginx web.
#by author www.jfedu.net
#############################
yum install -y wget tar gcc make pcre-devel zlib-devel
wget -c http://nginx.org//download/nginx-1.26.1.tar.gz -P /usr/src/
cd /usr/src/
ls -l nginx-1.26.1.tar.gz
tar -xzvf nginx-1.26.1.tar.gz
cd nginx-1.26.1/
./configure
make -j4
make -j4 install
/usr/local/nginx/sbin/nginx
firewall-cmd --add-port=80/tcp --permanent
systemctl reload firewalld.service
查看script模块命令运行规则ansible-doc script
执行以下命令远程在138上执行auto_install_nginx.sh脚本,自动安装配置nginx
ansible 192.168.45.138 -m script -a "/root/auto_install_nginx.sh"
显示以下结果即为成功,下方防火墙报错可忽略,因为138的防火墙已经处于关闭状态
在138上即可看到安装的nginx进程,并且可在前台访问到nginx服务
通过ansible拷贝模块可以拷贝内容到远程机器
ansible 192.168.45.138 -m copy -a "src=/root/auto_install_nginx.sh dest=/tmp/"
之后可以通过shell模块取远程执行138下的shell脚本
ansible 192.168.45.138 -m shell -a "/bin/sh /tmp/auto_install_nginx.sh"
ansible 192.168.45.138 -m shell -a "/bin/sh /tmp/auto_install_nginx.sh"