我在一个非常简单的游戏中遇到了错误,
- name: add to environment
lineinfile:
path: /etc/environment
line: "{{ item }}"
loop:
- "foo=1"
- "bar=2"
我只想将这些行添加到该文件(如果它们不存在)。我得到的错误是,
致命:[10.1.38.15]:失败! => {“msg”:“该任务包含一个带有未定义变量的选项。错误是:'item'未定义\n\n错误似乎位于'/home/ecarroll/cp/ansible/roles/sandbox /tasks/main.yml': 第 6 行,第 3 列,但\n可能位于文件中的其他位置,具体取决于具体的语法问题。\n\n有问题的行似乎是:\n\n dest: /\n- name : 添加到环境\n ^ 此处\n"}
答案1
您的指令缩进错误loop
。这不是一个论点lineinfile
;这是一个任务设置:
- name: add to environment
lineinfile:
path: /etc/environment
line: "{{ item }}"
loop:
- "foo=1"
- "bar=2"
答案2
我已经实现了带有循环的 ansible lineinfile 模块,并且它按预期工作。
能够使用 lineinfile 循环模块在 sudoers 文件中添加多个条目。
希望这能满足您的要求
- name: "Providing sudo access to linux team users"
lineinfile:
path: /etc/sudoers
line: '{{item}} ALL=(ALL) NOPASSWD: ALL'
state: present
create: yes
validate: 'visudo -cf %s'
loop:
- Admin.Linux
- Admin.Unix
ansible播放执行输出
TASK [Providing sudo access to accenture linux team members]
changed: [ANSIBLECLINETNODE] => (item=Admin.Linux)
changed: [ANSIBLECLINETNODE] => (item=Admin.Unix)
以下是 sudoers 文件输出
[root@ANSIBLECLINETNODE~]# cat /etc/sudoers| tail -2
Admin.Linux ALL=(ALL) NOPASSWD: ALL
Admin.Unix ALL=(ALL) NOPASSWD: ALL