【Ansible部署服务】

基于Ansible的Linux服务器自动化部署与管理实战 Ansible 是一款开源的 IT 自动化工具,主要用于配置管理、应用部署和任务自动化。无代理架构:无需在被管理的服务器上安装客户端。易于学习:使用 YAML 语言编写配置,简洁直观。跨平台支持:适用于 Linux、Windows 和网络设备等多种环境。强大的模块库:提供丰富的内置模块,支持文件管理、软件安装、系统服务控制等功能。Playbook 是 Ansible 的核心配置文件,使用 YAML 格式编写,定义服务器上的一系列任务。 阅读详情

部署Zabbix

首先编辑 hosts 文件,定义目标主机及其连接信息,为后续执行 Playbook 做好准备

[devops@server1 ansible]$ vim hosts

接下来创建 zabbix.yml 文件,编写完整的部署 Playbook。该 Playbook 将依次完成 Zabbix 仓库添加、软件包安装、MySQL 数据库配置、初始数据导入以及服务启动等步骤。

[devops@server1 ansible]$ vim zabbix.yml

---
- hosts: zabbix_server
become: yes
vars:
zabbix_db_password: "password"
zabbix_db_name: "zabbix"
zabbix_db_user: "zabbix"

tasks:
- name: Install PyMySQL for MySQL modules
ansible.builtin.yum:
name: python3-PyMySQL
state: present

- name: Add Zabbix repo
ansible.builtin.yum:
name: https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-latest-6.0.el9.noarch.rpm
state: present
disable_gpg_check: yes

- name: Install Zabbix packages
ansible.builtin.yum:
name:
- zabbix-server-mysql
- zabbix-web-mysql
- zabbix-apache-conf
- zabbix-sql-scripts
- zabbix-selinux-policy
- zabbix-agent
state: present

- name: Install MySQL server
ansible.builtin.yum:
name: mysql-server
state: present

- name: Start and enable MySQL service
ansible.builtin.systemd:
name: mysqld
state: started
enabled: yes

- name: Create Zabbix database
community.mysql.mysql_db:
name: "{{ zabbix_db_name }}"
state: present
encoding: utf8mb4
collation: utf8mb4_bin
login_unix_socket: /var/lib/mysql/mysql.sock

- name: Create Zabbix MySQL user
community.mysql.mysql_user:
name: "{{ zabbix_db_user }}"
password: "{{ zabbix_db_password }}"
priv: "{{ zabbix_db_name }}.*:ALL"
host: localhost
state: present
login_unix_socket: /var/lib/mysql/mysql.sock

- name: Set log_bin_trust_function_creators = 1
community.mysql.mysql_variables:
variable: log_bin_trust_function_creators
value: 1
login_unix_socket: /var/lib/mysql/mysql.sock

- name: Import Zabbix initial schema and data
ansible.builtin.shell: |
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -u{{ zabbix_db_user }} -p{{ zabbix_db_password }} {{ zabbix_db_name }}
args:
creates: /tmp/.zabbix_schema_imported
no_log: true
register: import_result

- name: Mark schema as imported
ansible.builtin.file:
path: /tmp/.zabbix_schema_imported
state: touch
when: import_result.changed

- name: Set log_bin_trust_function_creators = 0
community.mysql.mysql_variables:
variable: log_bin_trust_function_creators
value: 0
login_unix_socket: /var/lib/mysql/mysql.sock

- name: Configure Zabbix Server DB password
ansible.builtin.lineinfile:
path: /etc/zabbix/zabbix_server.conf
regexp: '^#?DBPassword='
line: "DBPassword={{ zabbix_db_password }}"

- name: Start and enable all services
ansible.builtin.systemd:
name: "{{ item }}"
state: restarted
enabled: yes
loop:
- zabbix-server
- zabbix-agent
- httpd
- php-fpm

安装 community.mysql 集合,该集合提供了 MySQL 数据库和用户管理所需的模块,供 Playbook 调用

[devops@server1 ansible]$ ansible-galaxy collection install community.mysql

执行 Playbook 后,Ansible 会按照定义的任务顺序自动完成 Zabbix 的安装与配置。部署完成后,可通过浏览器访问 Zabbix Web 界面进行验证。

[devops@server1 ansible]$ ansible-playbook zabbix.yml

✅ 验证部署:

访问 http://192.168.247.143/zabbix,默认用户名/密码:Admin/zabbix

使用 ansible-vault 加密密码

删掉zabbix_db_password: "password"

[devops@server1 ansible]$ ansible-vault create group_vars/zabbix_server/vault.yml

[devops@server1 ansible]$ ansible-playbook zabbix.yml --ask-vault-pass

结合TiDB

IP主机名角色
192.168.247.153tidb-01PD1、TiKV1、TiDB-Server1、Monitor(Prometheus+Grafana)
192.168.247.154tidb-02PD2、TiKV2、TiDB-Server2
192.168.247.155tidb-03PD3、TiKV3
192.168.247.156zabbix-01Zabbix Server + Web 前端

前置说明: 所有系统:Rocky Linux 9.8 Ansible 控制节点:任选一台(推荐 192.168.247.153) 所有节点使用 root 账号操作,关闭 DNS 反向解析、互通网络

一、所有服务器基础前置操作(4 台机器全部执行)

1. 修改主机名

#153
hostnamectl set-hostname tidb-01
#154
hostnamectl set-hostname tidb-02
#155
hostnamectl set-hostname tidb-03
#156
hostnamectl set-hostname zabbix-01

2. 配置 /etc/hosts(4 台全部配置)

cat >> /etc/hosts <<EOF
192.168.247.153 tidb-01
192.168.247.154 tidb-02
192.168.247.155 tidb-03
192.168.247.156 zabbix-01
EOF

3. 关闭防火墙 / SELinux(测试环境;生产替换为放行端口)

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

4. 关闭 swap

swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab

5. 安装 chrony 时间同步

dnf install -y chrony
systemctl enable --now chronyd
chronyc sources

二、控制节点(192.168.247.153)部署 Ansible + 免密 SSH

1. 安装 ansible

dnf install -y ansible git
ansible-galaxy collection install community.general

2. 生成 ssh 密钥并分发到所有节点

ssh-keygen -t ed25519 -N "" -f /root/.ssh/id_ed25519
ssh-copy-id root@192.168.247.153
ssh-copy-id root@192.168.247.154
ssh-copy-id root@192.168.247.155
ssh-copy-id root@192.168.247.156

3. 测试连通性

ansible all -i 192.168.247.153,192.168.247.154,192.168.247.155,192.168.247.156 -m ping

全部返回 SUCCESS 代表免密正常。

三、创建 Ansible 项目目录与全部配置文件

1. 创建目录结构

mkdir -p /opt/zabbix_tidb_ansible/{vars,templates}
cd /opt/zabbix_tidb_ansible

2. 文件 1:inventory.ini

[all:vars]
ansible_user=root
ansible_ssh_common_args="-o StrictHostKeyChecking=no"

[tidb_all]
192.168.247.153 hostname=tidb-01
192.168.247.154 hostname=tidb-02
192.168.247.155 hostname=tidb-03

[pd_servers]
192.168.247.153
192.168.247.154
192.168.247.155

[tikv_servers]
192.168.247.153
192.168.247.154
192.168.247.155

[tidb_servers]
192.168.247.153
192.168.247.154

[tidb_monitor]
192.168.247.153

[zabbix_server]
192.168.247.156 hostname=zabbix-01
cat > inventory.ini <<'EOF'
粘贴上面内容
EOF

3. 文件 2:vars/main.yml

---
timezone: Asia/Shanghai

tidb_version: v7.5.6
tidb_cluster_name: tidb-prod
tidb_user: tidb
tidb_deploy_dir: /tidb-deploy
tidb_data_dir: /tidb-data
tiup_mirror: https://mirrors.tuna.tsinghua.edu.cn/tidb

tidb_db_host: 192.168.247.153
tidb_db_port: 4000
zabbix_db_name: zabbix
zabbix_db_user: zabbix
zabbix_db_pass: "Zabbix@Pass123"

zabbix_version: 7.0
tidb_root_password: "Root@TiDB123456"

写入命令

cat > vars/main.yml <<'EOF'
粘贴yaml内容
EOF

4. 文件 3:templates/topology-multi.j2

global:
  user: {{ tidb_user }}
  deploy_dir: {{ tidb_deploy_dir }}
  data_dir: {{ tidb_data_dir }}
  arch: amd64
  ssh_port: 22
  monitored: true

pd_servers:
{% for host in groups['pd_servers'] %}
  - host: {{ host }}
{% endfor %}

tikv_servers:
{% for host in groups['tikv_servers'] %}
  - host: {{ host }}
{% endfor %}

tidb_servers:
{% for host in groups['tidb_servers'] %}
  - host: {{ host }}
{% endfor %}

monitor_servers:
{% for host in groups['tidb_monitor'] %}
  - host: {{ host }}
{% endfor %}
cat > templates/topology-multi.j2 <<'EOF'
粘贴模板内容
EOF

5. 文件 4:templates/zabbix_server.conf.j2

DBHost={{ tidb_db_host }}
DBPort={{ tidb_db_port }}
DBName={{ zabbix_db_name }}
DBUser={{ zabbix_db_user }}
DBPassword={{ zabbix_db_pass }}
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/run/zabbix/zabbix_server.pid
SocketDir=/run/zabbix
#DBSocket=
StartPollers=5
cat > templates/zabbix_server.conf.j2 <<'EOF'
粘贴内容
EOF

6. 文件 5:主剧本 deploy-dist.yml

---
- name: 阶段1 全部主机系统初始化
  hosts: all
  gather_facts: true
  become: true
  vars_files:
    - vars/main.yml
  tags:
    - init
    - all
  tasks:
    - name: 设置主机名
      hostname:
        name: "{{ hostvars[inventory_hostname]['hostname'] | default(inventory_hostname) }}"
      tags: init_hostname
    - name: 设置时区
      community.general.timezone:
        name: "{{ timezone }}"
      tags: init_timezone
    - name: 安装基础依赖
      dnf:
        name:
          - chrony
          - wget
          - curl
          - lsof
          - net-tools
          - python3-PyMySQL
          - openssl-devel
          - mysql
          - tar
          - policycoreutils-python-utils
        state: present
      tags: init_pkg
    - name: 启动chronyd时钟同步
      service:
        name: chronyd
        state: started
        enabled: true
      tags: init_chrony
    - name: 关闭Swap
      shell: swapoff -a
      tags: init_swapoff
    - name: 删除fstab中swap条目
      lineinfile:
        path: /etc/fstab
        regexp: '^[^#].*swap'
        state: absent
      tags: init_fstab_swap
    - name: TiDB内核参数调优
      sysctl:
        name: "{{ item.key }}"
        value: "{{ item.val }}"
        state: present
      loop:
        - {key: "net.ipv4.tcp_syncookies", val: 0}
        - {key: "net.ipv4.tcp_tw_reuse", val: 1}
        - {key: "vm.swappiness", val: 0}
        - {key: "vm.overcommit_memory", val: 1}
        - {key: "fs.file-max", val: 1000000}
      tags: init_sysctl
    - name: tidb用户进程资源限制
      copy:
        content: |
          tidb  soft  nofile  1048576
          tidb  hard  nofile  1048576
          tidb  soft  nproc   unlimited
          tidb  hard  nproc   unlimited
        dest: /etc/security/limits.d/tidb.conf
      tags: init_limits

- name: 阶段2 TiDB集群部署(仅在第一台中控节点执行TiUP)
  hosts: tidb_all[0]
  gather_facts: true
  become: true
  vars_files:
    - vars/main.yml
  tags:
    - tidb
    - all
  tasks:
    - name: 创建tidb系统用户
      user:
        name: "{{ tidb_user }}"
        shell: /bin/bash
        state: present
      tags: tidb_user
    - name: 安装tiup本体
      shell: |
        curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
      args:
        creates: /root/.tiup/bin/tiup
      tags: tidb_tiup_install
    - name: 写入全局tiup环境变量
      copy:
        content: 'export PATH=$PATH:/root/.tiup/bin'
        dest: /etc/profile.d/tiup.sh
        mode: '0644'
      tags: tidb_env
    - name: 安装tiup cluster组件
      shell: |
        source /etc/profile.d/tiup.sh
        tiup install cluster
      args:
        creates: /root/.tiup/components/cluster
      tags: tidb_tiup_cluster
    - name: 生成TiUP分布式拓扑文件
      template:
        src: templates/topology-multi.j2
        dest: /root/{{ tidb_cluster_name }}-topology.yaml
      tags: tidb_topo
    - name: TiUP部署TiDB分布式集群
      shell: |
        source /etc/profile.d/tiup.sh
        tiup cluster deploy {{ tidb_cluster_name }} {{ tidb_version }} /root/{{ tidb_cluster_name }}-topology.yaml \
          --user=root \
          --identity_file=/root/.ssh/id_ed25519 \
          --yes
      tags: tidb_deploy
    - name: 启动TiDB集群
      shell: |
        source /etc/profile.d/tiup.sh
        tiup cluster start {{ tidb_cluster_name }}
      tags: tidb_start
    - name: 等待TiDB 4000端口就绪
      wait_for:
        host: "{{ tidb_db_host }}"
        port: "{{ tidb_db_port }}"
        timeout: 180
        state: started
      tags: tidb_wait_port
    - name: 设置TiDB root管理员密码
      shell: >
        mysql -h{{ tidb_db_host }} -P{{ tidb_db_port }} -uroot -e "SET PASSWORD FOR 'root'@'%' = '{{ tidb_root_password }}';"
      tags: tidb_set_root_pwd
    - name: 创建zabbix专用数据库
      shell: >
        mysql -h{{ tidb_db_host }} -P{{ tidb_db_port }} -uroot -p'{{ tidb_root_password }}' -e "CREATE DATABASE IF NOT EXISTS {{ zabbix_db_name }} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
      tags: tidb_create_zabbix_db
    - name: 创建zabbix数据库账号并授权
      shell: >
        mysql -h{{ tidb_db_host }} -P{{ tidb_db_port }} -uroot -p'{{ tidb_root_password }}' -e "CREATE USER IF NOT EXISTS '{{ zabbix_db_user }}'@'%' IDENTIFIED BY '{{ zabbix_db_pass }}';GRANT ALL ON {{ zabbix_db_name }}.* TO '{{ zabbix_db_user }}'@'%';"
      tags: tidb_zabbix_grant
    - name: TiDB全局参数适配Zabbix
      shell: >
        mysql -h{{ tidb_db_host }} -P{{ tidb_db_port }} -uroot -p'{{ tidb_root_password }}' -e "
        SET GLOBAL tidb_enable_async_commit = OFF;
        SET GLOBAL sql_mode = 'ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
        "
      tags: tidb_zabbix_tune

- name: 阶段3 部署Zabbix Server与Web前端
  hosts: zabbix_server
  gather_facts: true
  become: true
  vars_files:
    - vars/main.yml
  tags:
    - zabbix
    - all
  tasks:
    - name: 添加Zabbix阿里云YUM源(初始禁用)
      yum_repository:
        name: zabbix
        description: Zabbix {{ zabbix_version }} Rocky Linux 9
        baseurl: https://mirrors.aliyun.com/zabbix/zabbix/{{ zabbix_version }}/rhel/9/x86_64/
        gpgcheck: 0
        enabled: 0
        sslverify: 0
      tags: zabbix_repo_create
    - name: 安装EPEL9仓库(解决fping依赖缺失)
      dnf:
        name: https://mirrors.aliyun.com/epel/epel-release-latest-9.noarch.rpm
        state: present
        validate_certs: false
      tags: zabbix_epel_install
    - name: 刷新DNF缓存(仅基础源+EPEL)
      command: dnf makecache
      changed_when: false
      tags: zabbix_dnf_cache
    - name: 预先安装fping(依赖来自EPEL)
      dnf:
        name: fping
        state: present
      tags: zabbix_install_fping
    - name: 启用Zabbix YUM源
      command: dnf config-manager --set-enabled zabbix
      changed_when: false
      tags: zabbix_repo_enable
    - name: 刷新DNF缓存(加载Zabbix源)
      command: dnf makecache
      changed_when: false
      tags: zabbix_dnf_cache_zabbix
    - name: 安装Zabbix全套组件(临时禁用epel,避免版本冲突)
      dnf:
        name:
          - zabbix-server-mysql
          - zabbix-web-mysql
          - zabbix-apache-conf
          - zabbix-agent
          - httpd
          - php-fpm
          - mysql
        state: present
        disablerepo: epel
      tags: zabbix_install_pkg

    - name: 校验Zabbix数据库账号连通性
      shell: >
        mysql -h{{ tidb_db_host }} -P{{ tidb_db_port }} -u{{ zabbix_db_user }} -p'{{ zabbix_db_pass }}' {{ zabbix_db_name }} -e "SELECT 1;"
      register: db_conn_check
      failed_when: db_conn_check.rc != 0
      tags: zabbix_db_check

    - name: 解压并预处理Zabbix初始SQL(适配TiDB,替换MyISAM为InnoDB)
      shell: |
        zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | sed 's/ENGINE=MyISAM/ENGINE=InnoDB/g' > /tmp/zabbix_server_tidb.sql
      args:
        creates: /tmp/zabbix_server_tidb.sql
      tags: zabbix_sql_preprocess

    - name: 导入预处理后的Zabbix数据表至TiDB
      shell: |
        mysql -h{{ tidb_db_host }} -P{{ tidb_db_port }} -u{{ zabbix_db_user }} -p'{{ zabbix_db_pass }}' {{ zabbix_db_name }} < /tmp/zabbix_server_tidb.sql
      timeout: 600
      args:
        creates: /tmp/zabbix_sql_imported.flag
      register: sql_import_result
      tags: zabbix_import_sql

    - name: 标记SQL导入完成
      file:
        path: /tmp/zabbix_sql_imported.flag
        state: touch
      when: sql_import_result.rc == 0
      tags: zabbix_import_sql

    - name: 渲染zabbix_server.conf配置文件
      template:
        src: templates/zabbix_server.conf.j2
        dest: /etc/zabbix/zabbix_server.conf
        owner: zabbix
        group: zabbix
        mode: '0640'
      tags: zabbix_config

    - name: 确保Zabbix日志/PID目录权限正确
      file:
        path: "{{ item }}"
        state: directory
        owner: zabbix
        group: zabbix
        mode: '0755'
      loop:
        - /var/log/zabbix
        - /var/run/zabbix
      tags: zabbix_dir_perm

    - name: 校验zabbix_server配置文件语法
      command: zabbix_server -c /etc/zabbix/zabbix_server.conf -T
      register: zabbix_config_check
      failed_when: zabbix_config_check.rc != 0
      tags: zabbix_config_check

    - name: 启动并设置开机自启服务
      service:
        name: "{{ item }}"
        state: started
        enabled: true
      loop:
        - zabbix-server
        - zabbix-agent
        - httpd
        - php-fpm
      tags: zabbix_service_start

    - name: 重启httpd加载Zabbix配置
      service:
        name: httpd
        state: restarted
      tags: zabbix_httpd_restart
cat > deploy-dist.yml <<'EOF'
粘贴上面完整yaml
EOF

四、执行部署

进入项目目录

cd /opt/zabbix_tidb_ansible
# 预检查语法
ansible-playbook -i inventory.ini deploy-dist.yml --syntax-check
# 正式执行部署
ansible-playbook -i inventory.ini deploy-dist.yml

执行耗时:10~20 分钟 出现红色 ERROR 立刻中断排查;正常执行全部绿色 ok

五、部署完成后验证操作

1. 验证 TiDB 集群(中控节点 153)

source /etc/profile.d/tiup.sh
tiup cluster display tidb-prod

所有节点状态 Up 代表集群正常。

2. 测试 TiDB 数据库连接

mysql -h192.168.247.153 -P4000 -uroot -pRoot@TiDB123456
use zabbix;
show tables;

能看到大量 zabbix 数据表代表初始化成功。

3. 访问 Web 页面

Zabbix 地址:http://192.168.247.156/zabbix

默认账号:Admin /zabbix

向导数据库参数填写:

数据库主机:192.168.247.153

端口:4000

库:zabbix

用户:zabbix

密码:Zabbix@Pass123

TiDB Grafana 监控:http://192.168.247.153:3000

默认用户名密码:admin/admin

TiDB Dashboard:http://192.168.247.153:2379/dashboard

默认用户名:root

密码:Root@TiDB123456

六、常见故障排查清单

  1. TiUP 部署时报 ssh 失败:确认 root 免密互通、关闭防火墙、hosts 解析正常
  2. zabbix-server 无法启动:核对数据库账号密码、确认 TiDB 4000 端口通、sql 导入完整
  3. Web 页面 500 错误:检查 httpd、php-fpm 运行状态
  4. Zabbix 大量报错:确认已经执行 tidb_enable_async_commit=OFF
Ansible集群服务部署案例 使用CentOS-7-x86_64-DVD-2009.iso镜像文件作为安装库,将镜像挂载至/opt/centos,编写Yum源文件,安装vsftpd服务,用于给远程主机安装Java。将提供的Elasticsearch、Kibana以及Logstash软件包上传至ansible节点/root目录下,并将相应服务的软件包拷贝至不同节点。将Elasticsearch软件包拷贝至三个节点,将Kibana软件包拷贝至node1节点,将Logstash软件包拷贝至node2节点。安装kibana服务并编写配置文件。 阅读详情

相关推荐

ansible自动化部署apache服务

使用Ansible来部署Apache服务是一个很好的选择,因为它可以自动化部署,确保所有的服务器上都有相同的配置,以下是一个简单的步骤指南,展示如何使用Ansible来部署Apache服务。

HWP18612324139的博客 834

ansible部署服务(ftp)

ansible搭建服务(ftp)

glkyyds的博客 2429

ansible的自动化安装部署apache服务

首先简单介绍ansible ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括: 连接插件co...

chaos_oper的博客 1581

在Linux中通过ansible自动化部署apache服务

周六:网络CCNA+HCIA=线上直播/线下面授——同步上课周日:网络CCNP+HCIP=线上直播/线下面授——同步上课周六:系统 RHCE=线上直播/线下面授——同步上课周日:系统 RHCA=线上直播/线下面授——同步上课。

mengmeng_921的博客 1225

ansible-playbook一键化部署apache服务

Playbook(任务剧本) 编排定义ansible任务集的配置文件,由ansible顺序依次执行,通常是JSON格式的* YML文件 playbook是一个非常简单的配置管理和多主机部署系统,不同于任何已经存在的模式,可作为一个适合部署复杂应用程序的基础。Playbook可以定制配置,可以按照指定的操作步骤有序执行,支持同步和异步方式。 实战:playbook一键化部署apache服务 1.配置...

chaos_oper的博客 1673

Ansible-playbook搭建部署Nginx服务

环境准备 服务器系统 Centos7.3 内存 1G CPU 2核 IP地址 10.0.0.43 服务器系统 Centos7.3 内存 1G CPU 2核 IP地址 10.0.0.44 yum -y install ansible ssh-keygen ssh-copy-id 10.0.0.44 vim /etc/ansible/hos...

aaronszm的博客 1309

Ansible 服务部署-部署 ELK 集群服务

:一个简单部署分享

老白嫖大怪兽的博客 2927

Ansible自动化部署Nginx服务器

在上述Playbook中,我们引用了一个名为"nginx.conf.j2"的模板文件,用于配置Nginx。创建一个名为"hosts.ini"的文件,并添加您要部署Nginx的服务器的IP地址或主机名。如果您的目标服务器是基于其他Linux发行版,请相应地使用适当的软件包管理工具和模块。在本文中,我们将介绍如何使用Ansible自动化部署和配置Nginx服务器。Ansible是一种功能强大的自动化工具,它可以简化服务器配置和管理的过程。一旦完成,您将在目标服务器上成功部署一个运行Nginx的Web服务器。

XsiJava的博客 379

Ansible 部署ELK集群服务

Ansible 部署ELK集群服务

Pierreze的博客 1572

20、Ansible 部署与服务器安全指南

本文详细介绍了使用 Ansible 进行应用部署和服务器安全配置的最佳实践。内容涵盖滚动部署与零停机保障、负载均衡器后应用服务器的部署、Capistrano 风格部署和蓝绿部署策略,以及 Ansible 提供的实用功能如 run_once 和通知模块。此外,还深入探讨了服务器安全的基本措施,包括 SSH 安全配置、防火墙管理、系统更新和 SELinux 使用,并展示了如何通过 Ansible 自动化实现这些安全策略。最后,提供了安全监控和日志管理的建议,以及保障服务器稳定和安全运行的总结建议。

websocket5live的博客 50

TCN(Temporal Convolutional Networks)时序卷积网络详解及代码

TCN(Temporal Convolutional Networks)时序卷积网络详解及代码

zhulewen的博客 7883

ansible一键部署rsync服务

第一个历程: 检查环境 第二个历程: 配置ansible主机清单 vim /etc/ansible/hosts [rsync:children] rsync_server rsync_client [rsync_server] 172.16.1.41 ansible_user=root ansible_password=123456 [rsync_...

weixin_43876317的博客 412

接口操作MySQL跟MongoDB事务回滚问题

通常使用的事务注解:@Transactional 是不会对MongoDB生效的,但是在一些生产接口中无法避免同时使用MySQL跟MongoDB的操作。

weixin_45932023的博客 1578

ansible服务的部署与使用

简介:   ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。   ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包...

weixin_30700977的博客 261

清华电子系保研面试全记录:五轮硬核考核+工程硕博专项解析(附真题)

本文详细解析了清华大学电子工程系保研面试的完整流程,重点剖析了其标志性的五轮专业面试(涵盖电路、电磁场、信号系统、计算机与AI)和综合组群面,并深入解读了工程硕博改革专项的考核要点与备战策略。文章提供了各专业组的真题示例与应对方法,旨在帮助电子信息相关专业学子系统准备,从容应对这场高强度的知识与综合素质挑战。

u0v1w2x3的博客 587

编译原理实验二:LL(1)分析法(附C/C++完整代码)

本文讲述了LL(1)文法的原理及如何用C语言实现。并在给出的代码中实现了消除文法的左递归,First集,Follow集,select集的输出,构造预测分析表并输出,和对任意输入字符串的分析。程序总流程为:从文件读取文法 -> 输出文法信息 -> 消除左递归并输出消除后的文法 -> 计算First集并输出 -> 计算Follow集并输出 ->计算select集并输出 -> 判断是否是LL(1)文法 -> 构造预测分析表并输出 ->手动输入要分析的字符串 -> 输出分析过程和结果读取文件。

W_Wmwmwm的博客 6192

Linux中部署Ansible服务程序

部署Ansible服务程序

博客 737

影像组学分析流程中,图像分割前要做的事(图像预处理)

在InputVolume中无法找到自己想要重采样的序列,这时可以检查一下序列的Volume type是不是MRMLMulti。这时,Volume type将由MRMLMulti改为Scaler,随后即可在3D slicer中完成Resample Scaler Volume。2.1、重采样:通过3Dslicer中的Resample Scaler Volume实现。具体设置参数:spacing(1,1,1),Interpolation选择Bspline。2、图像预处理:重采样和标准化。

weixin_45011313的博客 3724

云计算-ansible部署zabbix监控服务

摘要:本文介绍了使用Ansible自动化部署Zabbix监控系统的过程。首先配置本地YUM源(ansible、centos、zabbix),然后编写Ansible剧本安装所需软件包(httpd、mariadb、zabbix等)。剧本包含创建数据库用户、导入数据库、配置zabbix_server.conf、设置时区等步骤,最后启动相关服务(mariadb、httpd、zabbix-server)。整个过程通过YAML文件实现自动化部署,包括复制配置文件、服务管理等操作,最终完成Zabbix监控系统的安装与配置

qq_51879297的博客 926

锁定放大器

锁定放大器

qq_46757048的博客 4706

Cadence OrCAD Capture 原理图中创建差分对约束的两种常用方法

本文介绍在原理图设计阶段,添加差分对的方法。

fydar的博客 3931

使用Ansible和Kubernetes快速部署微服务

在这种情况下,路由将从/env1/hello路由前进到env1命名空间中的Hello K8s服务,并从/env2/hello路由前进到env2命名空间中的Hello K8s服务。因为my_name字段中定义的内容替换为application.properties微服务的每个实例都有不同的价值,因此我们预计每个K8S服务/部署都会发出不同的欢迎消息。因此,多个实例组合在一起可以实现复杂的路由,如上所示。这导致了更快的下载和疏忽的上传时间,因为映像是直接加载到worker节点的容器守护进程中的。

免费 943

【Python3教程】Python3高级篇之uWSGI 安装配置

本文介绍了在Python 3环境中安装和配置uWSGI的完整流程,涵盖基本安装、Flask/Django应用部署、Nginx集成以及systemd管理等关键环节。主要内容包括:uWSGI的安装前提条件,创建简单WSGI应用,编写uWSGI配置文件(.ini格式),与Nginx配合实现生产环境部署,以及使用systemd实现服务管理。文章还提供了常见Web框架(Flask、Django)的部署示例和高级配置建议,如负载均衡、HTTPS设置等。最后列出了权限、端口占用等常见问题的解决方案,为开发者提供了一套完整

No8g攻城狮的博客 438

Linux之ansible(使用角色部署http服务)

Linux之ansible(使用角色部署http服务)

weixin_64051859的博客 2万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Ansible:批量配置服务器与部署应用

Ansible 通过声明式的 YAML playbook,高效实现服务器批量配置和应用部署,显著提升运维效率。入门简单:从安装基础软件到部署完整应用,只需定义任务并执行。建议从简单 playbook 开始实践,逐步探索高级功能(如动态 inventory 或自定义模块)。如需更多示例,可参考官方文档或社区资源。动手尝试吧——一个 playbook 就能管理数百台服务器!

2501_93895431的博客 950

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Docker Compose:搭建本地多服务开发环境

从一个 Java API、PostgreSQL 和 Redis 开始,配置服务名、端口、环境变量、健康检查、数据卷和依赖关系。理解 Compose 文件如何被解析、项目如何隔离,以及哪些数据不能依赖“重建容器”保留,能够把个人开发环境整理成团队可复用的启动入口。

m0_62221377的博客 455

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: 自动化运维之Ansible
下一篇: 【Ansible角色编写】
insertYam
博客等级 码龄3年 2粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值