저는 노트북에서 로컬로 사용하는 아이디어로 Ansible
을 배우고 있으며 현재 "includes"로 작업하고 있습니다.Docker 서비스가 시작되지 않았습니다.
다른 작업 (기본 패키지 설치, git, vim 및 docker 설정)을 가져 와서 실행할 수있는 게임을 준비하고 싶습니다.
모든 코드는
GitLab
에서 호스팅되며 무료CI
서비스를 사용하여 게임을 테스트합니다.
docker
서비스가 실행 중인지 확인할 때까지 CI 작업이 실행됩니다. 이 시점에서, 놀이는 다음 메시지와 함께 실패합니다
fatal: [localhost]: FAILED! => {
"changed": true,
"cmd": ["service", "docker", "restart"],
"delta": "0:00:00.176233",
"end": "2017-09-28 18:49:56.194752",
"failed": true,
"msg": "non-zero return code",
"rc": 1,
"start": "2017-09-28 18:49:56.018519",
"stderr": "",
"stderr_lines": [],
"stdout": "",
"stdout_lines": []
}
나는 내 노트북에 고정 표시기 컨테이너 (docker run --rm -ti debian
)를 생성하고 로컬 재생을 실행하고 동일한 자리에 실패했습니다.
컨테이너가 privileged
플래그로 생성 된 경우 서비스를 수동으로 시작한 다음 다시 실행할 수 있습니다. 이번에는 성공적으로 끝날 것입니다.
그래서, 내 질문은 :
- 가 어떻게
Ansible
를 사용하여docker
서비스를 시작할 수 있습니까?- 나는 그것을 완전히 잘못하고 있으며이 방법을 사용하는 더 좋은 방법이 있습니까?
- 내 랩톱에서 컨테이너를 실행할 때
privilege
모드로 만들었습니다. 이것은 서비스 을 시작하는 것을 허용했다. - 가
privileged
플래그와 함께 프로젝트에 내 자신의 주자를 추가 할 수있는 가능한 솔루션 을 활성화 할 수 없습니다 : 나는 용기가
- ?
GitLab-CI
공공 인스턴스를 생성하는 방법을 수정할 수 없기 때문에
PS : 순간, 나는 정확히 모범 사례에 찾는 게 아니에요, 난 그냥이 함께 플레이 할 무언가를 가지고 실행 얻기 위해 노력하고있어.
환경 :
- Ansible : 2.4.0
- 파이썬 : 2.7.13
- 도커 : 17.09.0-CE
--- --- ---
gitlab-ci.yml
파일 :
image: debian:latest
variables:
HOST_INVENTORY: "./hosts"
INCLUDES_DIR: "./gists/includes"
before_script:
- apt-get update -qq
- apt-get install -y curl gcc g++ openssh-server openssh-client python python-dev python-setuptools libffi-dev libssl-dev
- easy_install pip
- pip install ansible
stages:
- syntax_check
- install
check:
stage: syntax_check
script:
- ansible-playbook -i $HOST_INVENTORY $INCLUDES_DIR/play.yml --limit 'local' --syntax-check;
run_includes:
stage: install
script:
- ANSIBLE_PIPELINING=True ansible-playbook -i $HOST_INVENTORY $INCLUDES_DIR/play.yml --limit 'local';
play.yml
입니다 매우 간단 만 가져 일부 재생 :
- hosts: local
become: yes
become_method: sudo
pre_tasks:
- import_tasks: tasks/pre.yml # update package manager cache
tasks:
- import_tasks: tasks/common.yml
- import_tasks: tasks/docker.yml
그리고 docker
작업 :
- name: Dependencies
package:
name: "{{ item }}"
state: installed
with_items:
- apt-transport-https
- ca-certificates
- curl
- gnupg2
- software-properties-common
- name: Docker module dependencies
pip:
name: docker-py
- name: Add Docker key
shell: curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg | apt-key add -
- name: Add Docker repo
shell: echo "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo $ID) $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
- name: Install Docker
apt:
pkg: docker-ce
state: installed
update_cache: yes
- name: Ensure Docker group is present
group:
name: docker
state: present
- name: Add current user to the Docker group
user:
name: "{{ ansible_user }}"
groups:
- docker
append: yes
- name: Ensure service is enabled
command: service docker restart
- name: Pull images from Docker hub
docker_image:
name: "{{ item }}"
with_items:
- debian
- cern/cc7-base
실제로 단계를 수행해 도커 서비스가 시작되지 않습니다! – Deano
@Deano 내 데비안에서는 서비스가 중지 된 상태에서'service docker restart'를 실행하면 서비스가 시작됩니다. 어니 셔 너의 행동이 다를 수 있습니까? –
나는 docker를 설치하기 위해 사용하지는 않았지만 그것을 관리하기 위해 사용했다. 서비스를 시작하기 위해 다른 행동을 보지 말아야한다. 아마도'service name = docker state = started'를 사용할 것이다. – Deano