
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 패키지 설치 프로세스에서 해당 단계를 가져와야 합니다.