【问题标题】:Ansible playbook does not run tasks in rolesAnsible playbook 不会在角色中运行任务
【发布时间】:2018-12-31 08:02:29
【问题描述】:

我有一个简单的 ansible 角色来完成一项任务,但问题是当我运行它时 任务并未真正开始

当我在没有角色的情况下尝试我的任务时它起作用了,当我尝试使用角色时不知道为什么会发生这种情况。

ansible 版本:ansible 2.2.3.0

这是我的 run.yml

 - name: add user to general purpose
   hosts: localhosts
   roles:
    - adduser

cd adduser/tasks/main.yml

- name: Create user
  shell: sudo adduser tom

跑步

ansible-playbook run.yml -vvv

这是输出

 Using /etc/ansible/ansible.cfg as config file
[WARNING]: provided hosts list is empty, only localhost is available


PLAYBOOK: run.yml 
**************************************************************
1 plays in run.yml

PLAY RECAP 
*********************************************************************

【问题讨论】:

  • 您是否尝试过手动强制主机列表文件? ansible-playbook run.yml -k -i hostsfile
  • @ZumodeVidrio 谢谢,它适用于其他主机,当我在命令中传递 -i hostsfile 参数时它也适用于本地主机

标签: ansible ansible-2.x


【解决方案1】:

这是因为您的hosts: 字段中有错字;名称是localhost 而不是localhosts(因为没有本地主机的复数形式)


另外,虽然这不是您所要求的,但 (a) 在模块中手动使用 sudo (b) 无条件调用 adduser 是个坏消息,因为它会在您第二次运行该剧本时爆炸.您想要告诉 ansible 该任务需要提升权限,然后使用 user: 模块允许 ansible 确保在该角色结束时有这样的用户:

- name: Create user
  become: yes
  user:
    name: tom

更具声明性的好处是 (a) 这就是 ansible 的工作方式 (b) 它允许 ansible 在运行中是幂等的

【讨论】:

    猜你喜欢
    • 2015-08-26
    • 1970-01-01
    • 2023-02-25
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 2014-07-19
    • 1970-01-01
    • 2019-03-30
    相关资源
    最近更新 更多