You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible部署VSFTP服务器语法错误排查及正确语法请求

修复后的VSFTP配置Ansible Playbook

你的Playbook存在两个核心语法问题:

  • block块内的任务未正确缩进,导致Ansible无法识别块内的任务层级结构
  • with_items中含特殊字符(=)的字符串未用引号包裹,触发YAML解析错误

以下是修正后的完整代码:

---
- name: 部署VSFTP服务器
  hosts: ftpservers # 运行FTP服务的服务器组名
  tasks:
    - block:
        - name: 在RHEL上安装VSFTP包
          yum:
            name: vsftpd
            state: present
      # 可选:仅针对RHEL/CentOS系列系统执行
      when: ansible_os_family == 'RedHat'

    - block:
        - name: 修改VSFTP配置文件
          lineinfile:
            dest: /etc/vsftpd/vsftpd.conf
            backup: yes
            backrefs: yes
            state: present
            regexp: "{{ item.regexp }}"
            line: "{{ item.line }}"
          with_items:
            - { regexp: 'anonymous_enable=NO', line: 'anonymous_enable=YES' }
            - { regexp: '^#?anon_upload_enable', line: 'anon_upload_enable=YES' }
            - { regexp: '^#?anon_mkdir_write_enable', line: 'anon_mkdir_write_enable=YES' }
      # 可选:仅在VSFTP包已安装时执行
      when: ansible_facts.packages.vsftpd is defined

    - block:
        - name: 启动并启用VSFTP服务
          service:
            name: vsftpd
            state: restarted
            enabled: yes

关键修正说明

  • 缩进规范:每个block内的任务统一缩进一层,严格遵循YAML层级语法
  • 字符串转义:给含=的配置项内容添加单引号,避免YAML将其误判为键值对结构
  • 正则优化:为anon_upload_enable和anon_mkdir_write_enable的正则添加^#?,可匹配注释状态的配置项,确保替换覆盖所有情况
  • 条件增强:新增系统类型与包存在性判断,提升Playbook的兼容性与健壮性

内容的提问来源于stack exchange,提问作者Amar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 22:47:18