amazonlinux2 컨테이너에서 Ansible systemd 모듈이 오류가 발생하기 때문에 service에서 피하는 단계

3600 단어 Ansible
참고 : 이것은 작업 라운드 절차입니다. systemctl을 사용하는 것이 올바른 방법이라고 생각합니다.
amazonlinux:2 의 컨테이너에서 Ansible의 systemd 모듈이 에러가 되므로 service로 회피하는 순서입니다.
구체적으로는 다음과 같은 작업을 수행했는데,
- name: start jenkins
  systemd:
    name: jenkins
    state: started

다음과 같은 오류가 발생했습니다.

TASK [start jenkins] ************************************************** ************************************************** ************************
fatal: [localhost]: FAILED! => {"changed": false, "cmd": "/usr/bin/systemctl", "msg": "Failed to get D-Bus connection: Operation not permitted", "rc ": 1, "stderr": "Failed to get D-Bus connection: Operation not permitted\n", "stderr_lines": ["Failed to get D-Bus connection: Operation not permitted"], "stdout": "", "stdout_lines": []}

대책



systemd가 아니라 서비스를 사용합니다.
service를 사용하려면 initscripts를 설치하십시오.
- name: Install yum packages
  yum:
    name:
      - initscripts

- name: start jenkins
  service:
    name: jenkins
    state: started

덤: VSC에서 amazonlinux2 이미지에서 Ansible을 테스트 할 수있게하기까지의 단계



왜 이런 일을 했는가 하면 VSC (Visual Studio Code)의 Ansible Extention을 사용하면
수중에서 Docker를 이용하면서 바삭바삭과 Ansible을 움직이면서 쓸 수 있기 때문입니다.

구체적으로는 다음과 같은 dockerfile을 씁니다. (배포라든지 하지 않기 때문에 작게 하는 노력을 포기하고 있습니다)
FROM amazonlinux:2
RUN  yum -y install python-pip && pip install ansible

로컬 용으로 build합니다. 태그 이름은 선택 사항입니다.bash
docker build -t localhost/amazonlinux2-ansible .

VSC를 시작하고 Ansible Extention을 넣습니다.


Extention의 오른쪽 하단에 있는 기어(Setting)를 클릭하여 Extention 설정 메뉴를 엽니다.

검색 화면에 docker를 입력하면 Custom docker image when running playbook in Docker.의 항목이 나오므로 자신이 만든 컨테이너 이미지의 태그 이름을 설정합니다. 특히 보존하는 버튼등은 없고, 즉 반영이었습니다.



이 후에는 playbook을 더블 탭(오른쪽 클릭)하고 Run Ansible Playbook in Docker 를 실행하면 위에서 언급한 컨테이너 이미지를 이용하여 Playbook 실행이 시작됩니다.

좋은 웹페이지 즐겨찾기