我怎样才能编写剧本来
- 确保 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
- 同时启用 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
- 最后运行命令
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