Ansible
帶有 lineinfile 的 Ansible 循環
我在一個非常簡單的遊戲中遇到了錯誤,
- 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”}
你錯誤地縮進了你的
loop
指令。這不是一個論點lineinfile
;這是一個任務設置:- name: add to environment lineinfile: path: /etc/environment line: "{{ item }}" loop: - "foo=1" - "bar=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