lineinfile을 사용하는 Ansible 루프

lineinfile을 사용하는 Ansible 루프

아주 간단한 게임에서 오류가 발생합니다.

- name: add to environment                                                          
  lineinfile:                                                                       
    path: /etc/environment                                                          
    line: "{{ item }}"                                                              
    loop:                                                                           
      - "foo=1"                                                                     
      - "bar=2"

이 줄이 존재하지 않으면 파일에 추가하고 싶습니다. 내가 얻는 오류는,

치명적: [10.1.38.15]: 실패했습니다! => {"msg": "작업에 정의되지 않은 변수가 있는 옵션이 포함되어 있습니다. 오류: '항목'이 정의되지 않았습니다.\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

관련 정보