
示例:自動(dòng)化將目標(biāo)主機(jī)加入到 swarm 集群,成為工作節(jié)點(diǎn)
---
- hosts: 192.168.0.10
tasks:
- name: 查看 worker 加入集群的 token
command: docker swarm join-token worker
register: worker_join_token
- name: set facts
set_fact: worker_join_token={{ worker_join_token.stdout.replace('To add a worker to this swarm, run the following command:\n\n ', '').replace('\\\n','') }}
- name: echo
debug: msg={{ worker_join_token }}
- hosts: mongo
tasks:
- name: 加入 swarm 集群
command: "{{ hostvars['192.168.0.10']['worker_join_token'] }}"
ignore_errors: true
- name: 創(chuàng)建 MongoDB 數(shù)據(jù)卷
command: docker volume create mongo_data
- name: 啟動(dòng) MongoDB
command: docker run -d -p 27017:27017 --name mongo -v mongo_data:/data/db mongo
原理如下:
- ① 將任務(wù)執(zhí)行的結(jié)果注冊(cè)到變量,此變量的作用域?yàn)楫?dāng)前的 playbook
- ② 將變量值做一些額外的處理,設(shè)置到 facts 中,facts 中的變量作用域?yàn)槿?/li>
- ③ 跨主機(jī)應(yīng)用變量 -> 官方文檔