# Ansible 项目实战 (六)
# 1. Ansilbe 管理集群架构
# 1. 服务器地址规划
| 角色 | 主机名称 | 外网地址 | 内网地址 |
|---|
| routes | route | eth0:192.168.40.200 | eth1:172.16.1.200 |
| lbservers | lb01 | / | eth1:172.16.1.3/VIP:172.16.1.100 |
| lbservers | lb02 | / | eth1:172.16.1.4/VIP:172.16.1.100 |
| proxyservers | proxy01 | / | eth1:172.16.1.5 gateway:172.16.1.200 |
| proxyservers | proxy02 | / | eth1:172.16.1.6 gateway:172.16.1.200 |
| webservers | web01 | / | eth1:172.16.1.7 gateway:172.16.1.200 |
| webservers | web02 | / | eth1:172.16.1.8 gateway:172.16.1.200 |
| webservers | web03 | / | eth1:172.16.1.9 gateway:172.16.1.200 |
| dbservers | db01 | / | eth1:172.16.1.51 gateway:172.16.1.200 |
| redisservers | redis | / | eth1:172.16.1.41 gateway:172.16.1.200 |
| nfsservers | nfs | / | eth1:172.16.1.32 gateway:172.16.1.200 |
| backupservers | backup | / | eth1:172.16.1.31 gateway:172.16.1.200 |
| dnsservers | dns-master | 192.168.40.91 gateway:172.16.1.200 | eth1:172.16.1.91 |
| dnsservers | dns-slave | 192.168.40.92 gateway:172.16.1.200 | eth1:172.16.1.92 |
# 2. 基础环境准备
1.Ansible 安装
| |
| [root@manager ~] |
| [root@manager ~] |
| [root@manager ~] |
| |
| |
| [root@manager ~] |
| |
| |
| [root@manager ~] |
| sqlite-devel gcc gcc-c++ openssl-develzlib zlib-devel python3 python3-devel -y |
| [root@manager ~] |
| [root@manager roles] |
2.Ansible 配置
| [root@manager ~] |
| [root@manager roles] |
| [root@manager roles] |
| |
| |
| [root@manager roles] |
| ... |
| [defaults] |
| inventory = ./hosts |
| host_key_checking = False |
| forks = 50 |
| |
| gathering = smart |
| fact_caching = redis |
| fact_caching_timeout = 86400 |
| fact_caching_connection = localhost:6379 |
| ... |
3. 主机清单文件
| [root@manager roles] |
| [dnsservers] |
| 172.16.1.91 |
| 172.16.1.92 |
| |
| [routes] |
| 172.16.1.200 |
| |
| [lbservers] |
| 172.16.1.3 |
| 172.16.1.4 |
| |
| [proxyservers] |
| 172.16.1.5 |
| 172.16.1.6 |
| |
| [webservers] |
| 172.16.1.7 |
| 172.16.1.8 |
| 172.16.1.9 |
| |
| [dbservers] |
| 172.16.1.51 |
| |
| [redisservers] |
| 172.16.1.41 |
| |
| [nfsservers] |
| 172.16.1.32 |
| |
| [backupservers] |
| 172.16.1.31 |
4. 配置免密登录
| |
| [root@manager ~] |
| [root@manager ~] |
| |
| |
| |
| work_dir=/scripts |
| pub_file=/root/.ssh/id_rsa.pub |
| |
| yum install expect -y &> /dev/null |
| |
| function_upssh() |
| { |
| expect -c " |
| spawn ssh-copy-id -i ${pub_file} root@$1 |
| expect { |
| \"*yes/no*\" {send \"yes\r\";exp_continue} |
| \"*password*\" {send $2\r;exp_continue}}" |
| } |
| |
| [ -f ${pub_file} ] || ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa |
| |
| for Ip in $(awk '{print $1}' ${work_dir}/hosts.txt) |
| do |
| Passwd=$(awk -v I=${Ip} '{if(I==$1) print $2}' ${work_dir}/hosts.txt) |
| function_upssh ${Ip} ${Passwd} |
| done |
| |
| |
| [root@manager ~] |
| 172.16.1.91 talent |
| 172.16.1.92 talent |
| 172.16.1.200 talent |
| 172.16.1.3 talent |
| 172.16.1.4 talent |
| 172.16.1.5 talent |
| 172.16.1.6 talent |
| 172.16.1.7 talent |
| 172.16.1.8 talent |
| 172.16.1.9 talent |
| 172.16.1.51 talent |
| 172.16.1.41 talent |
| 172.16.1.32 talent |
| 172.16.1.31 talent |
| |
| |
| [root@manager scripts] |
5. 测试连通性
6.roles 变量目录及文件
| [root@manager roles] |
| [root@manager roles] |
# 3. 网络配置初始化
| |
| [root@manager roles] |
| - hosts: all:!dnsservers:!routes |
| tasks: |
| - name: debug |
| debug: |
| msg: "test" |
| |
| - name: Delete Gateway |
| lineinfile: |
| path: /etc/sysconfig/network-scripts/ifcfg-eth1 |
| regexp: '^GATEWAY=' |
| state: absent |
| |
| - name: Delete DNS |
| lineinfile: |
| path: /etc/sysconfig/network-scripts/ifcfg-eth1 |
| regexp: '^DNS*' |
| state: absent |
| |
| - name: Add DNS |
| lineinfile: |
| path: /etc/sysconfig/network-scripts/ifcfg-eth1 |
| line: "DNS1=223.5.5.5" |
| |
| - name: Add Gateway |
| lineinfile: |
| path: /etc/sysconfig/network-scripts/ifcfg-eth1 |
| line: "GATEWAY=172.16.1.200" |
| |
| - name: Restart Network |
| systemd: |
| name: network |
| state: restarted |
| |
| |
| [root@manager roles] |
# 2. Ansilbe 基础模块
当我们的服务器上架并按照好操作系统后,都会有一些基础的操作,建议将所有服务器都会涉及的基础配置存放在名为 base 的 roles 下。我们称其为 “初始化模块”。
- 关闭防火墙 Firewalld Selinux
- 创建统一用户 www,uid 为 666,gid 为 666
- 添加 base epel 仓库
- 特定主机需要添加特定的仓库源 nginx php mysql zabbix elk
- 安装基础软件包 rsync tree unzip vim wget lrzsz 等
- 内核升级、内核参数调整、文件描述符调整
# 2.1 创建 Roles 目录结构
| [root@manager roles] |
| [root@manager roles] |
# 2.2 关闭防火墙管理
| [root@manager tasks] |
| - name: Disable Selinux Firewall |
| selinux: |
| state: disabled |
| |
| - name: Disable Firewalld |
| systemd: |
| name: firewalld |
| state: stopped |
| enabled: no |
# 2.3 创建进程用户
| [root@manager tasks] |
| - name: Create Group User |
| group: |
| name: "" |
| gid: "" |
| |
| - name: Create User |
| user: |
| name: "" |
| uid: "" |
| group: "" |
| create_home: no |
| shell: /sbin/nologin |
# 2.4 配置 YUM 仓库
| [root@manager tasks] |
| - name: Add Base Yum Repository |
| ansible.builtin.get_url: |
| url: "https://mirrors.aliyun.com/repo/Centos-7.repo" |
| dest: "/etc/yum.repos.d/Centos-7.repo" |
| mode: '0644' |
| |
| - name: Add Epel Yum Repository |
| ansible.builtin.get_url: |
| url: "https://mirrors.aliyun.com/repo/epel-7.repo" |
| dest: "/etc/yum.repos.d/epel.repo" |
| mode: '0644' |
| |
| - name: Add Nginx Yum Repository |
| yum_repository: |
| name: nginx |
| description: Nginx Repository |
| baseurl: http://nginx.org/packages/centos/7/$basearch/ |
| gpgcheck: no |
| |
| - name: Add PHP Yum Repository |
| yum_repository: |
| name: php71w |
| description: php Repository |
| baseurl: http://us-east.repo.webtatic.com/yum/el7/x86_64/ |
| gpgcheck: no |
# 2.5 按照基础软件包
| [root@manager tasks] |
| - name: Installed Packages All |
| yum: |
| name: "" |
| state: present |
| loop: |
| - rsync |
| - nfs-utils |
| - net-tools |
| - bind-utils |
| - wget |
| - tree |
| - lrzsz |
| - vim |
| - unzip |
| - httpd-tools |
| - bash-completion |
| - iotop |
| - gzip |
| - psmisc |
| - yum-utils |
| - telnet |
| - jq |
| - git |
| - ntpdate |
| - nfs-utils |
| - dos2unix |
| - lvm2 |
| - device-mapper-persistent-data |
| - MySQL-python |
| - iftop |
| - glances |
# 2.6 调整文件描述符
| [root@manager tasks] |
| - name: Change Limit /etc/security/limit.conf |
| pam_limits: |
| domain: "*" |
| limit_type: "" |
| limit_item: "" |
| value: "" |
| loop: |
| - { limit_type: 'soft', limit_item: 'nofile',value: '100000' } |
| - { limit_type: 'hard', limit_item: 'nofile',value: '100000' } |
# 2.7 配置内核参数
| [root@manager tasks] |
| - name: Change Port Range |
| sysctl: |
| name: net.ipv4.ip_local_port_range |
| value: '1024 65000' |
| sysctl_set: yes |
| |
| - name: Enabled Forward |
| sysctl: |
| name: net.ipv4.ip_forward |
| value: '1' |
| sysctl_set: yes |
| |
| - name: Enabled tcp_reuse |
| sysctl: |
| name: net.ipv4.tcp_tw_reuse |
| value: '1' |
| sysctl_set: yes |
| |
| - name: Chanage tcp tw_buckets |
| sysctl: |
| name: net.ipv4.tcp_max_tw_buckets |
| value: '5000' |
| sysctl_set: yes |
| |
| - name: Chanage tcp_syncookies |
| sysctl: |
| name: net.ipv4.tcp_syncookies |
| value: '1' |
| sysctl_set: yes |
| |
| - name: Chanage tcp max_syn_backlog |
| sysctl: |
| name: net.ipv4.tcp_max_syn_backlog |
| value: '8192' |
| sysctl_set: yes |
| |
| - name: Chanage tcp Established Maxconn |
| sysctl: |
| name: net.core.somaxconn |
| value: '32768' |
| sysctl_set: yes |
| state: present |
| |
| - name: Chanage tcp_syn_retries |
| sysctl: |
| name: net.ipv4.tcp_syn_retries |
| value: '2' |
| sysctl_set: yes |
| state: present |
| |
| - name: Chanage net.ipv4.tcp_synack_retries |
| sysctl: |
| name: net.ipv4.tcp_synack_retries |
| value: '2' |
| sysctl_set: yes |
| state: present |
# 2.8 配置时间同步
| [root@manager tasks] |
| - name: Rsync Host Time |
| cron: |
| name: Rsync Host Time |
| minute: '*/5' |
| job: /usr/sbin/ntpdate ntp1.aliyun.com &> /dev/null |
# 2.9 配置入口文件
| [root@manager tasks] |
| - name: Firewalld |
| include: firewall.yml |
| |
| - name: Kernel Parameters |
| include: kernel.yml |
| |
| - name: limits |
| include: limits.yml |
| |
| - name: user |
| include: user.yml |
| |
| - name: yum_repository |
| include: yum_repository.yml |
| |
| - name: yum packages |
| include: yum_pkg.yml |
| |
| - name: rsyn time |
| include: rsyn_time.yml |
# 2.10 配置变量参数
| [root@manager roles] |
| |
| all_group: www |
| all_user: www |
| all_uid: 666 |
| all_gid: 666 |
# 2.11 整体模块测试
| |
| [root@manager roles] |
| . |
| ├── ansible.cfg |
| ├── base |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ ├── firewall.yml |
| │ │ ├── kernel.yml |
| │ │ ├── limits.yml |
| │ │ ├── main.yml |
| │ │ ├── rsyn_time.yml |
| │ │ ├── user.yml |
| │ │ ├── yum_pkg.yml |
| │ │ └── yum_repository.yml |
| │ ├── templates |
| │ └── vars |
| ├── group_vars |
| │ └── all |
| ├── hosts |
| └── network_init.yml |
| |
| |
| [root@manager roles] |
| - hosts: all |
| roles: |
| - role: base |
| tags: base |
| |
| [root@manager roles] |
# 3. Ansilbe 应用模块
# 3.1 NFS 服务
1. 创建 Roles 目录结构
| [root@manager roles] |
| [root@manager roles] |
2. 准备 nfs 配置文件 templates/expots.j2
| [root@manager nfs-server] |
| <!--swig9--> <!--swig10-->(rw,all_squash,anonuid=<!--swig11-->,anongid=<!--swig12-->) |
| <!--swig13--> <!--swig14-->(rw,all_squash,anonuid=<!--swig15-->,anongid=<!--swig16-->) |
3. 准备 nfs 角色的 tasks 任务
| [root@manager nfs-server] |
| - name: Configre NFS Server |
| template: |
| src: expots.j2 |
| dest: /etc/exports |
| owner: root |
| group: root |
| mode: '0644' |
| notify: Restart NFS Server |
| |
| |
| - name: Create NFS dir |
| file: |
| path: "" |
| state: directory |
| owner: "" |
| group: "" |
| mode: '0755' |
| recurse: yes |
| loop: |
| - "" |
| - "" |
| |
| - name: Start NFS Server |
| systemd: |
| name: nfs |
| state: started |
4. 准备 nfs 角色的 handlers
| [root@manager nfs-server] |
| - name: Restart NFS Server |
| systemd: |
| name: nfs |
| state: restarted |
5. 配置变量参数
| [root@manager roles] |
| |
| all_group: www |
| all_user: www |
| all_uid: 666 |
| all_gid: 666 |
| |
| |
| nfs_share_zrlog: /data/zrlog |
| nfs_share_blog: /data/blog |
| nfs_allow_ip: 172.16.1.0/24 |
6. 整体模块测试
| |
| [root@manager roles] |
| . |
| ├── ansible.cfg |
| ├── base |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ ├── firewall.yml |
| │ │ ├── kernel.yml |
| │ │ ├── limits.yml |
| │ │ ├── main.yml |
| │ │ ├── rsyn_time.yml |
| │ │ ├── user.yml |
| │ │ ├── yum_pkg.yml |
| │ │ └── yum_repository.yml |
| │ ├── templates |
| │ └── vars |
| ├── group_vars |
| │ └── all |
| ├── hosts |
| ├── network_init.yml |
| ├── nfs-server |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ │ └── expots.j2 |
| │ └── vars |
| └── top.yml |
| |
| |
| [root@manager roles] |
| - hosts: all |
| roles: |
| - role: base |
| tags: base |
| |
| - hosts: nfsservers |
| roles: |
| - role: nfs-server |
| tags: nfs |
| |
| [root@manager roles] |
| |
| |
| [root@manager roles] |
| Export list for 172.16.1.32: |
| /data/zrlog 172.16.1.0/24 |
| /data/blog 172.16.1.0/24 |
# 3.2 MySQL 服务
1. 创建 Roles 目录结构
2. 准备 MySQL 角色的 tasks 任务
| [root@manager roles] |
| |
| - name: Add MySQL <!--swig22--> Yum Repository |
| yum_repository: |
| name: mysql-community |
| description: MySQL <!--swig23--> Community Server |
| baseurl: https://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/ |
| gpgkey: https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 |
| gpgcheck: yes |
| enabled: yes |
| sslverify: yes |
| |
| |
| - name: Import MySQL GPG key |
| rpm_key: |
| key: https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 |
| state: present |
| |
| |
| - name: Installed MySQL Server <!--swig24--> |
| yum: |
| name: "mysql-community-server" |
| state: present |
| |
| |
| - name: Start MySQL Server |
| service: |
| name: mysqld |
| state: started |
| enabled: yes |
| |
| |
| - name: Get MySQL Init Passwd |
| shell: grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}' |
| register: mysql_temp_password |
| changed_when: false |
| |
| |
| - name: Change MySQL Root Passwd |
| shell: | |
| mysql -u root -p'' --connect-expired-password \ |
| -e "ALTER USER 'root'@'localhost' IDENTIFIED BY ''; flush privileges;" |
| ignore_errors: yes |
| |
| |
| - name: Removes all anonymous user accounts |
| mysql_user: |
| login_user: root |
| login_password: "" |
| name: '' |
| host_all: yes |
| state: absent |
| |
| |
| - name: Create Super User <!--swig28--> |
| mysql_user: |
| name: "" |
| host: "" |
| password: "" |
| priv: "" |
| state: present |
| login_user: root |
| login_password: "" |
| when: mysql_root_password is defined |
3. 配置变量参数
| [root@manager roles] |
| |
| all_group: www |
| all_user: www |
| all_uid: 666 |
| all_gid: 666 |
| |
| |
| nfs_share_zrlog: /data/zrlog |
| nfs_share_blog: /data/blog |
| nfs_allow_ip: 172.16.1.0/24 |
| |
| |
| mysql_super_user: app |
| mysql_super_pass: Superman*2025 |
| mysql_super_user_priv: '*.*:ALL' |
| mysql_allow_ip: '172.16.1.%' |
| mysql_server_ip: 172.16.1.51 |
| mysql_root_password: "Superman*2025" |
| mysql_version: "5.7" |
4. 整体模块测试
| |
| [root@manager roles] |
| . |
| ├── ansible.cfg |
| ├── base |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ ├── firewall.yml |
| │ │ ├── kernel.yml |
| │ │ ├── limits.yml |
| │ │ ├── main.yml |
| │ │ ├── rsyn_time.yml |
| │ │ ├── user.yml |
| │ │ ├── yum_pkg.yml |
| │ │ └── yum_repository.yml |
| │ ├── templates |
| │ └── vars |
| ├── group_vars |
| │ └── all |
| ├── hosts |
| ├── mysql-server |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ └── vars |
| ├── network_init.yml |
| ├── nfs-server |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ │ └── expots.j2 |
| │ └── vars |
| └── top.yml |
| |
| |
| [root@manager roles] |
| - hosts: all |
| roles: |
| - role: base |
| tags: base |
| |
| - hosts: nfsservers |
| roles: |
| - role: nfs-server |
| tags: nfs-server |
| |
| - hosts: dbservers |
| roles: |
| - role: mysql-server |
| tags: mysql |
| |
| [root@manager roles] |
# 3.3 Redis 服务
1. 创建 Roles 目录结构
2. 准备 redis 角色的 tasks 任务
| [root@manager roles] |
| - name: Installed Redis Server |
| yum: |
| name: redis |
| state: present |
| |
| - name: Configure Redis Server |
| template: |
| src: redis.conf.j2 |
| dest: /etc/redis.conf |
| owner: redis |
| group: root |
| mode: '0640' |
| notify: Restart Redis Server |
| |
| - name: Start Redis Server |
| systemd: |
| name: redis |
| state: started |
| enabled: yes |
3. 准备 redis 角色的配置文件 redis.conf.j2
| [root@manager roles] |
| ... |
| bind 127.0.0.1 <!--swig34--> |
| ... |
4. 准备 redis 角色的 handlers
| [root@manager roles] |
| - name: Restart Redis Server |
| systemd: |
| name: redis |
| state: restarted |
5. 整体模块测试
| |
| [root@manager roles] |
| . |
| ├── ansible.cfg |
| ├── base |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ ├── firewall.yml |
| │ │ ├── kernel.yml |
| │ │ ├── limits.yml |
| │ │ ├── main.yml |
| │ │ ├── rsyn_time.yml |
| │ │ ├── user.yml |
| │ │ ├── yum_pkg.yml |
| │ │ └── yum_repository.yml |
| │ ├── templates |
| │ └── vars |
| ├── group_vars |
| │ └── all |
| ├── hosts |
| ├── mysql-server |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ └── vars |
| ├── network_init.yml |
| ├── nfs-server |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ │ └── expots.j2 |
| │ └── vars |
| ├── redis |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── redis.conf.j2 |
| └── top.yml |
| |
| |
| [root@manager roles] |
| - hosts: all |
| roles: |
| - role: base |
| tags: base |
| |
| - hosts: nfsservers |
| roles: |
| - role: nfs-server |
| tags: nfs |
| |
| - hosts: dbservers |
| roles: |
| - role: mysql-server |
| tags: mysql |
| |
| - hosts: redisservers |
| roles: |
| - role: redis |
| tags: redis |
| |
| [root@manager roles] |
# 3.4 Nginx 服务
1. 创建 Roles 目录结构
2. 准备 nginx 角色的 tasks 任务
| [root@manager roles] |
| - name: Install Nginx Server |
| yum: |
| name: nginx |
| enablerepo: nginx |
| state: present |
| |
| - name: Configure Nginx nginx.conf |
| template: |
| src: nginx.conf.j2 |
| dest: "" |
| notify: Restart Nginx Server |
| |
| - name: Start Nginx Server |
| systemd: |
| name: nginx |
| state: started |
| enabled: yes |
3. 准备 nginx 角色配置文件 nginx.conf.j2
| [root@manager roles] |
| user <!--swig36-->; |
| worker_processes <!--swig37-->; |
| |
| error_log /var/log/nginx/error.log notice; |
| pid /var/run/nginx.pid; |
| |
| |
| events { |
| worker_connections <!--swig38-->; |
| } |
| |
| |
| http { |
| include /etc/nginx/mime.types; |
| default_type application/octet-stream; |
| |
| log_format main '$remote_addr - $remote_user [$time_local] "$request" ' |
| '$status $body_bytes_sent "$http_referer" ' |
| '"$http_user_agent" "$http_x_forwarded_for" "$http_x_via"'; |
| |
| access_log /var/log/nginx/access.log main; |
| sendfile on; |
| keepalive_timeout 65; |
| include <!--swig39-->; |
| } |
4. 准备 nginx 角色的 handlers
| [root@manager roles] |
| - name: Restart Nginx Server |
| systemd: |
| name: nginx |
| state: restarted |
5. 配置变量参数
| [root@manager roles] |
| |
| all_group: www |
| all_user: www |
| all_uid: 666 |
| all_gid: 666 |
| |
| |
| nfs_share_zrlog: /data/zrlog |
| nfs_share_blog: /data/blog |
| nfs_allow_ip: 192.168.1.0/24 |
| |
| |
| mysql_super_user: app |
| mysql_super_pass: Superman*2025 |
| mysql_super_user_priv: '*.*:ALL' |
| mysql_allow_ip: '192.168.1.%' |
| mysql_server_ip: 192.168.1.51 |
| mysql_root_password: "Superman*2025" |
| mysql_version: "5.7" |
| |
| |
| nginx_conf_path: /etc/nginx/nginx.conf |
| nginx_include_dir: /etc/nginx/conf.d |
| nginx_include_path: /etc/nginx/conf.d/*.conf |
6. 整体模块测试
| |
| [root@manager roles] |
| . |
| ├── ansible.cfg |
| ├── base |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ ├── firewall.yml |
| │ │ ├── kernel.yml |
| │ │ ├── limits.yml |
| │ │ ├── main.yml |
| │ │ ├── rsyn_time.yml |
| │ │ ├── user.yml |
| │ │ ├── yum_pkg.yml |
| │ │ └── yum_repository.yml |
| │ ├── templates |
| │ └── vars |
| ├── group_vars |
| │ └── all |
| ├── hosts |
| ├── mysql-server |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ └── vars |
| ├── network_init.yml |
| ├── nfs-server |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ │ └── expots.j2 |
| │ └── vars |
| ├── nginx |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── nginx.conf.j2 |
| ├── redis |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── redis.conf.j2 |
| └── top.yml |
| |
| |
| [root@manager roles] |
| - hosts: all |
| roles: |
| - role: base |
| tags: base |
| |
| - hosts: nfsservers |
| roles: |
| - role: nfs-server |
| tags: nfs |
| |
| - hosts: dbservers |
| roles: |
| - role: mysql-server |
| tags: mysql |
| |
| - hosts: redisservers |
| roles: |
| - role: redis |
| tags: redis |
| |
| - hosts: webservers |
| roles: |
| - role: nginx |
| tags: nginx |
| |
| [root@manager roles] |
# 3.5 PHP 服务
1. 创建 Roles 目录结构
2. 准备 php-fpm 角色的 tasks 任务
| [root@manager roles] |
| - name: Installed PHP-FPM Server |
| yum: |
| name: "" |
| enablerepo: php71w |
| state: present |
| loop: |
| - php71w |
| - php71w-cli |
| - php71w-common |
| - php71w-devel |
| - php71w-embedded |
| - php71w-gd |
| - php71w-mcrypt |
| - php71w-mbstring |
| - php71w-pdo |
| - php71w-xml |
| - php71w-fpm |
| - php71w-mysqlnd |
| - php71w-opcache |
| - php71w-pecl-memcached |
| - php71w-pecl-redis |
| - php71w-pecl-mongodb |
| |
| - name: Configure PHP php.ini php-fpm |
| template: |
| src: "" |
| dest: "" |
| loop: |
| - {src: php.ini.j2 , dest: "" } |
| - { src: fpm-www.conf.j2 ,dest: "" } |
| notify: Restart PHP Server |
| |
| |
| - name: Start PHP-FPM Server |
| systemd: |
| name: php-fpm |
| state: started |
| enabled: yes |
3. 准备 php-fpm 角色配置文件 fpm-www.conf.j2
| [root@manager roles] |
| [www] |
| user = <!--swig45--> |
| group = <!--swig46--> |
| listen = 127.0.0.1:9000 |
| listen.allowed_clients = 127.0.0.1 |
| pm = dynamic |
| pm.max_children = <!--swig47--> |
| pm.start_servers = <!--swig48--> |
| pm.min_spare_servers = <!--swig49--> |
| pm.max_spare_servers = <!--swig50--> |
| slowlog = /var/log/php-fpm/www-slow.log |
| php_admin_value[error_log] = /var/log/php-fpm/www-error.log |
| php_admin_flag[log_errors] = on |
| php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache |
4. 准备 php-fpm 角色的 templates 配置文件 php.ini.j2
| [root@manager roles] |
| ... |
| session.save_handler = <!--swig51--> |
| session.save_path = "" |
| ... |
5. 准备 php-fpm 角色的 handlers
| [root@manager roles] |
| - name: Restart PHP Server |
| systemd: |
| name: php-fpm |
| state: restarted |
6. 配置变量参数
| [root@manager roles] |
| |
| all_group: www |
| all_user: www |
| all_uid: 666 |
| all_gid: 666 |
| |
| |
| nfs_share_zrlog: /data/zrlog |
| nfs_share_blog: /data/blog |
| nfs_allow_ip: 172.16.1.0/24 |
| |
| |
| mysql_super_user: app |
| mysql_super_pass: Superman*2025 |
| mysql_super_user_priv: '*.*:ALL' |
| mysql_allow_ip: '172.16.1.%' |
| mysql_server_ip: 172.16.1.51 |
| mysql_root_password: "Superman*2025" |
| mysql_version: "5.7" |
| |
| |
| nginx_conf_path: /etc/nginx/nginx.conf |
| nginx_include_dir: /etc/nginx/conf.d |
| nginx_include_path: /etc/nginx/conf.d/*.conf |
| |
| |
| php_ini_path: /etc/php.ini |
| php_fpm_path: /etc/php-fpm.d/www.conf |
| |
| session_method: redis |
| session_redis_path: "tcp://172.16.1.41:6379?weight=1&timeout=2.5" |
| |
| fpm_max_process: 200 |
| fpm_start_process: 20 |
| fpm_min_spare_servers: 10 |
| fpm_max_spare_servers: 50 |
7. 整体模块测试
| |
| [root@manager roles] |
| . |
| ├── ansible.cfg |
| ├── base |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ ├── firewall.yml |
| │ │ ├── kernel.yml |
| │ │ ├── limits.yml |
| │ │ ├── main.yml |
| │ │ ├── rsyn_time.yml |
| │ │ ├── user.yml |
| │ │ ├── yum_pkg.yml |
| │ │ └── yum_repository.yml |
| │ ├── templates |
| │ └── vars |
| ├── group_vars |
| │ └── all |
| ├── hosts |
| ├── mysql-server |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ └── vars |
| ├── network_init.yml |
| ├── nfs-server |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ │ └── expots.j2 |
| │ └── vars |
| ├── nginx |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── nginx.conf.j2 |
| ├── php-fpm |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ ├── fpm-www.conf.j2 |
| │ └── php.ini.j2 |
| ├── redis |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── redis.conf.j2 |
| └── top.yml |
| |
| |
| [root@manager roles] |
| - hosts: all |
| roles: |
| - role: base |
| tags: base |
| |
| - hosts: nfsservers |
| roles: |
| - role: nfs-server |
| tags: nfs |
| |
| - hosts: dbservers |
| roles: |
| - role: mysql-server |
| tags: mysql |
| |
| - hosts: redisservers |
| roles: |
| - role: redis |
| tags: redis |
| |
| - hosts: webservers |
| roles: |
| - role: nginx |
| tags: nginx |
| |
| - hosts: webservers |
| roles: |
| - role: php-fpm |
| tags: php-fpm |
| |
| [root@manager roles] |
# 3.6 Haproxy 服务
1. 创建 Roles 目录结构
2. 准备 haproxy 角色的 tasks 任务
| [root@manager roles] |
| - name: Unarchive /tmp Directory |
| unarchive: |
| src: haproxy22.rpm.tar.gz |
| dest: /tmp |
| creates: /tmp/haproxy |
| |
| - name: Installed Haproxy |
| yum: |
| name: "" |
| vars: |
| pack: |
| - /tmp/haproxy/haproxy22-2.2.9-3.el7.ius.x86_64.rpm |
| - /tmp/haproxy/lua53u-5.3.4-1.ius.el7.x86_64.rpm |
| - /tmp/haproxy/lua53u-devel-5.3.4-1.ius.el7.x86_64.rpm |
| - /tmp/haproxy/lua53u-libs-5.3.4-1.ius.el7.x86_64.rpm |
| - /tmp/haproxy/lua53u-static-5.3.4-1.ius.el7.x86_64.rpm |
| remote_src: no |
| |
| - name: Configure Haproxy Server |
| template: |
| src: haproxy.cfg.j2 |
| dest: /etc/haproxy/haproxy.cfg |
| notify: Restart Haproxy Server |
| |
| - name: Create Haproxy Include Dir |
| file: |
| path: "" |
| state: directory |
| |
| - name: Change Service Configure Add |
| lineinfile: |
| path: /usr/lib/systemd/system/haproxy.service |
| insertafter: '^\[Service\]' |
| line: 'Environment="CONFIG_D="' |
| |
| - name: Change Service Configure ExecStart |
| lineinfile: |
| path: /usr/lib/systemd/system/haproxy.service |
| regexp: '^ExecStart=' |
| line: 'ExecStart=/usr/sbin/haproxy -Ws -f $CONFIG -f $CONFIG_D -p $PIDFILE $OPTIONS' |
| |
| - name: Change Service Configure ExecStartPre |
| lineinfile: |
| path: /usr/lib/systemd/system/haproxy.service |
| regexp: '^ExecStartPre=' |
| line: 'ExecStartPre=/usr/sbin/haproxy -f $CONFIG -f $CONFIG_D -c -q $OPTIONS' |
| |
| |
| - name: Start Haproxy Server |
| systemd: |
| name: haproxy |
| state: started |
| daemon_reload: yes |
| enabled: yes |
3. 准备 haproxy 角色的配置文件 haproxy.cfg.j2
| [root@manager roles] |
| |
| |
| |
| global |
| log 127.0.0.1 local2 |
| chroot /var/lib/haproxy |
| pidfile /var/run/haproxy.pid |
| maxconn 4000 |
| user haproxy |
| group haproxy |
| daemon |
| |
| |
| stats socket /var/lib/haproxy/stats level admin |
| |
| |
| |
| nbthread 8 |
| cpu-map 1 0 |
| cpu-map 2 1 |
| cpu-map 3 2 |
| cpu-map 4 3 |
| |
| |
| defaults |
| mode http |
| log global |
| option httplog |
| option dontlognull |
| option http-server-close |
| option forwardfor except 127.0.0.0/8 |
| option redispatch |
| retries 3 |
| timeout http-request 10s |
| timeout queue 1m |
| timeout connect 10s |
| timeout client 1m |
| timeout server 1m |
| timeout http-keep-alive 10s |
| timeout check 10s |
| maxconn 3000 |
| |
| |
| |
| |
| |
| |
| |
| |
| listen haproxy-stats_2 |
| bind *:9999 |
| stats enable |
| stats refresh 1s |
| stats hide-version |
| stats uri /haproxy?stats |
| stats realm "HAProxy statistics" |
| stats auth admin:123456 |
| stats admin if TRUE |
4. 准备 haproxy 角色的安装包 haproxy22.rpm.tar.gz
| [root@manager roles] |
| -rw-r--r-- 1 root root 2344836 Nov 3 17:25 haproxy/files/haproxy22.rpm.tar.gz |
5. 准备 haproxy 角色的 handlers
| [root@manager roles] |
| - name: Restart Haproxy Server |
| systemd: |
| name: haproxy |
| state: restarted |
6. 配置变量参数
| [root@manager roles] |
| |
| all_group: www |
| all_user: www |
| all_uid: 666 |
| all_gid: 666 |
| |
| |
| nfs_share_zrlog: /data/zrlog |
| nfs_share_blog: /data/blog |
| nfs_allow_ip: 172.16.1.0/24 |
| |
| |
| mysql_super_user: app |
| mysql_super_pass: Superman*2025 |
| mysql_super_user_priv: '*.*:ALL' |
| mysql_allow_ip: '172.16.1.%' |
| mysql_server_ip: 172.16.1.51 |
| mysql_root_password: "Superman*2025" |
| mysql_version: "5.7" |
| |
| |
| nginx_conf_path: /etc/nginx/nginx.conf |
| nginx_include_dir: /etc/nginx/conf.d |
| nginx_include_path: /etc/nginx/conf.d/*.conf |
| |
| |
| php_ini_path: /etc/php.ini |
| php_fpm_path: /etc/php-fpm.d/www.conf |
| |
| session_method: redis |
| session_redis_path: "tcp://172.16.1.41:6379?weight=1&timeout=2.5" |
| |
| fpm_max_process: 200 |
| fpm_start_process: 20 |
| fpm_min_spare_servers: 10 |
| fpm_max_spare_servers: 50 |
| |
| |
| haproxy_include_path: /etc/haproxy/conf.d/ |
| proxy_vip: 172.16.1.100 |
| haproxy_port: 80 |
7. 整体模块测试
| |
| [root@manager roles] |
| . |
| ├── ansible.cfg |
| ├── base |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ ├── firewall.yml |
| │ │ ├── kernel.yml |
| │ │ ├── limits.yml |
| │ │ ├── main.yml |
| │ │ ├── rsyn_time.yml |
| │ │ ├── user.yml |
| │ │ ├── yum_pkg.yml |
| │ │ └── yum_repository.yml |
| │ ├── templates |
| │ └── vars |
| ├── group_vars |
| │ └── all |
| ├── haproxy |
| │ ├── files |
| │ │ └── haproxy22.rpm.tar.gz |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── haproxy.cfg.j2 |
| ├── hosts |
| ├── mysql-server |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ └── vars |
| ├── network_init.yml |
| ├── nfs-server |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ │ └── expots.j2 |
| │ └── vars |
| ├── nginx |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── nginx.conf.j2 |
| ├── php-fpm |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ ├── fpm-www.conf.j2 |
| │ └── php.ini.j2 |
| ├── redis |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── redis.conf.j2 |
| └── top.yml |
| |
| |
| [root@manager roles] |
| - hosts: all |
| roles: |
| - role: base |
| tags: base |
| |
| - hosts: nfsservers |
| roles: |
| - role: nfs-server |
| tags: nfs |
| |
| - hosts: dbservers |
| roles: |
| - role: mysql-server |
| tags: mysql |
| |
| - hosts: redisservers |
| roles: |
| - role: redis |
| tags: redis |
| |
| - hosts: webservers |
| roles: |
| - role: nginx |
| tags: nginx |
| |
| - hosts: webservers |
| roles: |
| - role: php-fpm |
| tags: php-fpm |
| |
| - hosts: proxyservers |
| roles: |
| - role: haproxy |
| tags: haproxy |
| |
| [root@manager roles] |
# 3.7 Keepalived 服务
1. 创建 Roles 目录结构
2. 准备 keepalived 角色的 tasks 任务
| [root@manager roles] |
| - name: Install Keepalived Server |
| yum: |
| name: keepalived |
| state: present |
| |
| - name: Configure Keepalived Server |
| template: |
| src: keepalived.conf.j2 |
| dest: /etc/keepalived/keepalived.conf |
| notify: Restart Keepalived Server |
| |
| - name: Started Keepalived Server |
| systemd: |
| name: keepalived |
| state: started |
| enabled: yes |
3. 准备 keepalived 角色配置文件 keepalived.conf.j2
| [root@manager roles] |
| global_defs { |
| router_id <!--swig56--> |
| } |
| |
| vrrp_instance VI_1 { |
| |
| <!--swig57--> |
| |
| interface eth1 |
| virtual_router_id 49 |
| advert_int 3 |
| |
| authentication { |
| auth_type PASS |
| auth_pass 1111 |
| } |
| |
| virtual_ipaddress { |
| <!--swig58--> |
| } |
| } |
4. 准备 nginx 角色的 handlers
| [root@manager roles] |
| - name: Restart Keepalived Server |
| systemd: |
| name: keepalived |
| state: restarted |
5. 整体模块测试
| |
| [root@manager roles] |
| . |
| ├── ansible.cfg |
| ├── base |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ ├── firewall.yml |
| │ │ ├── kernel.yml |
| │ │ ├── limits.yml |
| │ │ ├── main.yml |
| │ │ ├── rsyn_time.yml |
| │ │ ├── user.yml |
| │ │ ├── yum_pkg.yml |
| │ │ └── yum_repository.yml |
| │ ├── templates |
| │ └── vars |
| ├── group_vars |
| │ └── all |
| ├── haproxy |
| │ ├── files |
| │ │ └── haproxy22.rpm.tar.gz |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── haproxy.cfg.j2 |
| ├── hosts |
| ├── keepalived |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── keepalived.conf.j2 |
| ├── mysql-server |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ └── vars |
| ├── network_init.yml |
| ├── nfs-server |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ │ └── expots.j2 |
| │ └── vars |
| ├── nginx |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── nginx.conf.j2 |
| ├── php-fpm |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ ├── fpm-www.conf.j2 |
| │ └── php.ini.j2 |
| ├── redis |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── redis.conf.j2 |
| └── top.yml |
| |
| |
| [root@manager roles] |
| - hosts: all |
| roles: |
| - role: base |
| tags: base |
| |
| - hosts: nfsservers |
| roles: |
| - role: nfs-server |
| tags: nfs |
| |
| - hosts: dbservers |
| roles: |
| - role: mysql-server |
| tags: mysql |
| |
| - hosts: redisservers |
| roles: |
| - role: redis |
| tags: redis |
| |
| - hosts: webservers |
| roles: |
| - role: nginx |
| tags: nginx |
| |
| - hosts: webservers |
| roles: |
| - role: php-fpm |
| tags: php-fpm |
| |
| - hosts: proxyservers |
| roles: |
| - role: haproxy |
| tags: haproxy |
| |
| - hosts: proxyservers |
| roles: |
| - role: keepalived |
| tags: keepalived |
| |
| [root@manager roles] |
| |
| |
| [root@proxy01 ~] |
| inet 172.16.1.100/32 scope global eth1 |
# 3.8 LVS 服务
1. 创建 Roles 目录结构
2. 配置 lvs 角色依赖 keepalived 角色
| [root@manager roles] |
| dependencies: |
| - { role: keepalived } |
3. 准备 lvs 角色的 tasks 任务
| [root@manager roles] |
| - name: Install Ipvsadm Packages |
| yum: |
| name: ipvsadm |
| state: present |
| |
| - name: Configure LVS Keepalived |
| template: |
| src: keepalived.conf.j2 |
| dest: /etc/keepalived/keepalived.conf |
| notify: Restart Keepalived Server |
| |
| - name: Start LVS Keepalived |
| systemd: |
| name: keepalived |
| state: started |
| enabled: yes |
4. 准备 keepalived 配置文件 keepalived.conf.j2
| [root@manager roles] |
| global_defs { |
| router_id <!--swig59--> |
| } |
| |
| vrrp_instance VI_1 { |
| |
| <!--swig60--> |
| |
| interface eth1 |
| virtual_router_id 50 |
| advert_int 1 |
| authentication { |
| auth_type PASS |
| auth_pass 1111 |
| } |
| virtual_ipaddress { |
| <!--swig61--> |
| } |
| } |
| |
| |
| virtual_server <!--swig62--> <!--swig63--> { |
| delay_loop 6 |
| lb_algo rr |
| lb_kind DR |
| protocol TCP |
| |
| <!--swig64--> |
| } |
| |
| |
| virtual_server <!--swig65--> <!--swig66--> { |
| delay_loop 6 |
| lb_algo rr |
| lb_kind DR |
| protocol TCP |
| |
| <!--swig67--> |
| } |
5. 配置变量参数
| [root@manager roles] |
| |
| all_group: www |
| all_user: www |
| all_uid: 666 |
| all_gid: 666 |
| |
| |
| nfs_share_zrlog: /data/zrlog |
| nfs_share_blog: /data/blog |
| nfs_allow_ip: 172.16.1.0/24 |
| |
| |
| mysql_super_user: app |
| mysql_super_pass: Superman*2025 |
| mysql_super_user_priv: '*.*:ALL' |
| mysql_allow_ip: '172.16.1.%' |
| mysql_server_ip: 172.16.1.51 |
| mysql_root_password: "Superman*2025" |
| mysql_version: "5.7" |
| |
| |
| nginx_conf_path: /etc/nginx/nginx.conf |
| nginx_include_dir: /etc/nginx/conf.d |
| nginx_include_path: /etc/nginx/conf.d/*.conf |
| |
| |
| php_ini_path: /etc/php.ini |
| php_fpm_path: /etc/php-fpm.d/www.conf |
| |
| session_method: redis |
| session_redis_path: "tcp://172.16.1.41:6379?weight=1&timeout=2.5" |
| |
| fpm_max_process: 200 |
| fpm_start_process: 20 |
| fpm_min_spare_servers: 10 |
| fpm_max_spare_servers: 50 |
| |
| |
| haproxy_include_path: /etc/haproxy/conf.d/ |
| proxy_vip: 172.16.1.100 |
| haproxy_port: 80 |
| |
| |
| lvs_vip: 172.16.1.100 |
| lvs_port_http: 80 |
| lvs_port_https: 443 |
| lvs_rs_network: lo:0 |
6. 整体模块测试
| |
| [root@manager roles] |
| . |
| ├── ansible.cfg |
| ├── base |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ ├── firewall.yml |
| │ │ ├── kernel.yml |
| │ │ ├── limits.yml |
| │ │ ├── main.yml |
| │ │ ├── rsyn_time.yml |
| │ │ ├── user.yml |
| │ │ ├── yum_pkg.yml |
| │ │ └── yum_repository.yml |
| │ ├── templates |
| │ └── vars |
| ├── group_vars |
| │ └── all |
| ├── haproxy |
| │ ├── files |
| │ │ └── haproxy22.rpm.tar.gz |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── haproxy.cfg.j2 |
| ├── hosts |
| ├── keepalived |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── keepalived.conf.j2 |
| ├── lvs |
| │ ├── files |
| │ ├── handlers |
| │ ├── meta |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── keepalived.conf.j2 |
| ├── mysql-server |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ └── vars |
| ├── network_init.yml |
| ├── nfs-server |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ │ └── expots.j2 |
| │ └── vars |
| ├── nginx |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── nginx.conf.j2 |
| ├── php-fpm |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ ├── fpm-www.conf.j2 |
| │ └── php.ini.j2 |
| ├── redis |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── redis.conf.j2 |
| └── top.yml |
| |
| |
| [root@manager roles] |
| - hosts: all |
| roles: |
| - role: base |
| tags: base |
| |
| - hosts: nfsservers |
| roles: |
| - role: nfs-server |
| tags: nfs |
| |
| - hosts: dbservers |
| roles: |
| - role: mysql-server |
| tags: mysql |
| |
| - hosts: redisservers |
| roles: |
| - role: redis |
| tags: redis |
| |
| - hosts: webservers |
| roles: |
| - role: nginx |
| tags: nginx |
| |
| - hosts: webservers |
| roles: |
| - role: php-fpm |
| tags: php-fpm |
| |
| - hosts: proxyservers |
| roles: |
| - role: haproxy |
| tags: haproxy |
| |
| - hosts: proxyservers |
| roles: |
| - role: keepalived |
| tags: keepalived |
| |
| - hosts: lbservers |
| roles: |
| - role: lvs |
| tags: lvs |
| |
| [root@manager roles] |
| |
| |
| [root@lb02 ~] |
| IP Virtual Server version 1.2.1 (size=4096) |
| Prot LocalAddress:Port Scheduler Flags |
| -> RemoteAddress:Port Forward Weight ActiveConn InActConn |
| TCP 172.16.1.100:80 rr |
| TCP 172.16.1.100:443 rr |
# 3.9 LVS devel 服务
1. 创建 Roles 目录结构
2. 准备 lvs devel 角色的 tasks 任务
| [root@manager roles] |
| - name: Configure VIP lo:0 |
| template: |
| src: ifcfg-lo:0.j2 |
| dest: /etc/sysconfig/network-scripts/ifcfg-<!--swig68--> |
| notify: Restart Network |
| |
| - name: Configure Arp_Ignore |
| sysctl: |
| name: "" |
| value: '1' |
| sysctl_set: yes |
| loop: |
| - net.ipv4.conf.default.arp_ignore |
| - net.ipv4.conf.all.arp_ignore |
| - net.ipv4.conf.lo.arp_ignore |
| |
| - name: Configure Arp_Announce |
| sysctl: |
| name: "" |
| value: '2' |
| sysctl_set: yes |
| loop: |
| - net.ipv4.conf.default.arp_announce |
| - net.ipv4.conf.all.arp_announce |
| - net.ipv4.conf.lo.arp_announce |
3. 准备 lvs devel 角色配置文件 ifcfg-lo:0.j2
| [root@manager roles] |
| DEVICE=<!--swig71--> |
| IPADDR=<!--swig72--> |
| NETMASK=255.0.0.0 |
| ONBOOT=yes |
| NAME=loopback |
4. 准备 lvs devel 角色 handlers
| [root@manager roles] |
| - name: Restart Network |
| shell: ifdown lo:0 && ifup lo:0 |
5. 整体模块测试
| |
| [root@manager roles] |
| . |
| ├── ansible.cfg |
| ├── base |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ ├── firewall.yml |
| │ │ ├── kernel.yml |
| │ │ ├── limits.yml |
| │ │ ├── main.yml |
| │ │ ├── rsyn_time.yml |
| │ │ ├── user.yml |
| │ │ ├── yum_pkg.yml |
| │ │ └── yum_repository.yml |
| │ ├── templates |
| │ └── vars |
| ├── group_vars |
| │ └── all |
| ├── haproxy |
| │ ├── files |
| │ │ └── haproxy22.rpm.tar.gz |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── haproxy.cfg.j2 |
| ├── hosts |
| ├── keepalived |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── keepalived.conf.j2 |
| ├── lvs |
| │ ├── files |
| │ ├── handlers |
| │ ├── meta |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── keepalived.conf.j2 |
| ├── lvs-devel |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── ifcfg-lo:0.j2 |
| ├── mysql-server |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ └── vars |
| ├── network_init.yml |
| ├── nfs-server |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ │ └── expots.j2 |
| │ └── vars |
| ├── nginx |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── nginx.conf.j2 |
| ├── php-fpm |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ ├── fpm-www.conf.j2 |
| │ └── php.ini.j2 |
| ├── redis |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── redis.conf.j2 |
| └── top.yml |
| |
| |
| [root@manager roles] |
| - hosts: all |
| roles: |
| - role: base |
| tags: base |
| |
| - hosts: nfsservers |
| roles: |
| - role: nfs-server |
| tags: nfs |
| |
| - hosts: dbservers |
| roles: |
| - role: mysql-server |
| tags: mysql |
| |
| - hosts: redisservers |
| roles: |
| - role: redis |
| tags: redis |
| |
| - hosts: webservers |
| roles: |
| - role: nginx |
| tags: nginx |
| |
| - hosts: webservers |
| roles: |
| - role: php-fpm |
| tags: php-fpm |
| |
| - hosts: proxyservers |
| roles: |
| - role: haproxy |
| tags: haproxy |
| |
| - hosts: proxyservers |
| roles: |
| - role: keepalived |
| tags: keepalived |
| |
| - hosts: proxyservers |
| roles: |
| - role: lvs-devel |
| tags: lvs-devel |
| |
| - hosts: lbservers |
| roles: |
| - role: lvs |
| tags: lvs |
| |
| |
| [root@manager roles] |
| [root@proxy01 ~] |
| lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 |
| |
| [root@proxy02 ~] |
| lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 |
# 3.10 Route 服务
1. 创建 Roles 目录结构
2. 准备 route 角色的 tasks 任务
| [root@manager roles] |
| - name: Iptables SNAT Share Network |
| iptables: |
| table: nat |
| chain: POSTROUTING |
| source: 172.16.1.0/24 |
| jump: SNAT |
| to_source: "" |
| |
| - name: Iptables DNAT Http 80 Port |
| iptables: |
| table: nat |
| chain: PREROUTING |
| protocol: tcp |
| destination: "" |
| destination_port: '' |
| jump: DNAT |
| to_destination: ":" |
| |
| - name: Iptables DNAT Http 443 Port |
| iptables: |
| table: nat |
| chain: PREROUTING |
| protocol: tcp |
| destination: "" |
| destination_port: '' |
| jump: DNAT |
| to_destination: ":" |
3. 整体模块测试
| |
| [root@manager roles] |
| . |
| ├── ansible.cfg |
| ├── base |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ ├── firewall.yml |
| │ │ ├── kernel.yml |
| │ │ ├── limits.yml |
| │ │ ├── main.yml |
| │ │ ├── rsyn_time.yml |
| │ │ ├── user.yml |
| │ │ ├── yum_pkg.yml |
| │ │ └── yum_repository.yml |
| │ ├── templates |
| │ └── vars |
| ├── group_vars |
| │ └── all |
| ├── haproxy |
| │ ├── files |
| │ │ └── haproxy22.rpm.tar.gz |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── haproxy.cfg.j2 |
| ├── hosts |
| ├── keepalived |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── keepalived.conf.j2 |
| ├── lvs |
| │ ├── files |
| │ ├── handlers |
| │ ├── meta |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── keepalived.conf.j2 |
| ├── lvs-devel |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── ifcfg-lo:0.j2 |
| ├── mysql-server |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ └── vars |
| ├── network_init.yml |
| ├── nfs-server |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ │ └── expots.j2 |
| │ └── vars |
| ├── nginx |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── nginx.conf.j2 |
| ├── php-fpm |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ ├── fpm-www.conf.j2 |
| │ └── php.ini.j2 |
| ├── redis |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── redis.conf.j2 |
| ├── route |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| └── top.yml |
| |
| |
| [root@manager roles] |
| - hosts: all |
| roles: |
| - role: base |
| tags: base |
| |
| - hosts: nfsservers |
| roles: |
| - role: nfs-server |
| tags: nfs |
| |
| - hosts: dbservers |
| roles: |
| - role: mysql-server |
| tags: mysql |
| |
| - hosts: redisservers |
| roles: |
| - role: redis |
| tags: redis |
| |
| - hosts: webservers |
| roles: |
| - role: nginx |
| tags: nginx |
| |
| - hosts: webservers |
| roles: |
| - role: php-fpm |
| tags: php-fpm |
| |
| - hosts: proxyservers |
| roles: |
| - role: haproxy |
| tags: haproxy |
| |
| - hosts: proxyservers |
| roles: |
| - role: keepalived |
| - role: lvs-devel |
| tags: keepalived |
| |
| - hosts: lbservers |
| roles: |
| - role: lvs |
| tags: lvs |
| |
| - hosts: routes |
| roles: |
| - role: route |
| tags: route |
| |
| |
| [root@manager roles] |
| [root@routes ~] |
| Chain PREROUTING (policy ACCEPT) |
| target prot opt source destination |
| DNAT tcp -- 0.0.0.0/0 192.168.40.200 tcp dpt:80 to:172.16.1.100:80 |
| DNAT tcp -- 0.0.0.0/0 192.168.40.200 tcp dpt:443 to:172.16.1.100:443 |
| |
| Chain INPUT (policy ACCEPT) |
| target prot opt source destination |
| |
| Chain OUTPUT (policy ACCEPT) |
| target prot opt source destination |
| |
| Chain POSTROUTING (policy ACCEPT) |
| target prot opt source destination |
| SNAT all -- 172.16.1.0/24 0.0.0.0/0 to:192.168.40.200 |
# 3.11 DNS 服务
1. 创建 Roles 目录结构
2. 准备 dns 角色的 tasks 任务
| [root@manager roles] |
| - name: Install Bind Server |
| yum: |
| name: "" |
| state: present |
| loop: |
| - bind-utils |
| - bind |
| |
| - name: Configure named.conf |
| template: |
| src: named.conf.j2 |
| dest: /etc/named.conf |
| owner: root |
| group: named |
| mode: '0640' |
| notify: Restart Bind Server |
| |
| - name: Configure "" zone |
| template: |
| src: hmallleasing.com.zone.j2 |
| dest: "/.zone" |
| when: ( ansible_hostname == "dns-master" ) |
| notify: Restart Bind Server |
| |
| - name: Start BIND Server |
| systemd: |
| name: named |
| state: started |
| enabled: yes |
3. 准备 dns 角色配置文件 named.conf.j2
| [root@manager roles] |
| options { |
| listen-on port 53 { any; }; |
| directory "/var/named"; |
| dump-file "/var/named/data/cache_dump.db"; |
| statistics-file "/var/named/data/named_stats.txt"; |
| memstatistics-file "/var/named/data/named_mem_stats.txt"; |
| recursing-file "/var/named/data/named.recursing"; |
| secroots-file "/var/named/data/named.secroots"; |
| allow-query { any; }; |
| |
| |
| <!--swig86--> |
| |
| recursion yes; |
| dnssec-enable yes; |
| dnssec-validation yes; |
| bindkeys-file "/etc/named.root.key"; |
| managed-keys-directory "/var/named/dynamic"; |
| pid-file "/run/named/named.pid"; |
| session-keyfile "/run/named/session.key"; |
| }; |
| |
| logging { |
| channel default_debug { |
| file "data/named.run"; |
| severity dynamic; |
| }; |
| }; |
| |
| zone "." IN { |
| type hint; |
| file "named.ca"; |
| }; |
| |
| <!--swig87--> |
| |
| include "/etc/named.rfc1912.zones"; |
| include "/etc/named.root.key"; |
4. 准备 dns 角色区域数据库文件 named.conf.j2
| [root@manager roles] |
| $TTL 600; |
| |
| <!--swig88-->. IN SOA ns.<!--swig89-->. xuyong.<!--swig90-->. ( |
| 202501016 |
| 1800 |
| 900 |
| 604800 |
| 86400 |
| ) |
| |
| <!--swig91-->. IN NS ns1.<!--swig92-->. |
| <!--swig93-->. IN NS ns2.<!--swig94-->. |
| |
| ns1.<!--swig95-->. IN A <!--swig96--> |
| ns2.<!--swig97-->. IN A <!--swig98--> |
| |
| |
| www.<!--swig99-->. IN A 1.1.1.1 |
| blog.<!--swig100-->. IN A 192.168.40.200 |
4. 准备 dns 角色 handlers
| [root@manager roles] |
| - name: Restart Bind Server |
| systemd: |
| name: named |
| state: restarted |
5. 配置变量参数
| [root@manager roles] |
| |
| all_group: www |
| all_user: www |
| all_uid: 666 |
| all_gid: 666 |
| |
| |
| nfs_share_zrlog: /data/zrlog |
| nfs_share_blog: /data/blog |
| nfs_allow_ip: 172.16.1.0/24 |
| |
| |
| mysql_super_user: app |
| mysql_super_pass: Superman*2025 |
| mysql_super_user_priv: '*.*:ALL' |
| mysql_allow_ip: '172.16.1.%' |
| mysql_server_ip: 172.16.1.51 |
| mysql_root_password: "Superman*2025" |
| mysql_version: "5.7" |
| |
| |
| nginx_conf_path: /etc/nginx/nginx.conf |
| nginx_include_dir: /etc/nginx/conf.d |
| nginx_include_path: /etc/nginx/conf.d/*.conf |
| |
| |
| php_ini_path: /etc/php.ini |
| php_fpm_path: /etc/php-fpm.d/www.conf |
| |
| session_method: redis |
| session_redis_path: "tcp://172.16.1.41:6379?weight=1&timeout=2.5" |
| |
| fpm_max_process: 200 |
| fpm_start_process: 20 |
| fpm_min_spare_servers: 10 |
| fpm_max_spare_servers: 50 |
| |
| |
| haproxy_include_path: /etc/haproxy/conf.d/ |
| proxy_vip: 172.16.1.100 |
| haproxy_port: 80 |
| |
| |
| lvs_vip: 172.16.1.100 |
| lvs_port_http: 80 |
| lvs_port_https: 443 |
| lvs_rs_network: lo:0 |
| |
| |
| dns_master_ip: 172.16.1.91 |
| dns_slave_ip: 172.16.1.92 |
| dns_zone_path: /var/named |
| dns_domain: hmallleasing.com |
6. 整体模块测试
| |
| [root@manager roles] |
| . |
| ├── ansible.cfg |
| ├── base |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ ├── firewall.yml |
| │ │ ├── kernel.yml |
| │ │ ├── limits.yml |
| │ │ ├── main.yml |
| │ │ ├── rsyn_time.yml |
| │ │ ├── user.yml |
| │ │ ├── yum_pkg.yml |
| │ │ └── yum_repository.yml |
| │ ├── templates |
| │ └── vars |
| ├── dns |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.ym |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ ├── hmallleasing.com.zone.j2 |
| │ └── named.conf.j2 |
| ├── group_vars |
| │ └── all |
| ├── haproxy |
| │ ├── files |
| │ │ └── haproxy22.rpm.tar.gz |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── haproxy.cfg.j2 |
| ├── hosts |
| ├── keepalived |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── keepalived.conf.j2 |
| ├── lvs |
| │ ├── files |
| │ ├── handlers |
| │ ├── meta |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── keepalived.conf.j2 |
| ├── lvs-devel |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── ifcfg-lo:0.j2 |
| ├── mysql-server |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ └── vars |
| ├── network_init.yml |
| ├── nfs-server |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ │ └── expots.j2 |
| │ └── vars |
| ├── nginx |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── nginx.conf.j2 |
| ├── php-fpm |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ ├── fpm-www.conf.j2 |
| │ └── php.ini.j2 |
| ├── redis |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── redis.conf.j2 |
| ├── route |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| └── top.yml |
| |
| |
| [root@manager roles] |
| - hosts: all |
| roles: |
| - role: base |
| tags: base |
| |
| - hosts: nfsservers |
| roles: |
| - role: nfs-server |
| tags: nfs |
| |
| - hosts: dbservers |
| roles: |
| - role: mysql-server |
| tags: mysql |
| |
| - hosts: redisservers |
| roles: |
| - role: redis |
| tags: redis |
| |
| - hosts: webservers |
| roles: |
| - role: nginx |
| tags: nginx |
| |
| - hosts: webservers |
| roles: |
| - role: php-fpm |
| tags: php-fpm |
| |
| - hosts: proxyservers |
| roles: |
| - role: haproxy |
| tags: haproxy |
| |
| - hosts: proxyservers |
| roles: |
| - role: keepalived |
| - role: lvs-devel |
| tags: keepalived |
| |
| - hosts: lbservers |
| roles: |
| - role: lvs |
| tags: lvs |
| |
| - hosts: routes |
| roles: |
| - role: route |
| tags: route |
| |
| - hosts: dnsservers |
| roles: |
| - role: dns |
| tags: dns |
| |
| |
| [root@manager roles] |
| [root@manager roles] |
| 1.1.1.1 |
| [root@manager roles] |
| 1.1.1.1 |
| [root@manager ~] |
| 192.168.40.200 |
| [root@manager ~] |
| 192.168.40.200 |
# 3.12 接入 wordpress-web 服务
1. 创建 Roles 目录结构
2. 准备 wordpress-web 角色的依赖
| [root@manager roles] |
| dependencies: |
| - { role: nginx } |
| - { role: php-fpm } |
3. 准备 wordpress-web 角色的 tasks 任务
| [root@manager roles] |
| - name: Create Wordpress Configure |
| template: |
| src: blog.hmallleasing.com.conf.j2 |
| dest: "/" |
| owner: root |
| group: root |
| mode: '0644' |
| notify: Restart Nginx Server |
| |
| - name: Create Code Directory |
| file: |
| path: "" |
| state: directory |
| owner: "" |
| group: "" |
| recurse: yes |
| |
| - name: Import Wordpress Code |
| unarchive: |
| src: wordpress.tar.gz |
| dest: "" |
| owner: "" |
| group: "" |
| creates: "/wp-config.php" |
| |
| - name: Copy Wordpress Connection MySQL FIle |
| template: |
| src: wp-config.php.j2 |
| dest: "/wp-config.php" |
4. 准备 wordpress-web 角色配置文件 blog.hmallleasing.com.conf.j2
| [root@manager roles] |
| server { |
| listen <!--swig111-->; |
| server_name <!--swig112-->; |
| root <!--swig113-->; |
| |
| location / { |
| index index.php; |
| } |
| |
| location ~ \.php$ { |
| fastcgi_pass 127.0.0.1:9000; |
| fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; |
| |
| include fastcgi_params; |
| |
| } |
| } |
5. 准备 wordpress-web 角色配置文件 blog.hmallleasing.com.conf.j2
| [root@manager roles] |
| <?php |
| /** |
| * The base configuration for WordPress |
| * |
| * The wp-config.php creation script uses this file during the installation. |
| * You don't have to use the web site, you can copy this file to "wp-config.php" |
| * and fill in the values. |
| * |
| * This file contains the following configurations: |
| * |
| * * MySQL settings |
| * * Secret keys |
| * * Database table prefix |
| * * ABSPATH |
| * |
| * @link https://wordpress.org/support/article/editing-wp-config-php/ |
| * |
| * @package WordPress |
| */ |
| |
| // ** MySQL settings - You can get this info from your web host ** // |
| /** The name of the database for WordPress */ |
| define( 'DB_NAME', 'wordpress' ); |
| |
| /** MySQL database username */ |
| define( 'DB_USER', '<!--swig115-->' ); |
| |
| /** MySQL database password */ |
| define( 'DB_PASSWORD', '<!--swig116-->' ); |
| |
| /** MySQL hostname */ |
| define( 'DB_HOST', '<!--swig117-->' ); |
| |
| /** Database charset to use in creating database tables. */ |
| define( 'DB_CHARSET', 'utf8mb4' ); |
| |
| /** The database collate type. Don't change this if in doubt. */ |
| define( 'DB_COLLATE', '' ); |
| |
| /** |
| * Authentication unique keys and salts. |
| * |
| * Change these to different unique phrases! You can generate these using |
| * the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}. |
| * |
| * You can change these at any point in time to invalidate all existing cookies. |
| * This will force all users to have to log in again. |
| * |
| * @since 2.6.0 |
| */ |
| define( 'AUTH_KEY', './w>#r7VS2g|Npy[8K@DV,..I55N6`WUe3KlHuu>Mw,rh*y/7zyh+#-s tH{H`=3' ); |
| define( 'SECURE_AUTH_KEY', '^di8c$=^N@3-~5EcjAU2{8*Kjg)0_E8b0:aR]{mFQKAf=3!0II{b+SI|Z8myd(.h' ); |
| define( 'LOGGED_IN_KEY', '[30w[|*($S0-EOY*fNWUj_ne$I={kQw}6PgT-cm59y!ZnJ7boS6&?5_k0%JO2S.d' ); |
| define( 'NONCE_KEY', 'xLm$z=+m^IQy PLYoXVT_bLQ7q`14%mT5!Fd{)(cLID+}j.O9)$+j,rebHm2y_!H' ); |
| define( 'AUTH_SALT', 'dG#2`gaHSutER umN7`s%gIDC&U`VZtR<4Ds38)pTkHd|O!9=2i;0qv4lsl:mU!N' ); |
| define( 'SECURE_AUTH_SALT', 'p9CLMtl01&P>OX:(sZg2_Z0rGUM/wIE=d[_}$R|q]}y=w*Z1~q~3sDOp1[|hbvXx' ); |
| define( 'LOGGED_IN_SALT', '`#t{9~u$W@[@%g?r4oTnh&!okeRDZ)X <xkL_{s1L}v0Csejz7x=PPUmAI1HJjTU' ); |
| define( 'NONCE_SALT', 'czEr-n:.NclG?Z:;Fg5k+ZANyYP&&Q+cU% mU~Dz1}r/5b(I&@3z$,{6MO+3-=}<' ); |
| |
| /** |
| |
| /** |
| * WordPress database table prefix. |
| * |
| * You can have multiple installations in one database if you give each |
| * a unique prefix. Only numbers, letters, and underscores please! |
| */ |
| $table_prefix = 'wp_'; |
| |
| /** |
| * For developers: WordPress debugging mode. |
| * |
| * Change this to true to enable the display of notices during development. |
| * It is strongly recommended that plugin and theme developers use WP_DEBUG |
| * in their development environments. |
| * |
| * For information on other constants that can be used for debugging, |
| * visit the documentation. |
| * |
| * @link https://wordpress.org/support/article/debugging-in-wordpress/ |
| */ |
| define( 'WP_DEBUG', false ); |
| |
| /* Add any custom values between this line and the "stop editing" line. */ |
| |
| |
| |
| /* That's all, stop editing! Happy publishing. */ |
| |
| /** Absolute path to the WordPress directory. */ |
| if ( ! defined( 'ABSPATH' ) ) { |
| define( 'ABSPATH', __DIR__ . '/' ); |
| } |
| |
| /** Sets up WordPress vars and included files. */ |
| require_once ABSPATH . 'wp-settings.php'; |
5. 准备 wordpress-web 角色的项目代码
| [root@manager roles] |
| -rw-r--r-- 1 root root 17299333 Nov 6 20:39 wordpress-web/files/wordpress.tar.gz |
6. 配置变量参数
| [root@manager roles] |
| |
| all_group: www |
| all_user: www |
| all_uid: 666 |
| all_gid: 666 |
| |
| |
| nfs_share_zrlog: /data/zrlog |
| nfs_share_blog: /data/blog |
| nfs_allow_ip: 172.16.1.0/24 |
| |
| |
| mysql_super_user: app |
| mysql_super_pass: Superman*2025 |
| mysql_super_user_priv: '*.*:ALL' |
| mysql_allow_ip: '172.16.1.%' |
| mysql_server_ip: 172.16.1.51 |
| mysql_root_password: "Superman*2025" |
| mysql_version: "5.7" |
| |
| |
| nginx_conf_path: /etc/nginx/nginx.conf |
| nginx_include_dir: /etc/nginx/conf.d |
| nginx_include_path: /etc/nginx/conf.d/*.conf |
| |
| |
| php_ini_path: /etc/php.ini |
| php_fpm_path: /etc/php-fpm.d/www.conf |
| |
| session_method: redis |
| session_redis_path: "tcp://172.16.1.41:6379?weight=1&timeout=2.5" |
| |
| fpm_max_process: 200 |
| fpm_start_process: 20 |
| fpm_min_spare_servers: 10 |
| fpm_max_spare_servers: 50 |
| |
| |
| haproxy_include_path: /etc/haproxy/conf.d/ |
| proxy_vip: 172.16.1.100 |
| haproxy_port: 80 |
| |
| |
| lvs_vip: 172.16.1.100 |
| lvs_port_http: 80 |
| lvs_port_https: 443 |
| lvs_rs_network: lo:0 |
| |
| |
| dns_master_ip: 172.16.1.91 |
| dns_slave_ip: 172.16.1.92 |
| dns_zone_path: /var/named |
| dns_domain: hmallleasing.com |
| |
| |
| word_domain: blog.hmallleasing.com |
| word_http_port: 80 |
| word_code_path: /code/wordpress |
| word_nginx_name: blog.hmallleasing.com.conf |
| fastcgi_https: off |
7. 整体模块测试
| |
| [root@manager roles] |
| . |
| ├── ansible.cfg |
| ├── base |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ ├── firewall.yml |
| │ │ ├── kernel.yml |
| │ │ ├── limits.yml |
| │ │ ├── main.yml |
| │ │ ├── rsyn_time.yml |
| │ │ ├── user.yml |
| │ │ ├── yum_pkg.yml |
| │ │ └── yum_repository.yml |
| │ ├── templates |
| │ └── vars |
| ├── dns |
| │ ├── files |
| │ ├── handlers |
| │ │ ├── main.ym |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ ├── hmallleasing.com.zone.j2 |
| │ └── named.conf.j2 |
| ├── group_vars |
| │ └── all |
| ├── haproxy |
| │ ├── files |
| │ │ └── haproxy22.rpm.tar.gz |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── haproxy.cfg.j2 |
| ├── hosts |
| ├── keepalived |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── keepalived.conf.j2 |
| ├── lvs |
| │ ├── files |
| │ ├── handlers |
| │ ├── meta |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── keepalived.conf.j2 |
| ├── lvs-devel |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── ifcfg-lo:0.j2 |
| ├── mysql-server |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ └── vars |
| ├── network_init.yml |
| ├── nfs-server |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ │ └── expots.j2 |
| │ └── vars |
| ├── nginx |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── nginx.conf.j2 |
| ├── php-fpm |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ ├── fpm-www.conf.j2 |
| │ └── php.ini.j2 |
| ├── redis |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── redis.conf.j2 |
| ├── route |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| ├── top.yml |
| └── wordpress-web |
| ├── files |
| │ └── wordpress.tar.gz |
| ├── handlers |
| ├── meta |
| │ └── main.yml |
| ├── tasks |
| │ └── main.yml |
| └── templates |
| ├── blog.hmallleasing.com.conf.j2 |
| └── wp-config.php.j2 |
| |
| |
| [root@manager roles] |
| - hosts: all |
| roles: |
| - role: base |
| tags: base |
| |
| - hosts: nfsservers |
| roles: |
| - role: nfs-server |
| tags: nfs |
| |
| - hosts: dbservers |
| roles: |
| - role: mysql-server |
| tags: mysql |
| |
| - hosts: redisservers |
| roles: |
| - role: redis |
| tags: redis |
| |
| - hosts: webservers |
| roles: |
| - role: wordpress-web |
| tags: wordpress |
| |
| [root@manager roles] |
# 3.13 接入 wordpress-proxy 服务
七层负载均衡使用 Haproxy
1. 创建 Roles 目录结构
2. 准备 wordpress-proxy 角色的依赖
| [root@manager roles] |
| dependencies: |
| - { role: haproxy } |
3. 准备 wordpress-proxy 角色的 tasks 任务
| [root@manager roles] |
| - name: Wordpress Haproxy Configure |
| template: |
| src: wordpress.cfg.j2 |
| dest: "/wordpress.cfg" |
| notify: Restart Haproxy Server |
4. 准备 wordpress-proxy 角色配置文件 wordpress.cfg.j2
| [root@manager roles] |
| frontend blog |
| bind *:80 |
| mode http |
| |
| acl blog_domain hdr_reg(host) -i <!--swig119--> |
| use_backend blog_cluster if blog_domain |
| |
| |
| backend blog_cluster |
| balance roundrobin |
| <!--swig120--> |
5. 整体模块测试
| |
| [root@manager roles] |
| . |
| ├── ansible.cfg |
| ├── base |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ ├── firewall.yml |
| │ │ ├── kernel.yml |
| │ │ ├── limits.yml |
| │ │ ├── main.yml |
| │ │ ├── rsyn_time.yml |
| │ │ ├── user.yml |
| │ │ ├── yum_pkg.yml |
| │ │ └── yum_repository.yml |
| │ ├── templates |
| │ └── vars |
| ├── dns |
| │ ├── files |
| │ ├── handlers |
| │ │ ├── main.ym |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ ├── hmallleasing.com.zone.j2 |
| │ └── named.conf.j2 |
| ├── group_vars |
| │ └── all |
| ├── haproxy |
| │ ├── files |
| │ │ └── haproxy22.rpm.tar.gz |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── haproxy.cfg.j2 |
| ├── hosts |
| ├── keepalived |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── keepalived.conf.j2 |
| ├── lvs |
| │ ├── files |
| │ ├── handlers |
| │ ├── meta |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── keepalived.conf.j2 |
| ├── lvs-devel |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── ifcfg-lo:0.j2 |
| ├── mysql-server |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ └── vars |
| ├── network_init.yml |
| ├── nfs-server |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ │ └── expots.j2 |
| │ └── vars |
| ├── nginx |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── nginx.conf.j2 |
| ├── php-fpm |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ ├── fpm-www.conf.j2 |
| │ └── php.ini.j2 |
| ├── redis |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── redis.conf.j2 |
| ├── route |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| ├── top.yml |
| ├── wordpress-proxy |
| │ ├── files |
| │ ├── handlers |
| │ ├── meta |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── wordpress.cfg.j2 |
| └── wordpress-web |
| ├── files |
| │ └── wordpress.tar.gz |
| ├── handlers |
| ├── meta |
| │ └── main.yml |
| ├── tasks |
| │ └── main.yml |
| └── templates |
| ├── blog.hmallleasing.com.conf.j2 |
| └── wp-config.php.j2 |
| |
| |
| [root@manager roles] |
| - hosts: routes |
| roles: |
| - role: route |
| |
| - hosts: all |
| roles: |
| - role: base |
| |
| - hosts: nfsservers |
| roles: |
| - role: nfs-server |
| |
| - hosts: dbservers |
| roles: |
| - role: mysql-server |
| |
| - hosts: redisservers |
| roles: |
| - role: redis |
| |
| - hosts: webservers |
| roles: |
| - role: wordpress-web |
| |
| - hosts: proxyservers |
| roles: |
| - role: lvs-devel |
| - role: wordpress-proxy |
| |
| - hosts: lbservers |
| roles: |
| - role: lvs |
| |
| - hosts: dnsservers |
| roles: |
| - role: dns |
| |
| [root@manager roles] |
# 3.14 接入 wordpress-proxy-nginx 服务
七层负载均衡使用 Nginx
1. 创建 Roles 目录结构
2. 准备 wordpress-proxy-nginx 角色的依赖
| [root@manager roles] |
| dependencies: |
| - { role: nginx } |
3. 准备 wordpress-proxy-nginx 角色的 tasks 任务
| [root@manager roles] |
| - name: Wordpress Nginx Configure |
| template: |
| src: "blog.hmallleasing.com.conf.j2" |
| dest: "/" |
| notify: Restart Nginx Server |
| |
| - name: Nginx Proxy_params Configure |
| template: |
| src: "proxy_params.j2" |
| dest: "/etc/nginx/proxy_params" |
| notify: Restart Nginx Server |
| |
| - name: Unarchive SSLKEY.zip |
| unarchive: |
| src: SSLKEY.zip |
| dest: /etc/nginx |
| creates: /etc/nginx/SSLKEY |
4. 准备 wordpress-proxy-nginx 角色配置文件 wordpress.cfg.j2
| [root@manager roles] |
| upstream blog { |
| <!--swig123--> |
| } |
| |
| server { |
| listen 443 ssl; |
| server_name <!--swig124-->; |
| ssl_prefer_server_ciphers on; |
| ssl_certificate /etc/nginx/SSLKEY/hmallleasing.com.pem; |
| ssl_certificate_key /etc/nginx/SSLKEY/hmallleasing.com.key; |
| location / { |
| proxy_pass http://blog; |
| include proxy_params; |
| } |
| } |
| |
| server { |
| listen 80; |
| server_name <!--swig125-->; |
| return 302 https://$server_name$request_uri; |
| } |
5. 准备 wordpress-proxy-nginx 角色配置文件 proxy_params.j2
| [root@manager roles] |
| proxy_http_version 1.1; |
| proxy_set_header Connectin ""; |
| proxy_set_header Host $http_host; |
| proxy_set_header X-Real-IP $remote_addr; |
| proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
| proxy_connect_timeout 60; |
| proxy_send_timeout 60; |
| proxy_read_timeout 120; |
| proxy_buffering on; |
| proxy_buffer_size 32k; |
| proxy_buffers 4 128k; |
| proxy_temp_file_write_size 10240k; |
| proxy_max_temp_file_size 10240k; |
6. 准备 wordpress-proxy-nginx 角色证书文件
| [root@manager roles] |
| -rw-r--r-- 1 root root 4993 Oct 26 21:20 wordpress-proxy-nginx/files/SSLKEY.zip |
7. 整体模块测试
| |
| [root@manager roles] |
| . |
| ├── ansible.cfg |
| ├── base |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ ├── firewall.yml |
| │ │ ├── kernel.yml |
| │ │ ├── limits.yml |
| │ │ ├── main.yml |
| │ │ ├── rsyn_time.yml |
| │ │ ├── user.yml |
| │ │ ├── yum_pkg.yml |
| │ │ └── yum_repository.yml |
| │ ├── templates |
| │ └── vars |
| ├── dns |
| │ ├── files |
| │ ├── handlers |
| │ │ ├── main.ym |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ ├── hmallleasing.com.zone.j2 |
| │ └── named.conf.j2 |
| ├── group_vars |
| │ └── all |
| ├── haproxy |
| │ ├── files |
| │ │ └── haproxy22.rpm.tar.gz |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── haproxy.cfg.j2 |
| ├── hosts |
| ├── keepalived |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── keepalived.conf.j2 |
| ├── lvs |
| │ ├── files |
| │ ├── handlers |
| │ ├── meta |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── keepalived.conf.j2 |
| ├── lvs-devel |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── ifcfg-lo:0.j2 |
| ├── mysql-server |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ └── vars |
| ├── network_init.yml |
| ├── nfs-server |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ ├── templates |
| │ │ └── expots.j2 |
| │ └── vars |
| ├── nginx |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── nginx.conf.j2 |
| ├── php-fpm |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ ├── fpm-www.conf.j2 |
| │ └── php.ini.j2 |
| ├── redis |
| │ ├── files |
| │ ├── handlers |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── redis.conf.j2 |
| ├── route |
| │ ├── files |
| │ ├── handlers |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| ├── top.yml |
| ├── wordpress-proxy |
| │ ├── files |
| │ ├── handlers |
| │ ├── meta |
| │ │ └── main.yml |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ └── wordpress.cfg.j2 |
| ├── wordpress-proxy-nginx |
| │ ├── files |
| │ │ └── SSLKEY.zip |
| │ ├── handlers |
| │ ├── meta |
| │ ├── tasks |
| │ │ └── main.yml |
| │ └── templates |
| │ ├── blog.hmallleasing.com.conf.j2 |
| │ └── proxy_params.j2 |
| └── wordpress-web |
| ├── files |
| │ └── wordpress.tar.gz |
| ├── handlers |
| ├── meta |
| │ └── main.yml |
| ├── tasks |
| │ └── main.yml |
| └── templates |
| ├── blog.hmallleasing.com.conf.j2 |
| └── wp-config.php.j2 |
| |
| |
| |
| [root@manager roles] |
| - hosts: routes |
| roles: |
| - role: route |
| |
| - hosts: all |
| roles: |
| - role: base |
| |
| - hosts: nfsservers |
| roles: |
| - role: nfs-server |
| |
| - hosts: dbservers |
| roles: |
| - role: mysql-server |
| |
| - hosts: redisservers |
| roles: |
| - role: redis |
| |
| - hosts: webservers |
| roles: |
| - role: wordpress-web |
| |
| - hosts: proxyservers |
| roles: |
| - role: lvs-devel |
| - role: wordpress-proxy-nginx |
| |
| - hosts: lbservers |
| roles: |
| - role: lvs |
| |
| - hosts: dnsservers |
| roles: |
| - role: dns |
| |
| [root@manager roles] |