1.docker基于二进制 playbook
[root@ansible-server ansible]
[root@ansible-server ansible]
[root@ansible-server docker-binary]
[root@ansible-server docker-binary]
DOCKER_VERSION: 20.10.9
[root@ansible-server docker-binary]
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd -H unix://var/run/docker.sock
ExecReload=/bin/kill -s HUP \$MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
[root@ansible-server docker-binary]
{
"registry-mirrors": [
"https://hzw5xiv7.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"http://f1361db2.m.daocloud.io",
"https://registry.docker-cn.com",
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com",
"https://hub-mirror.c.163.com",
"https://mirror.ccs.tencentyun.com"
]
}
[root@ansible-server docker-binary]
---
- hosts: all
vars_files:
vars.yml
tasks:
- name: unarchive docker package
unarchive:
src: "docker-{{ DOCKER_VERSION }}.tgz"
dest: /usr/local/src
- name: move docker files
shell:
cmd: mv /usr/local/src/docker/* /usr/bin/
- name: copy docker.service file
copy:
src: docker.service
dest: /lib/systemd/system/docker.service
- name: mkdir /etc/docker
file:
path: /etc/docker
state: directory
- name: set mirror_accelerator
copy:
src: daemon.json
dest: /etc/docker/
- name: set docker alias
lineinfile:
path: ~/.bashrc
line: "{{ item }}"
loop:
- "alias rmi=\"docker images -qa|xargs docker rmi -f\""
- "alias rmc=\"docker ps -qa|xargs docker rm -f\""
- name: start docker
systemd:
name: docker
state: started
enabled: yes
daemon_reload: yes
- name: set WARNING No swap limit support
replace:
path: /etc/default/grub
regexp: '^(GRUB_CMDLINE_LINUX=.*)\"$'
replace: '\1 swapaccount=1"'
when:
- ansible_distribution=="Ubuntu"
- name: update-grub
shell:
cmd: update-grub
when:
- ansible_distribution=="Ubuntu"
- name: reboot Ubuntu system
reboot:
when:
- ansible_distribution=="Ubuntu"
[root@ansible-server docker-binary]
[root@ansible-server ansible]
PLAY [all] ************************************************************************************************************************************
TASK [Gathering Facts] ************************************************************************************************************************
ok: [172.31.0.103]
ok: [172.31.0.104]
ok: [172.31.0.101]
ok: [172.31.0.102]
ok: [172.31.0.105]
TASK [unarchive docker package] **************************************************************************************************************
changed: [172.31.0.102]
changed: [172.31.0.101]
changed: [172.31.0.104]
changed: [172.31.0.103]
changed: [172.31.0.105]
TASK [move docker files] **********************************************************************************************************************
changed: [172.31.0.103]
changed: [172.31.0.104]
changed: [172.31.0.105]
changed: [172.31.0.101]
changed: [172.31.0.102]
TASK [copy docker.service file] ***************************************************************************************************************
changed: [172.31.0.103]
changed: [172.31.0.104]
changed: [172.31.0.105]
changed: [172.31.0.102]
changed: [172.31.0.101]
TASK [mkdir /etc/docker] **********************************************************************************************************************
changed: [172.31.0.103]
changed: [172.31.0.104]
changed: [172.31.0.105]
changed: [172.31.0.102]
changed: [172.31.0.101]
TASK [set mirror_accelerator] *****************************************************************************************************************
changed: [172.31.0.103]
changed: [172.31.0.104]
changed: [172.31.0.105]
changed: [172.31.0.102]
changed: [172.31.0.101]
TASK [set docker alias] ***********************************************************************************************************************
changed: [172.31.0.103] => (item=alias rmi="docker images -qa|xargs docker rmi -f")
changed: [172.31.0.104] => (item=alias rmi="docker images -qa|xargs docker rmi -f")
changed: [172.31.0.105] => (item=alias rmi="docker images -qa|xargs docker rmi -f")
changed: [172.31.0.102] => (item=alias rmi="docker images -qa|xargs docker rmi -f")
changed: [172.31.0.101] => (item=alias rmi="docker images -qa|xargs docker rmi -f")
changed: [172.31.0.103] => (item=alias rmc="docker ps -qa|xargs docker rm -f")
changed: [172.31.0.104] => (item=alias rmc="docker ps -qa|xargs docker rm -f")
changed: [172.31.0.105] => (item=alias rmc="docker ps -qa|xargs docker rm -f")
changed: [172.31.0.101] => (item=alias rmc="docker ps -qa|xargs docker rm -f")
changed: [172.31.0.102] => (item=alias rmc="docker ps -qa|xargs docker rm -f")
TASK [start docker] ***************************************************************************************************************************
changed: [172.31.0.103]
changed: [172.31.0.101]
changed: [172.31.0.102]
changed: [172.31.0.104]
changed: [172.31.0.105]
TASK [set WARNING No swap limit support] ******************************************************************************************************
skipping: [172.31.0.101]
skipping: [172.31.0.102]
skipping: [172.31.0.103]
changed: [172.31.0.104]
changed: [172.31.0.105]
TASK [update-grub] ****************************************************************************************************************************
skipping: [172.31.0.101]
skipping: [172.31.0.102]
skipping: [172.31.0.103]
changed: [172.31.0.104]
changed: [172.31.0.105]
TASK [reboot Ubuntu system] *******************************************************************************************************************
skipping: [172.31.0.101]
skipping: [172.31.0.102]
skipping: [172.31.0.103]
changed: [172.31.0.104]
changed: [172.31.0.105]
PLAY RECAP ************************************************************************************************************************************
172.31.0.101 : ok=8 changed=7 unreachable=0 failed=0 skipped=3 rescued=0 ignored=0
172.31.0.102 : ok=8 changed=7 unreachable=0 failed=0 skipped=3 rescued=0 ignored=0
172.31.0.103 : ok=8 changed=7 unreachable=0 failed=0 skipped=3 rescued=0 ignored=0
172.31.0.104 : ok=11 changed=10 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
172.31.0.105 : ok=11 changed=10 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
2.docker-compose playbook
[root@ansible-server ansible]
[root@ansible-server ansible]
[root@ansible-server docker-compose]
[root@ansible-server docker-compose]
[root@ansible-server docker-compose]
---
- hosts: all
tasks:
- name: copy docker compose file
copy:
src: docker-compose-linux-x86_64
dest: /usr/bin/docker-compose
mode: 755
[root@ansible-server docker-compose]
[root@ansible-server ansible]
PLAY [all] ************************************************************************************************************************************
TASK [Gathering Facts] ************************************************************************************************************************
ok: [172.31.0.103]
ok: [172.31.0.101]
ok: [172.31.0.104]
ok: [172.31.0.102]
ok: [172.31.0.105]
TASK [copy docker compose file] ***************************************************************************************************************
changed: [172.31.0.103]
changed: [172.31.0.105]
changed: [172.31.0.104]
changed: [172.31.0.102]
changed: [172.31.0.101]
PLAY RECAP ************************************************************************************************************************************
172.31.0.101 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
172.31.0.102 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
172.31.0.103 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
172.31.0.104 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
172.31.0.105 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[root@rocky8-client ~]
docker-compose version 1.29.2, build 5becea4c
[root@centos8-client ~]
docker-compose version 1.29.2, build 5becea4c
[root@centos7-client ~]
docker-compose version 1.29.2, build 5becea4c
root@ubuntu1804-client:~
docker-compose version 1.29.2, build 5becea4c
root@ubuntu2004-client:~
docker-compose version 1.29.2, build 5becea4c
3.harbor playbook
[root@ansible-server ansible]
[root@ansible-server ansible]
[root@ansible-server harbor]
[root@ansible-server harbor]
[root@ansible-server harbor]
HARBOR_INSTALL_DIR: /apps
HARBOR_VERSION: 2.3.5
HARBOR_ADMIN_PASSWORD: 123456
[root@ansible-server harbor]
[root@ansible-server ansible]
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor
[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/bin/docker-compose -f {{ HARBOR_INSTALL_DIR }}/harbor/docker-compose.yml up
ExecStop=/usr/bin/docker-compose -f {{ HARBOR_INSTALL_DIR }}/harbor/docker-compose.yml down
[Install]
WantedBy=multi-user.target
[root@ansible-server harbor]
---
- hosts: all
vars_files:
vars.yml
tasks:
- name: create HARBOR_INSTALL_DIR directory
file:
path: "{{ HARBOR_INSTALL_DIR }}"
state: directory
- name: unarchive harbor package
unarchive:
src: "harbor-offline-installer-v{{ HARBOR_VERSION }}.tgz"
dest: "{{ HARBOR_INSTALL_DIR }}/"
creates: "{{ HARBOR_INSTALL_DIR }}/harbor"
- name: mv harbor.yml
shell:
cmd: mv {{ HARBOR_INSTALL_DIR }}/harbor/harbor.yml.tmpl {{ HARBOR_INSTALL_DIR }}/harbor/harbor.yml
creates: "{{ HARBOR_INSTALL_DIR }}/harbor/harbor.yml"
- name: set harbor.yml file 'hostname' string line
replace:
path: "{{ HARBOR_INSTALL_DIR }}/harbor/harbor.yml"
regexp: '^(hostname:) .*'
replace: '\1 {{ ansible_default_ipv4.address }}'
- name: set harbor.yml file 'harbor_admin_password' string line
replace:
path: "{{ HARBOR_INSTALL_DIR }}/harbor/harbor.yml"
regexp: '^(harbor_admin_password:) .*'
replace: '\1 {{ HARBOR_ADMIN_PASSWORD }}'
- name: set harbor.yml file 'https' string line
replace:
path: "{{ HARBOR_INSTALL_DIR }}/harbor/harbor.yml"
regexp: '^(https:)'
replace: '#\1'
- name: set harbor.yml file 'port' string line
replace:
path: "{{ HARBOR_INSTALL_DIR }}/harbor/harbor.yml"
regexp: ' (port: 443)'
replace: '# \1'
- name: set harbor.yml file 'certificate' string line
replace:
path: "{{ HARBOR_INSTALL_DIR }}/harbor/harbor.yml"
regexp: ' (certificate: .*)'
replace: '# \1'
- name: set harbor.yml file 'private_key' string line
replace:
path: "{{ HARBOR_INSTALL_DIR }}/harbor/harbor.yml"
regexp: ' (private_key: .*)'
replace: '# \1'
- name: install CentOS or Rocky python
yum:
name: python3
when:
- (ansible_distribution=="CentOS" or ansible_distribution=="Rocky")
- name: delete lock files
file:
path: "{{ item }}"
state: absent
loop:
- /var/lib/dpkg/lock
- /var/lib/apt/lists/lock
- /var/cache/apt/archives/lock
when:
- ansible_distribution=="Ubuntu"
- name: apt update
apt:
update_cache: yes
force: yes
when:
- ansible_distribution=="Ubuntu"
- name: install Ubuntu python
apt:
name: python3
when:
- ansible_distribution=="Ubuntu"
- name: install harbor
shell:
cmd: "{{ HARBOR_INSTALL_DIR }}/harbor/install.sh"
- name: copy harbor.service
template:
src: harbor.service.j2
dest: /lib/systemd/system/harbor.service
- name: service enable
systemd:
name: harbor
state: started
enabled: yes
daemon_reload: yes
[root@ansible-server harbor]
[root@ansible-server ansible]
PLAY [all] ************************************************************************************************************************************
TASK [Gathering Facts] ************************************************************************************************************************
ok: [172.31.0.103]
ok: [172.31.0.104]
ok: [172.31.0.101]
ok: [172.31.0.105]
ok: [172.31.0.102]
TASK [create HARBOR_INSTALL_DIR directory] ****************************************************************************************************
changed: [172.31.0.104]
changed: [172.31.0.103]
changed: [172.31.0.105]
changed: [172.31.0.101]
changed: [172.31.0.102]
TASK [unarchive harbor package] **************************************************************************************************************
changed: [172.31.0.102]
changed: [172.31.0.104]
changed: [172.31.0.105]
changed: [172.31.0.103]
changed: [172.31.0.101]
TASK [mv harbor.yml] **************************************************************************************************************************
changed: [172.31.0.104]
changed: [172.31.0.105]
changed: [172.31.0.103]
changed: [172.31.0.101]
changed: [172.31.0.102]
TASK [set harbor.yml file 'hostname' string line] *********************************************************************************************
changed: [172.31.0.103]
changed: [172.31.0.105]
changed: [172.31.0.104]
changed: [172.31.0.101]
changed: [172.31.0.102]
TASK [set harbor.yml file 'harbor_admin_password' string line] ********************************************************************************
changed: [172.31.0.103]
changed: [172.31.0.105]
changed: [172.31.0.101]
changed: [172.31.0.104]
changed: [172.31.0.102]
TASK [set harbor.yml file 'https' string line] ************************************************************************************************
changed: [172.31.0.103]
changed: [172.31.0.104]
changed: [172.31.0.105]
changed: [172.31.0.101]
changed: [172.31.0.102]
TASK [set harbor.yml file 'port' string line] *************************************************************************************************
changed: [172.31.0.103]
changed: [172.31.0.105]
changed: [172.31.0.104]
changed: [172.31.0.101]
changed: [172.31.0.102]
TASK [set harbor.yml file 'certificate' string line] ******************************************************************************************
changed: [172.31.0.103]
changed: [172.31.0.101]
changed: [172.31.0.104]
changed: [172.31.0.105]
changed: [172.31.0.102]
TASK [set harbor.yml file 'private_key' string line] ******************************************************************************************
changed: [172.31.0.103]
changed: [172.31.0.104]
changed: [172.31.0.105]
changed: [172.31.0.101]
changed: [172.31.0.102]
TASK [install CentOS or Rocky python] *********************************************************************************************************
skipping: [172.31.0.104]
skipping: [172.31.0.105]
changed: [172.31.0.101]
changed: [172.31.0.102]
changed: [172.31.0.103]
TASK [delete lock files] **********************************************************************************************************************
skipping: [172.31.0.101] => (item=/var/lib/dpkg/lock)
skipping: [172.31.0.101] => (item=/var/lib/apt/lists/lock)
skipping: [172.31.0.101] => (item=/var/cache/apt/archives/lock)
skipping: [172.31.0.102] => (item=/var/lib/dpkg/lock)
skipping: [172.31.0.102] => (item=/var/lib/apt/lists/lock)
skipping: [172.31.0.102] => (item=/var/cache/apt/archives/lock)
skipping: [172.31.0.103] => (item=/var/lib/dpkg/lock)
skipping: [172.31.0.103] => (item=/var/lib/apt/lists/lock)
skipping: [172.31.0.103] => (item=/var/cache/apt/archives/lock)
changed: [172.31.0.105] => (item=/var/lib/dpkg/lock)
changed: [172.31.0.104] => (item=/var/lib/dpkg/lock)
changed: [172.31.0.104] => (item=/var/lib/apt/lists/lock)
changed: [172.31.0.105] => (item=/var/lib/apt/lists/lock)
changed: [172.31.0.105] => (item=/var/cache/apt/archives/lock)
changed: [172.31.0.104] => (item=/var/cache/apt/archives/lock)
TASK [apt update] *****************************************************************************************************************************
skipping: [172.31.0.101]
skipping: [172.31.0.102]
skipping: [172.31.0.103]
changed: [172.31.0.104]
changed: [172.31.0.105]
TASK [install Ubuntu python] ******************************************************************************************************************
skipping: [172.31.0.101]
skipping: [172.31.0.102]
skipping: [172.31.0.103]
ok: [172.31.0.105]
ok: [172.31.0.104]
TASK [install harbor] *************************************************************************************************************************
changed: [172.31.0.102]
changed: [172.31.0.101]
changed: [172.31.0.105]
changed: [172.31.0.104]
changed: [172.31.0.103]
TASK [copy harbor.service] ********************************************************************************************************************
changed: [172.31.0.103]
changed: [172.31.0.101]
changed: [172.31.0.102]
changed: [172.31.0.104]
changed: [172.31.0.105]
TASK [service enable] *************************************************************************************************************************
changed: [172.31.0.104]
changed: [172.31.0.101]
changed: [172.31.0.103]
changed: [172.31.0.102]
changed: [172.31.0.105]
PLAY RECAP ************************************************************************************************************************************
172.31.0.101 : ok=14 changed=13 unreachable=0 failed=0 skipped=3 rescued=0 ignored=0
172.31.0.102 : ok=14 changed=13 unreachable=0 failed=0 skipped=3 rescued=0 ignored=0
172.31.0.103 : ok=14 changed=13 unreachable=0 failed=0 skipped=3 rescued=0 ignored=0
172.31.0.104 : ok=16 changed=14 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
172.31.0.105 : ok=16 changed=14 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
[root@rocky8-client ~]
hostname: 172.31.0.101
[root@rocky8-client ~]
harbor_admin_password: 123456
[root@rocky8-client ~]
[root@rocky8-client ~]
[root@rocky8-client ~]
[root@rocky8-client ~]
[root@rocky8-client ~]
● harbor.service - Harbor
Loaded: loaded (/usr/lib/systemd/system/harbor.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2021-12-27 21:34:28 CST; 6min ago
Docs: http://github.com/vmware/harbor
Main PID: 7598 (docker-compose)
Tasks: 12 (limit: 4783)
Memory: 57.5M
CGroup: /system.slice/harbor.service
├─7598 /usr/bin/docker-compose -f /apps/harbor/docker-compose.yml up
└─7613 /usr/bin/docker-compose -f /apps/harbor/docker-compose.yml up
Dec 27 21:40:20 rocky8-client.example.local docker-compose[7598]: registryctl | 127.0.0.1 - - [27/Dec/2021:13:40:20 +0000] "GET /api/health>
Dec 27 21:40:20 rocky8-client.example.local docker-compose[7598]: harbor-portal | 127.0.0.1 - - [27/Dec/2021:13:40:20 +0000] "GET / HTTP/1.1">
Dec 27 21:40:24 rocky8-client.example.local docker-compose[7598]: harbor-portal | 172.18.0.10 - - [27/Dec/2021:13:40:24 +0000] "GET / HTTP/1.>
Dec 27 21:40:24 rocky8-client.example.local docker-compose[7598]: nginx | 127.0.0.1 - "GET / HTTP/1.1" 200 1167 "-" "curl/7.78.0" 0.0>
Dec 27 21:40:24 rocky8-client.example.local docker-compose[7598]: harbor-portal | 172.18.0.8 - - [27/Dec/2021:13:40:24 +0000] "GET / HTTP/1.1>
Dec 27 21:40:24 rocky8-client.example.local docker-compose[7598]: registry | 172.18.0.8 - - [27/Dec/2021:13:40:24 +0000] "GET / HTTP/1.1>
Dec 27 21:40:24 rocky8-client.example.local docker-compose[7598]: registryctl | 172.18.0.8 - - [27/Dec/2021:13:40:24 +0000] "GET /api/healt>
Dec 27 21:40:34 rocky8-client.example.local docker-compose[7598]: registry | 172.18.0.8 - - [27/Dec/2021:13:40:34 +0000] "GET / HTTP/1.1>
Dec 27 21:40:34 rocky8-client.example.local docker-compose[7598]: registryctl | 172.18.0.8 - - [27/Dec/2021:13:40:34 +0000] "GET /api/healt>
Dec 27 21:40:34 rocky8-client.example.local docker-compose[7598]: harbor-portal | 172.18.0.8 - - [27/Dec/2021:13:40:34 +0000] "GET / HTTP/1.1>
