剧本脚本问题

剧本脚本问题

我怎样才能编写剧本来

  1. 确保 NFS 服务器和客户端都监听同一个域,/etc/idmapd.conf并通过nfsidmap -d
[General]

Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if it differs from FQDN minus hostname
Domain = localdomain

[Mapping]

Nobody-User = nobody
Nobody-Group = nogroup
  1. 同时启用 id 映射/sys/module/nfsd/parameters/nfs4_disable_idmapping

它目前是 Y 而我需要它是 N。我尝试运行下面的剧本,但出现错误:

- hosts: localhost
  tasks:
    - name: Run command to enable id mapping
      become: true
      lineinfile:
        path: /sys/module/nfs/parameters/nfs4_disable_idmapping
        regexp: 'Y'
        line: 'N'
        state: present
  1. 最后运行命令nfsidmap -c

答案1

对于 CLI 命令,您可以使用shell– 在目标上执行 shell 命令

- name: Display the system's effective NFSv4 domain name on 'stdout'
  shell:
    cmd: nfsidmap -d
  register: result
  changed_when: false
  check_mode: false
  failed_when: result.rc != 0

- name: Show result
  debug:
    msg: "{{ result.stdout }}"

你可以将其与Ansible 事实 -ansible_domain如果聚集起来。

对于您的配置文件,您可以使用template– 将文件模板化到目标主机 idmapd.conf.j2

[General]

Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if it differs from FQDN minus hostname
Domain = {{ ansible_domain }}

[Mapping]

Nobody-User = nobody
Nobody-Group = nogroup

展望nfs4_disable_idmapping参数到底起什么作用似乎不需要你采用复杂的方法。只要确保有一个包含的文件N就足够了。

- name: Make sure ID mapping is enabled
  copy:
    content: 'N'
    dest: /sys/module/nfs/parameters/nfs4_disable_idmapping

相关内容