Ansible剧本无法在角色中运行任务

时间:2018-12-31 08:02:30

标签: ansible ansible-2.x

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

当我尝试不使用角色的任务并且不确定为什么尝试使用角色时会发生这种情况时,它就起作用了。

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 
*********************************************************************

1 个答案:

答案 0 :(得分:0)

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


虽然这不是您要的,但(a)在模块中手动使用sudo(b)无条件调用adduser则是个坏消息,因为它会第二次轰炸您运行该剧本。您想要做的就是告诉ansible任务需要提升的特权,然后利用user:模块来允许ansible在该角色结束时确保: / p>

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

更具声明性的好处是(a)ansible的工作方式(b)它允许ansible在各次运行之间都是幂等的