刚开始使用Ansible和Linux(CentOs& RedHat)。我在NFS共享上有7个zip文件,我想将其复制到我的托管服务器。
我用:
- name: copy install files
copy:
src: /public/
dest: "/tmp/INSTALL_{{ ansible_fqdn }}/{{ item }}"
with_items:
- p1.zip
- p2.zip
- p3.zip
我在//192.168.0.13/public上有一个NFS共享,每个人都有公共访问权限。 Firewalld已停止&禁用。
当我运行以上内容时,我得到了错误!一名工人被发现处于死亡状态"
我是否需要首先在受管服务器的playbook中挂载NFS共享? 我应该把src:" // 192.168.0.13/public" ;? 我也尝试使用同步模块但运行相同的问题
答案 0 :(得分:0)
我不认为copy还支持nfs的东西。
尝试使用mount安装nfs,然后复制文件。
答案 1 :(得分:0)
通过在剧本中首先安装NFS共享来实现它。复制任务根据输出执行正常,但文件不会被复制。?!
这是复制任务
- name: copy install files
copy:
src: "/mnt"
dest: "/tmp/INSTALL_{{ ansible_fqdn }}/{{ item }}"
group: install
owner: setup
mode: 0777
with_items:
- p1.zip
- p2.zip
- p3.zip
创建文件夹/ tmp / INSTALL _ {{ansible_fqdn}},但不复制任何文件。 用-vvv我得到:
为用户建立SSH连接:无
SSH:EXEC ssh -C -o ControlMaster = auto -o ControlPersist = 60s -o KbdInteractiveAuthentication = no -o PreferredAuthentications = gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication = no -o ConnectTimeout = 10 -o ControlPath = / home / setup / .ansible / cp / ansible-ssh-%h-%p-%r' / bin / sh -c'"'& #34;'(umask 77&& mkdir -p" echo $HOME/.ansible/tmp/ansible-tmp-1480262122.31-14572056940306
"&& echo ansible-tmp-1480262122.31-14572056940306 =" {{1 ")&&睡0'''''
编辑:
我现在尝试使用同步模块
echo $HOME/.ansible/tmp/ansible-tmp-1480262122.31-14572056940306
但后来我得到了以下信息:
" msg":" sudo:抱歉,你必须有一个tty来运行sudo \ nrsync:连接意外关闭(到目前为止收到0个字节)[sender] \ nrsync错误:错误rsync协议数据流(代码12)
我在sudoers"#Defaults requiretty"在两台服务器上
答案 2 :(得分:0)
阅读完一些示例后,使用同步模块是我认为的最佳实践。我也搞砸了语法。使用synchronize的目的不是处理src和dest中的主机名。这就是制作这个模块的原因。因此,要在两个远程服务器之间复制文件,我们使用delegate_to。
become: true
vars:
src: SRV1
- name: Transfer file
synchronize:
src: "/setup/"
dest: "/tmp/INSTALL_{{ ansible_fqdn }}/"
rsync_path: "sudo rsync"
delegate_to: "{{ src }}"
become: no
当我执行上述操作时,剧本中的3个第一个任务执行正常。同步任务失败,错误如下:
UNREACHABLE! => {“已更改”:false,“msg”:“无法通过ssh连接到主机:权限被拒绝(publickey,gssapi-keyex,gssapi-with-mic,密码)。\ r \ n”,“无法访问”:true }