Ansible을 사용하여 특정 작업에 대해 사용자를 어떻게 인증합니까?

Ansible을 사용하여 특정 작업에 대해 사용자를 어떻게 인증합니까?

vagrant 사용자와 함께 apt를 사용하여 플레이북에 일부 종속성을 설치하려고 하면 'msg: Failed to lock apt for Exclusive Operation'이 표시됩니다. 작업을 실행하는 동안 방랑 사용자를 인증할 수 없기 때문에 이것이 나에게 말하는 것으로 의심됩니다.

이것이 제가 사용하고 있는 역할 선언입니다.

- name: ruby installer
  hosts: all
  sudo: True
  sudo_user: vagrant
  roles:
  - ruby

그리고 이것은 실패한 작업입니다.

    - name: Install ruby building dependencies
      apt: name={{ item }} 
           state=installed 
           update_cache=yes

      with_items:
      - dependency

"update_cache=yes"를 제거하고 플레이북을 다시 실행하면 다음과 같은 메시지가 나타납니다. E: 관리 디렉터리(/var/lib/dpkg/)를 잠글 수 없습니다. 루트이신가요?

분명히 루트로 실행하면 완벽하게 작동하지만 일부 Ruby(rvm, rbenv 특정) 작업으로 인해 루트가 아닌 다른 사용자로 실행해야 합니다.

내 플레이북을 실행할 때 방랑자 사용자를 올바르게 인증하려면 어떻게 해야 하나요? 누군가 나에게 올바른 방향을 알려줄 수 있습니까?

답변1

나는 다음과 같은 역할 선언으로 끝났습니다.

- name: ruby installer
  hosts: all
  sudo: True
  user: vagrant
  roles:
  - ruby

종속성을 설치하는 작업은 다음과 같습니다.

- name: Install ruby building dependencies
  apt: name={{ item }} 
       state=installed 
       update_cache=yes
  sudo_user: root

  with_items:
  -dependency

이제 적절한 작업에는 루트를 사용하고 플레이북의 다른 Ruby 작업에는 vagrant를 사용합니다.

답변2

apt시스템 수준 패키지를 설치하므로 apt를 사용하려면 루트에 해당하는 권한이 필요합니다.

다른 사용자로 추가 애플리케이션 배포 단계를 수행해야 하는 경우 deb 패키지 설치 프로세스에서 해당 단계를 가져와야 합니다.

관련 정보