1. 首页 > Linux教程 > 正文

Linux教程FG408-Ansible自动化部署实战

内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,学习交流加群风哥微信: itpux-com详细介绍了相关技术的配置和使用方法。

风哥提示:

本文档介绍使用Ansible进行自动化部署的实战案例。

Part01-Web服务器部署

1.1 Nginx+PHP部署

# 创建LNMP部署Playbook
[root@ansible ~]# cat > /fglinux/ansible/playbooks/deploy_lnmp.yml << 'EOF' --- - name: 部署LNMP环境 hosts: webservers become: yes vars: nginx_port: 80 php_version: "8.1" mysql_root_password: MySQLRoot@123 app_db_name: fgedudb app_db_user: fgedu app_db_password: FgeduPass@456 tasks: - name: 安装EPEL仓库 dnf: name: epel-release state: present - name: 安装Remi仓库 dnf: name: https://rpms.remirepo.net/enterprise/remi-release-9.rpm state: present - name: 启用PHP模块 command: dnf module enable php:remi-{{ php_version }} -y changed_when: true - name: 安装Nginx dnf: name: nginx state: present - name: 安装PHP及扩展 dnf: name: - php - php-fpm - php-mysqlnd - php-gd - php-xml - php-mbstring - php-json - php-opcache state: present - name: 安装MySQL dnf: name: mysql-server state: present - name: 启动MySQL服务 service: name: mysqld state: started enabled: yes - name: 配置MySQL root密码 mysql_user: name: root password: "{{ mysql_root_password }}" login_unix_socket: /var/lib/mysql/mysql.sock - name: 创建应用数据库 mysql_db: name: "{{ app_db_name }}" state: present login_user: root login_password: "{{ mysql_root_password }}" - name: 创建应用数据库用户 mysql_user: name: "{{ app_db_user }}" password: "{{ app_db_password }}" priv: "{{ app_db_name }}.*:ALL" state: present login_user: root login_password: "{{ mysql_root_password }}" - name: 配置Nginx template: src: ../templates/nginx_php.conf.j2 dest: /etc/nginx/conf.d/default.conf backup: yes notify: Reload Nginx - name: 配置PHP-FPM template: src: ../templates/www.conf.j2 dest: /etc/php-fpm.d/www.conf backup: yes notify: Restart PHP-FPM - name: 创建网站根目录 file: path: /var/www/html state: directory owner: nginx group: nginx mode: '0755' - name: 创建测试页面 copy: content: |
dest: /var/www/html/index.php
owner: nginx
group: nginx
mode: ‘0644’

– name: 启动服务
service:
name: “{{ item }}”
state: started
enabled: yes
loop:
– nginx
– php-fpm

– name: 验证部署
uri:
url: “http://{{ ansible_default_ipv4.address }}/index.php”
return_content: yes
register: result
until: result.status == 200
retries: 3
delay: 5

– name: 显示部署结果
debug:
msg: “LNMP部署成功,访问 http://{{ ansible_default_ipv4.address }}”

handlers:
– name: Reload Nginx
service:
name: nginx
state: reloaded

– name: Restart PHP-FPM
service:
name: php-fpm
state: restarted
EOF

# 创建Nginx配置模板
[root@ansible ~]# cat > /fglinux/ansible/templates/nginx_php.conf.j2 << 'EOF' server { listen {{ nginx_port }}; server_name {{ ansible_hostname }}; root /var/www/html; index index.php index.html; location / { try_files $uri $uri/ =404; } location ~ \.php$ { fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } } EOF # 执行LNMP部署 [root@ansible ~]# ansible-playbook /fglinux/ansible/playbooks/deploy_lnmp.yml PLAY [部署LNMP环境] ********************************************************* TASK [Gathering Facts] ****************************************************** ok: [web1.fgedu.net.cn] TASK [安装EPEL仓库] ********************************************************* changed: [web1.fgedu.net.cn] TASK [安装Remi仓库] ****************************************************学习交流加群风哥QQ113257174***** changed: [web1.fgedu.net.cn] TASK [启用PHP模块] ********************************************************** changed: [web1.fgedu.net.cn] TASK [安装Nginx] ************************************************************ changed: [web1.fgedu.net.cn] TASK [安装PHP及扩展] ******************************************************** changed: [web1.fgedu.net.cn] TASK [安装MySQL] ************************************************************ changed: [web1.fgedu.net.cn] TASK [启动MySQL服务] **************************************更多学习教程公众号风哥教程itpux_com****************** changed: [web1.fgedu.net.cn] TASK [配置MySQL root密码] **************************************************** changed: [web1.fgedu.net.cn] TASK [创建应用数据库] ******************************************************** changed: [web1.fgedu.net.cn] TASK [创建应用数据库用户] **************************************************** changed: [web1.fgedu.net.cn] TASK [配置Nginx] ************************************************************ changed: [web1.fgedu.net.cn] TASK [配置PHP-FPM] ********************************************************** changed: [web1.fgedu.net.cn] TASK [创建网站根目录] ******************************************************** changed: [web1.fgedu.net.cn] TASK [创建测试页面] ********************************************************** changed: [web1.fgedu.net.更多视频教程www.fgedu.net.cncn] TASK [启动服务] ************************************************************* changed: [web1.fgedu.net.cn] => (item=nginx)
changed: [web1.fgedu.net.cn] => (item=php-fpm)

TASK [验证部署] *************************************************************
ok: [web1.fgedu.net.cn]

TASK [显示部from PG视频:www.itpux.com署结果] **********************************************************
ok: [web1.fgedu.net.cn] => {
“msg”: “LNMP部署成功,访问 http://192.168.1.20”
}

PLAY RECAP ******************************************************************
web1.fgedu.net.cn : ok=18 changed=15 unreachable=0 failed=0

风哥针对自动化部署建议:

  • 使用Role组织复杂部署
  • 添加部署验证步骤
  • 实现回滚机制
  • 记录部署日志
  • 配置变更通知

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息