当前位置: 首页 > article >正文

ansible自动化playbook简单实践

方法一:部分使用ansible

基于现有的nginx配置文件,定制部署nginx软件,将我们的知识进行整合 定制要求:
启动用户:nginx-test,uid是82,系统用户,不能登录
启动端口82 web项目根目录/data/webserver/html
默认首页:index.html
首页内容:"welcome to ansible"

1.1 准备工作 

  • 前提:三台系统都是rocky
    检查系统:确保三台主机的 Rocky 系统已联网,能正常安装软件包。
  • 关闭防火墙和 SELinux (测试环境建议关闭,生产环境按需配置规则):
    关闭防火墙:systemctl stop firewalld;systemctl disable firewalld

永久关闭 SELinux(需重启生效):编辑 /etc/selinux/config 文件,将 SELINUX=enforcing 改为 SELINUX=disabled 

1.2 创建启动用户

在每台主机上执行以下命令创建 nginx-test 用户,且设置为系统用户、不能登录:
useradd -u 82 -s /sbin/nologin nginx-test

1.3 安装 Nginx

yum install nginx -y  

1.4 配置 Nginx

修改配置文件:打开 Nginx 的主配置文件(yum 安装一般在 /etc/nginx/nginx.conf)

user nginx-test;  # 修改启动用户
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;include /etc/nginx/modules-enabled/*.conf;events {worker_connections 1024;
}http {server {listen 82;  # 修改监听端口为82server_name _;root /data/webserver/html;  # 设置项目根目录index index.html;  # 设置默认首页location / {try_files $uri $uri/ =404;}}include /etc/nginx/mime.types;default_type application/octet-stream;sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;gzip on;
}
  • 创建项目根目录及首页文件
    mkdir -p /data/webserver/html
    echo "welcome to ansible" > /data/webserver/html/index.html
    chown -R nginx-test:nginx-test /data/webserver/html  # 设置目录所有者

1.5 启动 Nginx 

systemctl start nginx;systemctl enable nginx # 设置开机自启

1.6 测试访问

创建nginx_deploy.yml文件并输入下面的内容并使用 ansible-playbook nginx_deploy.yml 执行

- hosts: 10.0.0.12,10.0.0.15,10.0.0.18become: truetasks:- name: Create nginx-test useruser:name: nginx-testuid: 82shell: /sbin/nologin- name: Install nginxyum:name: nginxstate: present- name: Configure nginx.conflineinfile:path: /etc/nginx/nginx.confregexp: "{{ item.regexp }}"line: "{{ item.line }}"create: trueloop:- { regexp: "^user", line: "user nginx-test;" }- { regexp: "^listen", line: "listen 82;" }- { regexp: "^root", line: "root /data/webserver/html;" }- { regexp: "^index", line: "index index.html;" }- name: Create web project root directoryfile:path: /data/webserver/htmlstate: directoryowner: nginx-testgroup: nginx-test- name: Create index.htmlcopy:content: "welcome to ansible"dest: /data/webserver/html/index.htmlowner: nginx-testgroup: nginx-test- name: Start nginxservice:name: nginxstate: startedenabled: true

方法二:完全用ansible实现自动化

注意:按照方法一 前提环境已部署好,防护墙,selinux等 这里就不再操作

1.1 制作⼀个nginx.conf

yum install nginx -y;systemctl stop nginx
mkdir /data/ansible/nginx -p;cd /data/ansible/nginx/
grep -Ev '#|^$' /etc/nginx/nginx.conf > nginx.conf
并且进行定制修改,修改内容如下
sed -i 's#www-data#nginx-test#' nginx.conf
cat > nginx-define.conf <<- eof
server {listen 10086;root /data/webserver/html;location / {index index.html;  # 添加默认首页try_files $uri $uri/ =404;  # 添加请求处理规则}
}

1.2 编写playbook   

编写 nginx playbook ⽂件 01-nginx.yml
- hosts: webremote_user: roottasks:- name: create new useruser:name: nginx-testsystem: yesuid: 82shell: /sbin/nologin- name: create web rootfile:name: /data/webserver/htmlowner: nginx-teststate: directory- name: touch web indexshell: echo '<h1>welcome to ansible</h1>' > /data/webserver/html/index.html- name: install packageyum:name: nginxstate: present- name: copy configcopy:src: nginx.confdest: /etc/nginx/nginx.conf- name: copy subconfigcopy:src: nginx-define.confdest: /etc/nginx/conf.d- name: start serviceservice:name: nginxstate: startedenabled: yes

1.3 检测执行效果

ansible-playbook 01-nginx.yml --syntax-check    检测效果
ansible-playbook 01-nginx.yml -C      模拟执行
注:该步骤执行即使存在一两个异常,也不影响后续的正常安装
ansible-playbook 01-nginx.yml   执行文件
ansible web -m shell -a "getent passwd | grep 82"
ansible web -m shell -a "ls -l /data/"
ansible web -m shell -a "netstat -tnulp | grep nginx"  

若出现都是80端口,则还需要执行  ansible web -m shell -a "systemctl reload nginx"

 

ansible web -m shell -a "curl -s localhost:10086"

1.4 清除环境

ansible web - m service - a "name=nginx state=stopped"
ansible web - m yum  - a "name=nginx,nginx-common state=absent"
ansible web - m file - a "path=/data/webserver state=absent"
ansible web - m user - a "name=nginx-test state=absent"

http://www.lryc.cn/news/2393146.html

相关文章:

  • 20250526惠普HP锐14 AMD锐龙 14英寸轻薄笔记本电脑(八核R7-7730U)的显卡驱动下载
  • WIN11使用vscode搭建c语言开发环境
  • 2025年5月蓝桥杯stema省赛真题——象棋移动
  • AI重构SEO关键词精准定位
  • C++ 模板元编程语法大全
  • SPSS跨域分类:自监督知识+软模板优化
  • 【术语扫盲】BSP与MSP
  • vscode的Embedded IDE创建keil项目找不到源函数或者无法跳转
  • HTTP/2与HTTP/3特性详解:为你的Nginx/Apache服务器开启下一代Web协议
  • 构建高效智能客服系统的8大体验设计要点
  • CppCon 2014 学习:Making C++ Code Beautiful
  • 副本(Replica)在Elasticsearch中扮演什么角色?
  • 据传苹果将在WWDC上发布iOS 26 而不是iOS 19
  • 整理了Windows(7—11)官方镜像下载链接和各版本区别介绍
  • 数据库主键与索引详解
  • RTOS:启动调度器的作用(含源码逐行解读)
  • 【Python 进阶】抽象基类(Abstract Base Class)
  • Armv7l或树莓派32位RPI 4B编译faiss
  • 嵌入式开发STM32 -- 江协科技笔记
  • [网页五子棋][用户模块]客户端开发(登录功能和注册功能)
  • nt!MiInitializeSystemCache函数分析之PointerPte->u.List.NextEntry的由来
  • MQTT协议,EMQX部署,MQTTX安装学习
  • 如何理解UDP 和 TCP 区别 应用场景
  • 60天python训练计划----day40
  • 干泵,干式螺杆真空泵
  • Tailwind CSS 实战:基于 Kooboo 构建 AI 对话框页面(五):语音合成输出与交互增强
  • 职业本科院校无人机专业人才培养解决方案
  • 利用机器学习优化数据中心能效
  • 软件评测机构如何保障质量?检测资质、技术实力缺一不可
  • 微软开源bitnet b1.58大模型,应用效果测评(问答、知识、数学、逻辑、分析)