ansible文件
cat hosts
[all]
docker01
docker02
docker03
docker04
docker05
[swam-init]
docker01
[swarm-master]
docker02
docker03
[swarm-worker]
docker04
docker05
cat group_vars/all.yml
docker_bip: "172.17.0.1/16"
gwbridge_subnet: "172.18.0.0/16"
gwbridge_gateway: "172.18.0.1"
regsistry_addr: "xx.xx.xx.xx:2019"
registry_user: "user"
registry_pwd: "passwd"
listen_interface: "eth0"
cat roles/swarm/tasks/main.yml
- name: "Create Docker Folder"
file:
dest: "{{ item }}"
state: present
mode: 750
with_items:
- "/etc/docker"
- name: "Copy Docker Binary File"
copy:
src: "{{ item }}"
dest: /usr/bin
with_fileglob:
- docker/*
- name: "Copy Config File"
templates:
src: "{{ item.src}}"
dest: "{{ item.dest }}"
with_items:
- { src: 'docker.env', dest: '/etc/docker' }
- { src: 'docker.service', dest: '/etc/systemd/system' }
- name: "Start Docker"
systemd:
name: docker
state: started
daemon_reload: yes
enabled: yes
- name: "Create Docker Gateway Bridge"
shell: |
docker network create \
--driver=bridge \
--subnet={{ gwbridge_subnet }} \
--gateway={{ gwbridge_gateway }} \
--opt "com.docker.network.bridge.name"="docker_gwbridge" \
--opt "com.docker.network.bridge.enable_icc"="false" \
--opt "com.docker.network.bridge.enable_ip_masquerade"="true" \
docker_gwbridge
- name: "Login Docker Registry"
command: |
docker login {{ regsistry_addr }} -u {{ registry_user }} -p {{ registry_pwd }}
- name: "Init Docker Swarm"
block:
- name: "Create Docker Swarm"
command: |
docker swarm init --listen-addr {{ listen_interface }}:2377 --advertise-addr {{ listen_interface }}:2377
- name: "Get Swarm Manager Token"
command: "docker swarm join-token manager -q"
register: swarm_manager_token
- name: "Get Swarm Worker Token"
command: "docker swarm join-token worker -q"
register: swarm_worker_token
when: "'swarm-init' in group_names"
- name: "Join Docker Swarn As Manager"
shell: |
docker swarm join \
--token {{ hostvars['docker01']['swarm_manager_token']['stdout'] }} \
--addvertise-addr {{ listen_interface }}:2377
when: "'swarm-master' in group_names"
- name: "Join Docker Swarn As Worker"
shell: |
docker swarm join \
--token {{ hostvars['docker01']['swarm_worker_token']['stdout'] }} \
--addvertise-addr {{ listen_interface }}:2377
when: "'swarm-worker' in group_names"
参考
docker swarm init
https://docs.docker.com/engine/reference/commandline/swarm_init
docker network create
https://docs.docker.com/engine/reference/commandline/network_create
如何创建docker network?
https://jimmysong.io/docker-handbook/docs/create_network.html
http://manpages.ubuntu.com/manpages/bionic/man1/docker-network-create.1.html
https://www.centos.bz/2017/01/docker-swarm-init
Copy multiple files with Ansible
https://stackoverflow.com/questions/36696952/copy-multiple-files-with-ansible
模板设计者文档
http://docs.jinkan.org/docs/jinja2/templates.html#filters
Jinja2中文文档
https://docs.pythontab.com/jinja/jinja2/index.html
网友评论