ansible角色中vars文件夹中main.yml文件的用途是什么?

ansible角色中vars文件夹中main.yml文件的用途是什么?,ansible,Ansible,我的任务是将文件夹中的文件、模板文件夹中的模板复制到远程主机`` 模板文件没有任何内容,只有文本 templates/templateexample.txt.j2 =>这是要传输的示例模板 vars/main.yml --- project_files: files: - src: "examplefile1.txt" dst: "~/examplefile1.txt" mode: '0755' force:

我的任务是将文件夹中的文件、模板文件夹中的模板复制到远程主机``

模板文件没有任何内容,只有文本

templates/templateexample.txt.j2 =>这是要传输的示例模板

vars/main.yml

---
project_files:
  files:
    - src: "examplefile1.txt"
      dst: "~/examplefile1.txt"
      mode: '0755'
      force: false
  templates:
    - src: "templateexample.txt.j2"
      dst: "~/templateexample.txt"
      mode: '0755'
      force: false
问:ansible角色中vars文件夹中main.yml文件的用途是什么

答:主要原因是自定义角色的默认变量。

role/vars/main.yml中定义的变量覆盖了role defaults、inventory、group_vars、host_vars中定义的所有变量,以及该角色包含在该剧中之前在该剧中定义的所有变量。有关详细信息,请参阅

例如,让我们创建一个剧本

shell>cat playbook.yml
-主机:本地主机
变量:
测试变量:在剧本变量中定义的测试变量
角色:
-角色1
让我们用空roles/role1/vars/main.yml和roles/role1/tasks/main.yml中的简单调试任务创建一个角色

---
project_files:
  files:
    - src: "examplefile1.txt"
      dst: "~/examplefile1.txt"
      mode: '0755'
      force: false
  templates:
    - src: "templateexample.txt.j2"
      dst: "~/templateexample.txt"
      mode: '0755'
      force: false
shell>cat角色/role1/tasks/main.yml
-调试:
var:test_var
shell>cat角色/role1/vars/main.yml
---
#角色1的vars文件
剧本将显示剧本变量中定义的变量

shell>ansible剧本测试-14.yml
...
测试变量:在剧本变量中定义的测试变量
现在,在角色的role1/vars/main.yml中定义变量test_var

---
project_files:
  files:
    - src: "examplefile1.txt"
      dst: "~/examplefile1.txt"
      mode: '0755'
      force: false
  templates:
    - src: "templateexample.txt.j2"
      dst: "~/templateexample.txt"
      mode: '0755'
      force: false
shell>cat角色/role1/vars/main.yml
---
#角色1的vars文件
test_var:在角色变量中定义的test_var
角色变量中定义的变量覆盖了剧本变量中定义的变量

shell>ansible playbook playbook.yml
...
test_var:在角色变量中定义的test_var

注:

  • 不要将角色的vars/main.yml放入Ansible Galaxy git中。这将保留本地自定义项,使其不受更新和升级的影响
#文件:copy-static.yml
  • 名称:复制文件 复制:src=examplefile1.txt dest=/home/user/example.txt
#文件:copy-template.yml
  • 名称:示例模板-x 模板: src:templateexample.txt.j2 dest:/home/user/newexample.txt 带_项:var_x
#文件:ngnix.yml #文件:mainplaybook.yml
  • 主机:本地主机 连接:本地 变成:是的 方法:sudo 角色:
    • 壁画角色/样本角色
#文件:tasks/main.yml
  • 包括:nginx.yml
  • 包括:copy-static.yml
  • 包括:copy-template.yml
#文件:主机 [本地主机] 本地主机

#文件:vars/main.yml 项目文件: 文件夹: -src:“examplefile1.txt” dst:“~/examplefile1.txt” 模式:“0755” 原力:错 模板: -src:“templateexample.txt.j2” dst:“~/templateexample.txt” 模式:“0755” 原力:错 变量x:

  • “变量x” 变量:
  • “变量y”

请用ansible语法格式化上述代码并执行,您将获得通过。。好的,我已经在frescoThanks brother中用上面的代码将角色亲手传递给了你。为了你的帮助,我也在做同样的事情。只是错误地更改了vars/main.yml。如果你在其他方面有困难,请告诉我。我已经完成了所有其他的工作。谢谢兄弟,我已经完成了所有的工作。。。。目前正在进行kubernities如果我遇到任何问题,我将向你寻求帮助broHi Prem Kumar,我无法清除hackerrank中解释的ansible sibelius模块和handson。您能帮我清理一下手持设备吗?我已经在终端中执行了sudo service ssh stop命令,然后在终端中执行了sudo service ssh start命令。但是无法清除此bro的手动控制----hosts:localhost connection:local been:yes任务:-name:检查服务是否存在stat:path=/etc/init.d/ssh register:Service\u status-name:Stop Service:name=ssh state=stopped when:Service\u status.stat.Exists注册:Service\u stopped-name:Start服务:name=ssh state=stopped when:Service\u status.stat.exists寄存器:Service\u stopped