【问题标题】:Ansible copy module inside a role角色内的 Ansible 复制模块
【发布时间】:2021-02-20 16:42:41
【问题描述】:

我有一个 Ansible 角色,它将在 Azure 中配置一个 ubuntu 服务器。虚拟机配置对我来说工作正常,但我需要将一些文件从本地主机复制到这个虚拟机,我该怎么做?

├── defaults
│   └── main.yml
├── files
│   ├── cloud-init.yaml
│   └── files.txt
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── tasks
│   ├── copyfile.yaml
│   ├── main.yml
│   ├── apachenic.yaml
│   └── apachevm.yaml
└── vars
    └── main.yml

这里我将文件files.txt(我要复制的文件)保存在文件夹中,并创建了一个新的任务文件(copyfile.yaml)进行复制。在下面添加复制任务的内容。

     - name: copy certs
   become: true
   become_user: admin
   ansible_sudo_password: pass123
   copy:
     src: files.txt
     dest: /home/admin/
     owner: admin
     group: admin

我已尝试多次重新安排和创建新的任务文件,收到以下错误消息。

错误!冲突的操作语句:复制、ansible_sudo_password

【问题讨论】:

    标签: ansible


    【解决方案1】:

    在我看来,您的 YAML 格式不正确。 试试这个:(顶级游戏,可以说,它的copyFilesTXT.yml)

    - hosts: all
      become: true
      become_user: admin
      become_method: sudo
      tasks:
        - name: copy files.txt file to remote machine
          copy:
            src: files.txt
            dest: /home/admin/
            owner: admin
            group: admin
            mode: 0644
    

    这个任务可以通过这个控制台调用来启动

    /bin/ansible-playbook --ask-become-pass -i hosts.ini copyFilesTXT.yml -vv
    
    

    它会从 STDIN 询问 sudo 密码,所以你可以提供它。

    另外,您可以省略--ask-become-pass 并在vars/main.yml 中添加此变量

    ansible_become_pass: pass123 
    

    所以,sudo 密码将从vars/main.yml 加载

    【讨论】:

    • 谢谢,Vodolaz 的快速回答,我正在运行这个角色和其他几个角色,所以如果我添加主机:那么所有配置的服务器都会有复制的文件?
    • 是的,将所有主机添加到host.ini文件中,所有数据都会为它们并行复制
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 2017-02-19
    相关资源
    最近更新 更多