Ansible
考虑到在我的笔记本电脑中本地使用它,目前我正在使用“includes”。
所有代码都托管在
GitLab
我用他们的免费
CI
测试剧本的服务。
docker
服务正在运行。此时,播放将失败,并显示以下消息:
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公司
-
privilege
模式这允许我启动服务
手动操作
-
GitLab-CI
公共实例:
-
可能是一个可能的解决方案,将我自己的跑步者添加到项目中
PS:
目前,我并不是在寻找最佳实践,我只是想让这项运动有点发挥作用。
环境:
-
Ansible:2.4.0
-
Python:2.7.13
-
Docker: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
码头工人
任务:
- 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