建议如何在ansible中使用scp和ssh命令使用shell或命令moudle,也无法从shell脚本运行scp命令

时间:2017-04-18 18:23:07

标签: ansible

以下是我需要使用ansible运行的代码 -
我需要在shell模块中包含scp和ssh命令,这可能吗? 列表文件包含我们需要复制文件的服务器的IP地址。 如何在我的剧本中包含以下部分代码。

for i in `cat /tmp/list`
    do 
    echo $i
    scp HLC_auth $i:.ssh/authorized_keys
    scp known_hosts.LLC $i:.ssh/known_hosts
    ssh $i "rm -rf .ssh/id_dsa*"
    ssh $i "ssh-keygen -d"
    done

我能够成功执行for循环任务,如下所示 -

   shell: for i in `cat /home/dp794d/temp/list`;
            do echo $i;
            done

这给了我ip的列表,但是当我尝试在其下面包含scp命令时,它不起作用。

我想在脚本中转储所有这些代码并尝试运行脚本,但它仍然给我一些错误 -

出于测试目的,我创建了一个具有scp命令的脚本 -

我的脚本文件(abc.sh)包含以下scp命令 -

!/斌/庆典

scp /home/capio/ansible/pmossWipm/day1/playbooks/xyz.txt abc@130.6.50.131:/ home / user

我的yml看起来像 -

---
- hosts: testserver
  tasks:

   - name: "run the script"
     script: /home/capio/ansible/pmossWipm/day1/scripts/abc.sh

但它仍然不起作用,它没有给出任何回应。我们需要终止它.- Playbook error screenshot

1 个答案:

答案 0 :(得分:0)

使用for-loop作为Ansible剧本的基础......

  1. 使用“/ tmp / list”文件定义库存文件。
  2. 对于每个“scp”行,请使用Ansible“copy”模块:http://docs.ansible.com/ansible/copy_module.html
  3. 对于“rm”行,使用Ansible“file”模块指向id_dsa文件并将“state”设置为“absent”:http://docs.ansible.com/ansible/file_module.html
  4. 我不确定“ssh-keygen -d”是做什么的,但它可能是用纯Ansible模块完成的。